[Spice-devel] [PATCH] Actually process write watches in the wakeup handler

Jeremy White jwhite at codeweavers.com
Sun Jun 3 08:28:05 PDT 2012


My apologies for the churn; this is, I think, a slightly better patch than
my previous patch, 'Process watches even when there is no X activity', in that
it avoids doing an extra polling select when we're idle.

---
 src/spiceqxl_main_loop.c |   17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/spiceqxl_main_loop.c b/src/spiceqxl_main_loop.c
index 1718861..e57fb91 100644
--- a/src/spiceqxl_main_loop.c
+++ b/src/spiceqxl_main_loop.c
@@ -315,9 +315,24 @@ static void select_and_check_watches(void)
     }
 }
 
+static int no_write_watches(Ring *w)
+{
+    SpiceWatch *watch;
+    RingItem *link;
+    RingItem *next;
+
+    RING_FOREACH_SAFE(link, next, w) {
+        watch = (SpiceWatch*)link;
+        if (!watch->remove && (watch->event_mask & SPICE_WATCH_EVENT_WRITE))
+            return 0;
+    }
+
+    return 1;
+}
+
 static void xspice_wakeup_handler(pointer data, int nfds, pointer readmask)
 {
-    if (!nfds) {
+    if (!nfds && no_write_watches(&watches)) {
         return;
     }
     select_and_check_watches();
-- 
1.7.9.5

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Attached Message Part
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20120603/98ea30be/attachment.ksh>


More information about the Spice-devel mailing list