From ce5b4cdba3fffac81bfa7ee4a3bffd99fe7f9935 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 7 Jun 2022 21:19:24 -0400 Subject: Make puglRealize() always gracefully fail with a bad configuration --- src/mac.m | 5 +++++ test/test_realize.c | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/mac.m b/src/mac.m index 2a54134..4f5c08f 100644 --- a/src/mac.m +++ b/src/mac.m @@ -1007,10 +1007,15 @@ PuglStatus puglRealize(PuglView* view) { PuglInternals* impl = view->impl; + if (impl->wrapperView) { return PUGL_FAILURE; } + if (!view->backend || !view->backend->configure) { + return PUGL_BAD_BACKEND; + } + const NSScreen* const screen = [NSScreen mainScreen]; const double scaleFactor = [screen backingScaleFactor]; diff --git a/test/test_realize.c b/test/test_realize.c index 50eba46..cf2cde6 100644 --- a/test/test_realize.c +++ b/test/test_realize.c @@ -65,9 +65,13 @@ main(int argc, char** argv) test.view = puglNewView(test.world); puglSetClassName(test.world, "PuglTest"); puglSetWindowTitle(test.view, "Pugl Realize Test"); - puglSetBackend(test.view, puglStubBackend()); puglSetHandle(test.view, &test); puglSetEventFunc(test.view, onEvent); + assert(puglRealize(test.view) == PUGL_BAD_BACKEND); + + puglSetBackend(test.view, puglStubBackend()); + assert(puglRealize(test.view) == PUGL_BAD_CONFIGURATION); + puglSetSizeHint(test.view, PUGL_DEFAULT_SIZE, 512, 512); // Create initially invisible window -- cgit v1.2.1