[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#429147: Patch to fix the issue...



The attached patch seems to fix the issue with xsetwacom (and should fix
some other locking issues in libxi6 at the same time).

Hopefully correct; this is my first dive into X-land =)


Regards: David
-- 
 /) David Weinehall <tao@debian.org> /) Rime on my window           (\
//  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   //  Diamond-white roses of fire //
\)  http://www.acc.umu.se/~tao/    (/   Beautiful hoar-frost       (/
diff -urN tmp/libxi-1.1.0/src/XChgDCtl.c libxi-1.1.0/src/XChgDCtl.c
--- tmp/libxi-1.1.0/src/XChgDCtl.c	2006-10-21 12:07:21.000000000 +0300
+++ libxi-1.1.0/src/XChgDCtl.c	2007-07-04 04:21:16.000000000 +0300
@@ -105,6 +105,8 @@
 	    SyncHandle();
 	    return (NoSuchExtension);
 	} else
+	    UnlockDisplay(dpy);
+	    SyncHandle();
 	    return (rep.status);
     }
     case DEVICE_ABS_CALIB:
@@ -132,6 +134,8 @@
             return NoSuchExtension;
         }
         else {
+	    UnlockDisplay(dpy);
+	    SyncHandle();
             return rep.status;
         }
     }
@@ -158,6 +162,8 @@
             return NoSuchExtension;
         }
         else {
+	    UnlockDisplay(dpy);
+	    SyncHandle();
             return rep.status;
         }
     }
@@ -179,6 +185,8 @@
             return NoSuchExtension;
         }
         else {
+	    UnlockDisplay(dpy);
+	    SyncHandle();
             return rep.status;
         }
     }
@@ -200,6 +208,8 @@
             return NoSuchExtension;
         }
         else {
+	    UnlockDisplay(dpy);
+	    SyncHandle();
             return rep.status;
         }
     }
diff -urN tmp/libxi-1.1.0/src/XGtSelect.c libxi-1.1.0/src/XGtSelect.c
--- tmp/libxi-1.1.0/src/XGtSelect.c	2006-10-20 00:45:43.000000000 +0300
+++ libxi-1.1.0/src/XGtSelect.c	2007-07-04 04:25:22.000000000 +0300
@@ -106,6 +106,8 @@
 					sizeof(XEventClass));
 	    if (!*this_client_list) {
 		_XEatData(dpy, (unsigned long)tlen + alen);
+		UnlockDisplay(dpy);
+		SyncHandle();
 		return (Success);
 	    }
 	    for (i = 0; i < *this_client_count; i++) {
@@ -122,6 +124,8 @@
 		Xfree((char *)*this_client_list);
 		*this_client_list = NULL;
 		_XEatData(dpy, (unsigned long)alen);
+		UnlockDisplay(dpy);
+		SyncHandle();
 		return (Success);
 	    }
 	    for (i = 0; i < *all_clients_count; i++) {

Reply to: