summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfalkTX <falktx@gmail.com>2018-09-30 14:37:49 +0200
committerfalkTX <falktx@gmail.com>2018-09-30 14:37:49 +0200
commit285b6b8b79a826d04a3570d09aa184377a4cefff (patch)
tree9b390ef9be15bafbc60435330d9580b5f3f4a4ef
parent49bccdf862c4ad57c1dfb896d97cb257cebb621a (diff)
Only render and resize once per cycle
-rw-r--r--dgl/src/pugl/pugl_x11.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/dgl/src/pugl/pugl_x11.c b/dgl/src/pugl/pugl_x11.c
index 2bce594e..ea70db1d 100644
--- a/dgl/src/pugl/pugl_x11.c
+++ b/dgl/src/pugl/pugl_x11.c
@@ -206,8 +206,10 @@ puglCreateWindow(PuglView* view, const char* title)
return 1;
}
- puglUpdateGeometryConstraints(view, view->min_width, view->min_height, view->min_width != view->width);
- XResizeWindow(view->impl->display, view->impl->win, view->width, view->height);
+ if (view->width > 1 || view->height > 1) {
+ puglUpdateGeometryConstraints(view, view->min_width, view->min_height, view->min_width != view->width);
+ XResizeWindow(view->impl->display, view->impl->win, view->width, view->height);
+ }
if (title) {
XStoreName(impl->display, impl->win, title);
@@ -419,6 +421,9 @@ send_event:
PuglStatus
puglProcessEvents(PuglView* view)
{
+ int conf_width = -1;
+ int conf_height = -1;
+
XEvent event;
while (XPending(view->impl->display) > 0) {
XNextEvent(view->impl->display, &event);
@@ -464,16 +469,15 @@ puglProcessEvents(PuglView* view)
case ConfigureNotify:
if ((event.xconfigure.width != view->width) ||
(event.xconfigure.height != view->height)) {
- puglReshape(view,
- event.xconfigure.width,
- event.xconfigure.height);
+ conf_width = event.xconfigure.width;
+ conf_height = event.xconfigure.height;
}
break;
case Expose:
if (event.xexpose.count != 0) {
break;
}
- puglDisplay(view);
+ view->redisplay = true;
break;
case MotionNotify:
setModifiers(view, event.xmotion.state, event.xmotion.time);
@@ -549,6 +553,10 @@ puglProcessEvents(PuglView* view)
}
}
+ if (conf_width != -1) {
+ puglReshape(view, conf_width, conf_height);
+ }
+
if (view->pending_resize) {
puglResize(view);
}