]> git.mdlowis.com Git - projs/tide.git/commitdiff
fixed win_update callback
authorMichael D. Lowis <mike@mdlowis.com>
Fri, 14 Jul 2017 23:27:08 +0000 (19:27 -0400)
committerMichael D. Lowis <mike@mdlowis.com>
Fri, 14 Jul 2017 23:27:08 +0000 (19:27 -0400)
lib/win.c
lib/x11.c

index df1a6d6b9068dec0b1126b60089eb4756785d3d9..c579d91c81d19eeb9d312f2554aa44a04ee91d83 100644 (file)
--- a/lib/win.c
+++ b/lib/win.c
@@ -61,6 +61,7 @@ void win_dialog(char* name, void (*errfn)(char*)) {
 }
 
 static void win_update(int xfd, void* data) {
+    if (xfd < 0) return;
     if (x11_events_queued())
         x11_events_take();
     x11_flush();
index f59e8496b3f1d759b9c194a324215670ad297a6b..509efcf417dec5c4ba574d4e49dd53905f43f72a 100644 (file)
--- a/lib/x11.c
+++ b/lib/x11.c
@@ -197,8 +197,12 @@ void x11_flush(void) {
 void x11_finish(void) {
     XCloseDisplay(X.display);
     /* we're exiting now. If we own the clipboard, make sure it persists */
-    if (Selections[CLIPBOARD].text)
-        exec_cmd((char*[]){ "xcpd", NULL }, Selections[CLIPBOARD].text, NULL, NULL);
+    if (Selections[CLIPBOARD].text) {
+        char* text = Selections[CLIPBOARD].text;
+        size_t len = strlen(text);
+        exec_job((char*[]){ "xcpd", NULL }, text, len, NULL);
+        while (event_poll(100));
+    }
 }
 
 /******************************************************************************/
@@ -305,11 +309,8 @@ static void handle_mouse(XEvent* e) {
 }
 
 static void set_focus(bool focused) {
-    if (focused) {
-        if (X.xic) XSetICFocus(X.xic);
-    } else {
-        if (X.xic) XUnsetICFocus(X.xic);
-    }
+    if (X.xic)
+        (focused ? XSetICFocus : XUnsetICFocus)(X.xic);
     Config->set_focus(focused);
 }