[teklib-general] teklib: display_x11: a window is no longer opened bigger than ma...

Timm S. Mueller tmueller at neoscientists.org
Tue Apr 8 23:42:04 CEST 2008


details:   http://hg.teklib.org/teklib/rev/9e133a90578e
changeset: 177:9e133a90578e
user:      Timm S. Mueller <tmueller at neoscientists.org>
date:      Tue Apr 08 23:41:14 2008 +0200
description:
display_x11: a window is no longer opened bigger than maxsize or smaller than
minsize, pixel format detection now also embraces "Truecolor" besides
"DirectColor" modes in visualinfo

diffs (75 lines):

diff -r af53c9d56770 -r 9e133a90578e src/display_x11/display_x11_api.c
--- a/src/display_x11/display_x11_api.c	Tue Apr 08 14:19:15 2008 +0200
+++ b/src/display_x11/display_x11_api.c	Tue Apr 08 23:41:14 2008 +0200
@@ -75,17 +75,6 @@ x11_openvisual(TMOD_X11 *mod, struct TVR
 		swa.colormap = v->colormap;
 		swa.event_mask = StructureNotifyMask | ExposureMask;
 
-		TDBPRINTF(TDB_INFO,("x: %d - y: %d - w: %d - y: %d\n",
-			v->winleft, v->wintop, v->winwidth, v->winheight));
-
-		v->window = XCreateWindow(mod->x11_Display,
-			RootWindow(mod->x11_Display, mod->x11_Screen),
-			v->winleft, v->wintop, v->winwidth, v->winheight,
-			0, CopyFromParent, CopyFromParent, CopyFromParent,
-			swa_mask, &swa);
-		if (v->window == TNULL)
-			break;
-
 		v->sizehints->flags = 0;
 
 		v->sizehints->min_width = (TINT)
@@ -97,6 +86,15 @@ x11_openvisual(TMOD_X11 *mod, struct TVR
 		v->sizehints->max_height = (TINT)
 			TGetTag(tags, TVisual_MaxHeight, (TTAG) -1);
 
+		if (v->sizehints->max_width > 0)
+			v->winwidth = TMIN(v->winwidth, v->sizehints->max_width);
+		if (v->sizehints->max_height > 0)
+			v->winheight = TMIN(v->winheight, v->sizehints->max_height);
+		if (v->sizehints->min_width > 0)
+			v->winwidth = TMAX(v->winwidth, v->sizehints->min_width);
+		if (v->sizehints->min_height > 0)
+			v->winheight = TMAX(v->winheight, v->sizehints->min_height);
+
 		v->sizehints->min_width =
 			v->sizehints->min_width <= 0 ? 1 : v->sizehints->min_width;
 		v->sizehints->min_height =
@@ -110,6 +108,18 @@ x11_openvisual(TMOD_X11 *mod, struct TVR
 			v->sizehints->flags |= PMinSize;
 		/*if (v->sizehints->max_width >= 0 && v->sizehints->max_height >= 0)*/
 			v->sizehints->flags |= PMaxSize;
+
+		TDBPRINTF(TDB_INFO,("width: %d..%d..%d - height: %d..%d..%d\n",
+			v->sizehints->min_width, v->winwidth, v->sizehints->max_width,
+			v->sizehints->min_height, v->winheight, v->sizehints->max_height));
+
+		v->window = XCreateWindow(mod->x11_Display,
+			RootWindow(mod->x11_Display, mod->x11_Screen),
+			v->winleft, v->wintop, v->winwidth, v->winheight,
+			0, CopyFromParent, CopyFromParent, CopyFromParent,
+			swa_mask, &swa);
+		if (v->window == TNULL)
+			break;
 
 		if (v->sizehints->flags)
 			XSetWMNormalHints(mod->x11_Display, v->window, v->sizehints);
diff -r af53c9d56770 -r 9e133a90578e src/display_x11/display_x11_inst.c
--- a/src/display_x11/display_x11_inst.c	Tue Apr 08 14:19:15 2008 +0200
+++ b/src/display_x11/display_x11_inst.c	Tue Apr 08 23:41:14 2008 +0200
@@ -92,6 +92,15 @@ getprops(TMOD_X11 *inst)
 		inst->x11_Depth = 24;
 	else if (XMatchVisualInfo(inst->x11_Display, inst->x11_Screen, 32,
 		DirectColor, &xvi))
+		inst->x11_Depth = 32;
+	else if (XMatchVisualInfo(inst->x11_Display, inst->x11_Screen, 16,
+		TrueColor, &xvi))
+		inst->x11_Depth = 16;
+	else if (XMatchVisualInfo(inst->x11_Display, inst->x11_Screen, 24,
+		TrueColor, &xvi))
+		inst->x11_Depth = 24;
+	else if (XMatchVisualInfo(inst->x11_Display, inst->x11_Screen, 32,
+		TrueColor, &xvi))
 		inst->x11_Depth = 32;
 	else
 		inst->x11_Depth = 0;


More information about the teklib-general mailing list