summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Hergert <chergert@redhat.com>2020-11-04 14:40:11 -0800
committerChristian Hergert <chergert@redhat.com>2020-11-04 14:40:11 -0800
commit929fb25a69bbddb93d9df88f4b6f56b88a53fc05 (patch)
tree8cdb64e7d60ee234f78f618bc7613ce62ea2e2a4
parented78fb1366e84f952c24b317566b6323879d6157 (diff)
downloadgtk+-wip/chergert/gdk-macos-gl-renderer.tar.gz
macos: always create dummy window/view for GL contextwip/chergert/gdk-macos-gl-renderer
This simplifies the creation by always creating the dummy views, and then removes it if necessary by detecting the begin_frame/end_frame pair.
-rw-r--r--gdk/macos/gdkmacosglcontext.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/gdk/macos/gdkmacosglcontext.c b/gdk/macos/gdkmacosglcontext.c
index e1d792a41e..7770ec4ea3 100644
--- a/gdk/macos/gdkmacosglcontext.c
+++ b/gdk/macos/gdkmacosglcontext.c
@@ -143,6 +143,18 @@ ensure_gl_view (GdkMacosGLContext *self)
[nsview setNeedsDisplay:YES];
[nswindow setContentView:nsview];
[nsview release];
+
+ if (self->dummy_view != NULL)
+ {
+ NSView *nsview = g_steal_pointer (&self->dummy_view);
+ [nsview release];
+ }
+
+ if (self->dummy_window != NULL)
+ {
+ NSWindow *nswindow = g_steal_pointer (&self->dummy_window);
+ [nswindow release];
+ }
}
return [nswindow contentView];
@@ -215,21 +227,15 @@ gdk_macos_gl_context_real_realize (GdkGLContext *context,
[gl_context setValues:&opaque forParameter:NSOpenGLCPSurfaceOpacity];
[gl_context setValues:&validate forParameter:NSOpenGLContextParameterStateValidation];
- if (self->is_attached || shared == NULL)
- {
- NSRect frame = NSMakeRect (0, 0, 1, 1);
-
- self->dummy_window = [[NSWindow alloc] initWithContentRect:frame
- styleMask:0
- backing:NSBackingStoreBuffered
- defer:NO
- screen:nil];
- self->dummy_view = [[NSView alloc] initWithFrame:frame];
- [self->dummy_window setContentView:self->dummy_view];
- [gl_context setView:self->dummy_view];
- }
+ self->dummy_window = [[NSWindow alloc] initWithContentRect:NSZeroRect
+ styleMask:0
+ backing:NSBackingStoreBuffered
+ defer:NO
+ screen:nil];
+ self->dummy_view = [[NSView alloc] initWithFrame:NSZeroRect];
+ [self->dummy_window setContentView:self->dummy_view];
+ [gl_context setView:self->dummy_view];
- [gl_context makeCurrentContext];
GLint renderer_id = 0;
[gl_context getValues:&renderer_id forParameter:NSOpenGLContextParameterCurrentRendererID];
GDK_DISPLAY_NOTE (gdk_draw_context_get_display (GDK_DRAW_CONTEXT (context)),
@@ -237,7 +243,6 @@ gdk_macos_gl_context_real_realize (GdkGLContext *context,
g_message ("Created NSOpenGLContext[%p] using %s",
gl_context,
get_renderer_name (renderer_id)));
- [NSOpenGLContext clearCurrentContext];
self->gl_context = g_steal_pointer (&gl_context);
@@ -339,17 +344,12 @@ gdk_macos_gl_context_dispose (GObject *gobject)
if (self->dummy_view != nil)
{
NSView *nsview = g_steal_pointer (&self->dummy_view);
-
- if (GDK_IS_MACOS_GL_VIEW (nsview))
- [(GdkMacosGLView *)nsview setOpenGLContext:nil];
-
[nsview release];
}
if (self->dummy_window != nil)
{
NSWindow *nswindow = g_steal_pointer (&self->dummy_window);
-
[nswindow release];
}