aboutsummaryrefslogtreecommitdiffstats
path: root/pugl
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-03-16 16:13:48 +0100
committerDavid Robillard <d@drobilla.net>2020-03-16 16:13:48 +0100
commit28dd64df0186089f9534881550c2efaa6b7dc95c (patch)
treee614b478b801a9fd1f7cf8b3416d4df5165d0672 /pugl
parentd057cf148390f27468ed0d8c5d34a55d599d0c87 (diff)
downloadpugl-28dd64df0186089f9534881550c2efaa6b7dc95c.tar.gz
pugl-28dd64df0186089f9534881550c2efaa6b7dc95c.tar.bz2
pugl-28dd64df0186089f9534881550c2efaa6b7dc95c.zip
Only send update events when the view is visible
Diffstat (limited to 'pugl')
-rw-r--r--pugl/detail/mac.m5
-rw-r--r--pugl/detail/win.c5
-rw-r--r--pugl/detail/x11.c4
3 files changed, 11 insertions, 3 deletions
diff --git a/pugl/detail/mac.m b/pugl/detail/mac.m
index 22f8088..2ec4345 100644
--- a/pugl/detail/mac.m
+++ b/pugl/detail/mac.m
@@ -997,7 +997,10 @@ puglUpdate(PuglWorld* world, const double timeout)
for (size_t i = 0; i < world->numViews; ++i) {
PuglView* const view = world->views[i];
- puglDispatchSimpleEvent(view, PUGL_UPDATE);
+ if ([[view->impl->drawView window] isVisible]) {
+ puglDispatchSimpleEvent(view, PUGL_UPDATE);
+ }
+
[view->impl->drawView displayIfNeeded];
}
diff --git a/pugl/detail/win.c b/pugl/detail/win.c
index 22a0a25..cb4dfad 100644
--- a/pugl/detail/win.c
+++ b/pugl/detail/win.c
@@ -828,7 +828,10 @@ puglUpdate(PuglWorld* world, double timeout)
}
for (size_t i = 0; i < world->numViews; ++i) {
- puglDispatchSimpleEvent(world->views[i], PUGL_UPDATE);
+ if (world->views[i]->visible) {
+ puglDispatchSimpleEvent(world->views[i], PUGL_UPDATE);
+ }
+
UpdateWindow(world->views[i]->impl->hwnd);
}
diff --git a/pugl/detail/x11.c b/pugl/detail/x11.c
index 58451e9..5fc769d 100644
--- a/pugl/detail/x11.c
+++ b/pugl/detail/x11.c
@@ -749,7 +749,9 @@ flushExposures(PuglWorld* world)
PuglEvent* const configure = &view->impl->pendingConfigure;
PuglEvent* const expose = &view->impl->pendingExpose;
- puglDispatchSimpleEvent(view, PUGL_UPDATE);
+ if (view->visible) {
+ puglDispatchSimpleEvent(view, PUGL_UPDATE);
+ }
if (configure->type || expose->type) {
view->backend->enter(view, expose->type ? &expose->expose : NULL);