aboutsummaryrefslogtreecommitdiffstats
path: root/pugl/detail
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2020-10-19 12:15:55 +0200
committerDavid Robillard <d@drobilla.net>2020-10-19 12:47:39 +0200
commita87395423915f913b819291b3b4920501cccdf95 (patch)
treec748467f9923d3f120abb64cd8ce12f367abab19 /pugl/detail
parentf2e294f99b42becc35588673f45a2d536e1091fa (diff)
downloadpugl-a87395423915f913b819291b3b4920501cccdf95.tar.gz
pugl-a87395423915f913b819291b3b4920501cccdf95.tar.bz2
pugl-a87395423915f913b819291b3b4920501cccdf95.zip
Gracefully handle puglRealize() being called twice
Diffstat (limited to 'pugl/detail')
-rw-r--r--pugl/detail/mac.m6
-rw-r--r--pugl/detail/win.c3
-rw-r--r--pugl/detail/x11.c6
3 files changed, 13 insertions, 2 deletions
diff --git a/pugl/detail/mac.m b/pugl/detail/mac.m
index 5f7e126..8faee86 100644
--- a/pugl/detail/mac.m
+++ b/pugl/detail/mac.m
@@ -868,7 +868,11 @@ puglConstraint(id item, NSLayoutAttribute attribute, float constant)
PuglStatus
puglRealize(PuglView* view)
{
- PuglInternals* impl = view->impl;
+ PuglInternals* impl = view->impl;
+ if (impl->wrapperView) {
+ return PUGL_FAILURE;
+ }
+
const NSScreen* const screen = [NSScreen mainScreen];
const double scaleFactor = [screen backingScaleFactor];
diff --git a/pugl/detail/win.c b/pugl/detail/win.c
index b29ccf4..b3ba00d 100644
--- a/pugl/detail/win.c
+++ b/pugl/detail/win.c
@@ -165,6 +165,9 @@ PuglStatus
puglRealize(PuglView* view)
{
PuglInternals* impl = view->impl;
+ if (impl->hwnd) {
+ return PUGL_FAILURE;
+ }
// Getting depth from the display mode seems tedious, just set usual values
if (view->hints[PUGL_RED_BITS] == PUGL_DONT_CARE) {
diff --git a/pugl/detail/x11.c b/pugl/detail/x11.c
index f9a45e8..e6444c8 100644
--- a/pugl/detail/x11.c
+++ b/pugl/detail/x11.c
@@ -278,7 +278,11 @@ puglDefineCursorShape(PuglView* view, unsigned shape)
PuglStatus
puglRealize(PuglView* view)
{
- PuglInternals* const impl = view->impl;
+ PuglInternals* const impl = view->impl;
+ if (impl->win) {
+ return PUGL_FAILURE;
+ }
+
PuglWorld* const world = view->world;
PuglX11Atoms* const atoms = &view->world->impl->atoms;
Display* const display = world->impl->display;