[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