[teklib-general] teklib: Opening a window now synchronizes on a request in progre...
hg-notify at neoscientists.org
hg-notify at neoscientists.org
Fri Jan 25 22:14:48 CET 2008
details: http://hg.teklib.org/teklib/rev/47905f31197f
changeset: 156:47905f31197f
user: Timm S. Mueller <tmueller at neoscientists.org>
date: Fri Jan 25 22:14:11 2008 +0100
description:
Opening a window now synchronizes on a request in progress, which is released
by a MapEvent; hopefully fixes issues with unsynchronized window attributes
diffs (70 lines):
diff -r c6d06642c20a -r 47905f31197f src/display_x11/display_x11_api.c
--- a/src/display_x11/display_x11_api.c Fri Jan 25 02:31:20 2008 +0100
+++ b/src/display_x11/display_x11_api.c Fri Jan 25 22:14:11 2008 +0100
@@ -135,30 +135,15 @@ x11_openvisual(TMOD_X11 *mod, struct TVR
if (!v->draw) break;
}
-#if 0
- do
- {
- XNextEvent(mod->x11_Display, &ev);
- if (ev.type == ConfigureNotify)
- {
- v->winleft = ((XConfigureEvent *) &ev)->x;
- v->wintop = ((XConfigureEvent *) &ev)->y;
- v->winwidth = ((XConfigureEvent *) &ev)->width;
- v->winheight = ((XConfigureEvent *) &ev)->height;
- }
- } while (ev.type != MapNotify);
-#endif
-
- /* TODO/HACK: refresh is on right from the start (see also
- ExposureMask above): */
- v->eventmask = TITYPE_REFRESH;
-
v->base_mask = swa.event_mask;
v->bgpen = TVPEN_UNDEFINED;
v->fgpen = TVPEN_UNDEFINED;
TDBPRINTF(TDB_TRACE,("Add window: %p\n", v->window));
TAddTail(&mod->x11_vlist, &v->node);
+
+ /* not yet mapped; register request in progress: */
+ mod->x11_RequestInProgress = req;
/* success: */
return;
diff -r c6d06642c20a -r 47905f31197f src/display_x11/display_x11_inst.c
--- a/src/display_x11/display_x11_inst.c Fri Jan 25 02:31:20 2008 +0100
+++ b/src/display_x11/display_x11_inst.c Fri Jan 25 22:14:11 2008 +0100
@@ -602,23 +602,13 @@ x11_processvisualevent(TMOD_X11 *mod, VI
}
break;
-#if 0
case MapNotify:
- if ((v->eventmask & TITYPE_REFRESH) /*&&
- ((XExposeEvent *) ev)->count == 0*/)
- {
- if (getimsg(mod, v, &imsg, TITYPE_REFRESH))
- {
- imsg->timsg_X = 0;
- imsg->timsg_Y = 0;
- imsg->timsg_Width = v->winwidth;
- imsg->timsg_Height = v->winheight;
- TAddTail(&v->imsgqueue, &imsg->timsg_Node);
- TDBPRINTF(TDB_TRACE,("Map: REFRESH\n"));
- }
- }
- break;
-#endif
+ if (mod->x11_RequestInProgress)
+ {
+ TExecReplyMsg(mod->x11_ExecBase, mod->x11_RequestInProgress);
+ mod->x11_RequestInProgress = TNULL;
+ }
+ break;
case Expose:
if ((v->eventmask & TITYPE_REFRESH) &&
More information about the teklib-general
mailing list