[gtk] GdkQuartz: Handle NULL from [NSGraphicsContext currentContext].
- From: John Ralls <jralls src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk] GdkQuartz: Handle NULL from [NSGraphicsContext currentContext].
- Date: Thu, 1 Nov 2018 22:40:18 +0000 (UTC)
commit e31187e1cf5ca9901a9f435e75375e5fd8723888
Author: John Ralls <jralls ceridwen us>
Date: Sat Oct 20 12:27:46 2018 -0700
GdkQuartz: Handle NULL from [NSGraphicsContext currentContext].
By returning a default surface. The situation where there's no
currentContext arises when GtkCSS is trying to determine the
layout sizes so no actual display is necessary.
Closes: #1411
gdk/quartz/gdksurface-quartz.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
---
diff --git a/gdk/quartz/gdksurface-quartz.c b/gdk/quartz/gdksurface-quartz.c
index ff7c62a688..ca4a54aaab 100644
--- a/gdk/quartz/gdksurface-quartz.c
+++ b/gdk/quartz/gdksurface-quartz.c
@@ -135,9 +135,11 @@ gdk_surface_impl_quartz_get_context (GdkSurfaceImplQuartz *surface_impl,
return NULL;
}
if (gdk_quartz_osx_version () < GDK_OSX_YOSEMITE)
- cg_context = [[NSGraphicsContext currentContext] graphicsPort];
+ cg_context = [[NSGraphicsContext currentContext] graphicsPort];
else
- cg_context = [[NSGraphicsContext currentContext] CGContext];
+ cg_context = [[NSGraphicsContext currentContext] CGContext];
+ if (!cg_context)
+ return NULL;
CGContextSaveGState (cg_context);
CGContextSetAllowsAntialiasing (cg_context, antialias);
@@ -278,15 +280,15 @@ gdk_quartz_create_cairo_surface (GdkSurfaceImplQuartz *impl,
cg_context = gdk_quartz_surface_get_context (impl, TRUE);
- if (!cg_context)
- return NULL;
-
surface_data = g_new (GdkQuartzCairoSurfaceData, 1);
surface_data->surface_impl = impl;
surface_data->cg_context = cg_context;
- surface = cairo_quartz_surface_create_for_cg_context (cg_context,
- width, height);
+ if (cg_context)
+ surface = cairo_quartz_surface_create_for_cg_context (cg_context,
+ width, height);
+ else
+ surface = cairo_quartz_surface_create(CAIRO_FORMAT_ARGB32, width, height);
cairo_surface_set_user_data (surface, &gdk_quartz_cairo_key,
surface_data,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]