commit 285b6b8b79a826d04a3570d09aa184377a4cefff
parent 49bccdf862c4ad57c1dfb896d97cb257cebb621a
Author: falkTX <falktx@gmail.com>
Date: Sun, 30 Sep 2018 14:37:22 +0200
Only render and resize once per cycle
Diffstat:
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git 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);
}