From 28dd64df0186089f9534881550c2efaa6b7dc95c Mon Sep 17 00:00:00 2001 From: David Robillard Date: Mon, 16 Mar 2020 16:13:48 +0100 Subject: Only send update events when the view is visible --- pugl/detail/mac.m | 5 ++++- pugl/detail/win.c | 5 ++++- pugl/detail/x11.c | 4 +++- 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); -- cgit v1.2.1