[tekui-devel] tekui: Windows Display: dirty flag was not set in all drawing co...

Timm S. Mueller tmueller at schulze-mueller.de
Tue Mar 17 12:23:46 CET 2009


details:   http://hg.teklib.org/tekui/rev/ec5bdbe5570f
changeset: 63:ec5bdbe5570f
user:      Timm S. Mueller <tmueller at schulze-mueller.de>
date:      Tue Mar 17 12:23:22 2009 +0100
description:
Windows Display: dirty flag was not set in all drawing commands, corrected;
X11 Display: Minor cleanup

diffs (truncated from 137 to 100 lines):

diff -r 1664a6dcf274 -r ec5bdbe5570f src/display_windows/display_win_api.c
--- a/src/display_windows/display_win_api.c	Tue Mar 17 11:36:06 2009 +0100
+++ b/src/display_windows/display_win_api.c	Tue Mar 17 12:23:22 2009 +0100
@@ -457,6 +457,7 @@
 			Polygon(win->fbv_HDC, points, 3);
 		}
 	}
+	win->fbv_Dirty = TTRUE;
 }
 
 /*****************************************************************************/
@@ -510,6 +511,7 @@
 			Polygon(win->fbv_HDC, points, 3);
 		}
 	}
+	win->fbv_Dirty = TTRUE;
 }
 
 /*****************************************************************************/
@@ -552,6 +554,7 @@
 	else
 		ScrollDC(win->fbv_HDC, dx, dy, &r, &r, NULL, NULL);
 
+	win->fbv_Dirty = TTRUE;
 }
 
 /*****************************************************************************/
@@ -622,6 +625,7 @@
 		req->tvr_Op.DrawBuffer.Buf,
 		(const void *) bmi,
 		DIB_RGB_COLORS);
+	win->fbv_Dirty = TTRUE;
 }
 
 /*****************************************************************************/
@@ -850,14 +854,16 @@
 LOCAL void
 fb_drawtags(WINDISPLAY *mod, struct TVRequest *req)
 {
+	WINWINDOW *win = req->tvr_Op.DrawTags.Window;
 	struct THook hook;
 	struct drawdata data;
-	data.v = req->tvr_Op.DrawTags.Window;
+	data.v = win;
 	data.mod = mod;
 	data.fgpen = TNULL;
 	data.bgpen = TNULL;
 	TInitHook(&hook, drawtagfunc, &data);
 	TForEachTag(req->tvr_Op.DrawTags.Tags, &hook);
+	win->fbv_Dirty = TTRUE;
 }
 
 /*****************************************************************************/
@@ -886,6 +892,7 @@
 		SetBkMode(win->fbv_HDC, TRANSPARENT);
 		TextOut(win->fbv_HDC, x, y, latin, len);
 	}
+	win->fbv_Dirty = TTRUE;
 }
 
 /*****************************************************************************/
diff -r 1664a6dcf274 -r ec5bdbe5570f src/display_x11/display_x11_inst.c
--- a/src/display_x11/display_x11_inst.c	Tue Mar 17 11:36:06 2009 +0100
+++ b/src/display_x11/display_x11_inst.c	Tue Mar 17 12:23:22 2009 +0100
@@ -12,8 +12,6 @@
 static void x11_processevent(X11DISPLAY *mod);
 static TBOOL x11_processvisualevent(X11DISPLAY *mod, X11WINDOW *v,
 	TAPTR msgstate, XEvent *ev);
-static TBOOL getusermsg(X11DISPLAY *mod, TIMSG **msgptr, TUINT type,
-	TSIZE size);
 
 #if defined(ENABLE_STDIN)
 /*****************************************************************************/
@@ -140,6 +138,27 @@
 {
 	r->ReadBytes += nbytes;
 }
+
+static TBOOL getusermsg(X11DISPLAY *mod, TIMSG **msgptr, TUINT type, TSIZE size)
+{
+	TAPTR TExecBase = TGetExecBase(mod);
+	TIMSG *msg = TAllocMsg(sizeof(TIMSG) + size);
+	if (msg)
+	{
+		TFillMem(msg, sizeof(TIMSG), 0);
+		msg->timsg_ExtraSize = size;
+		msg->timsg_Type = type;
+		msg->timsg_Qualifier = mod->x11_KeyQual;
+		msg->timsg_MouseX = mod->x11_MouseX;
+		msg->timsg_MouseY = mod->x11_MouseY;
+		TGetSystemTime(&msg->timsg_TimeStamp);
+		*msgptr = msg;
+		return TTRUE;
+	}
+	*msgptr = TNULL;
+	return TFALSE;
+}
+
 #endif
 


More information about the tekui-devel mailing list