[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