tchanging locking algorythm for setprop. - surf - customized build of surf, the… | |
git clone git://src.adamsgaard.dk/surf | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 1d93bfa9ce13c7c4581611b7441fe66680ab80c3 | |
parent b57eca1a2bf1a65899866753cf9f8488223a2b47 | |
Author: Enno Boland (tox) <[email protected]> | |
Date: Sun, 8 Nov 2009 23:45:36 +0100 | |
changing locking algorythm for setprop. | |
Diffstat: | |
M surf.c | 12 ++++++------ | |
1 file changed, 6 insertions(+), 6 deletions(-) | |
--- | |
diff --git a/surf.c b/surf.c | |
t@@ -61,7 +61,7 @@ static SoupSession *session; | |
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; | |
t@@ -539,6 +539,7 @@ newclient(void) { | |
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; | |
t@@ -596,9 +597,8 @@ processx(GdkXEvent *e, GdkEvent *event, gpointer d) { | |
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); | |
t@@ -607,6 +607,7 @@ processx(GdkXEvent *e, GdkEvent *event, gpointer d) { | |
arg.b = TRUE; | |
find(c, &arg); | |
} | |
+ lastxprop = ev->time; | |
return GDK_FILTER_REMOVE; | |
} | |
} | |
t@@ -673,11 +674,10 @@ scroll(Client *c, const Arg *arg) { | |
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 |