surf

surf browser, a WebKit2GTK based browser
Log | Files | Refs | README | LICENSE

commit 1d93bfa9ce13c7c4581611b7441fe66680ab80c3
parent b57eca1a2bf1a65899866753cf9f8488223a2b47
Author: Enno Boland (tox) <tox@s01.de>
Date:   Sun,  8 Nov 2009 23:45:36 +0100

changing locking algorythm for setprop.
Diffstat:
surf.c | 12++++++------
1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/surf.c b/surf.c @@ -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; @@ -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; @@ -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); @@ -607,6 +607,7 @@ processx(GdkXEvent *e, GdkEvent *event, gpointer d) { arg.b = TRUE; find(c, &arg); } + lastxprop = ev->time; return GDK_FILTER_REMOVE; } } @@ -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