[hackers] [surf] changing locking algorythm for setprop. || Enno Boland (tox)

From: <hg_AT_suckless.org>
Date: Sun, 8 Nov 2009 21:44:07 +0000 (UTC)

changeset: 169:260fda70689f
tag: tip
user: Enno Boland (tox) <tox_AT_s01.de>
date: Sun Nov 08 23:45:36 2009 +0100
files: surf.c
description:
changing locking algorythm for setprop.

diff -r a02be7adebf7 -r 260fda70689f surf.c
--- a/surf.c Sun Nov 08 23:45:11 2009 +0100
+++ b/surf.c Sun Nov 08 23:45:36 2009 +0100
@@ -61,7 +61,7 @@
 static Client *clients = NULL;
 static GdkNativeWindow embed = 0;
 static gboolean showxid = FALSE;
-static int ignorexprop = 0;
+static Time lastxprop = 0;
 static char winid[64];
 static char *progname;
 static gboolean lockcookie = FALSE;
@@ -539,6 +539,7 @@
         g_object_set(G_OBJECT(settings), "user-stylesheet-uri", uri, NULL);
         g_free(uri);
         setatom(c, findprop, "");
+ setatom(c, uriprop, "");
 
         c->download = NULL;
         c->title = NULL;
@@ -596,9 +597,8 @@
 
         if(((XEvent *)e)->type == PropertyNotify) {
                 ev = &((XEvent *)e)->xproperty;
- if(ignorexprop)
- ignorexprop--;
- else if(ev->state == PropertyNewValue) {
+ if((!lastxprop || lastxprop + 512 < ev->time)
+ && ev->state == PropertyNewValue) {
                         if(ev->atom == uriprop) {
                                 arg.v = getatom(c, uriprop);
                                 loaduri(c, &arg);
@@ -607,6 +607,7 @@
                                 arg.b = TRUE;
                                 find(c, &arg);
                         }
+ lastxprop = ev->time;
                         return GDK_FILTER_REMOVE;
                 }
         }
@@ -673,11 +674,10 @@
 
 void
 setatom(Client *c, Atom a, const char *v) {
- XSync(dpy, False);
- ignorexprop++;
         XChangeProperty(dpy, GDK_WINDOW_XID(GTK_WIDGET(c->win)->window), a,
                         XA_STRING, 8, PropModeReplace, (unsigned char *)v,
                         strlen(v) + 1);
+ XSync(dpy, False);
 }
 
 void
Received on Sun Nov 08 2009 - 21:44:07 UTC

This archive was generated by hypermail 2.2.0 : Sun Nov 08 2009 - 21:48:07 UTC