aboutsummaryrefslogtreecommitdiffhomepage
path: root/gtk/PlatGTK.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/PlatGTK.cxx')
-rwxr-xr-xgtk/PlatGTK.cxx11
1 files changed, 6 insertions, 5 deletions
diff --git a/gtk/PlatGTK.cxx b/gtk/PlatGTK.cxx
index 8610485de..fcd0fb1f7 100755
--- a/gtk/PlatGTK.cxx
+++ b/gtk/PlatGTK.cxx
@@ -125,7 +125,7 @@ class SurfaceImpl : public Surface {
EncodingType et= EncodingType::singleByte;
WindowID widSave = nullptr;
cairo_t *context = nullptr;
- UniqueCairo pixmapContext;
+ UniqueCairo cairoOwned;
UniqueCairoSurface surf;
bool inited = false;
UniquePangoContext pcontext;
@@ -303,8 +303,8 @@ SurfaceImpl::SurfaceImpl(cairo_t *context_, int width, int height, SurfaceMode m
surf.reset(cairo_surface_create_similar(
psurfContext,
CAIRO_CONTENT_COLOR_ALPHA, width, height));
- pixmapContext.reset(cairo_create(surf.get()));
- context = pixmapContext.get();
+ cairoOwned.reset(cairo_create(surf.get()));
+ context = cairoOwned.get();
pcontext.reset(gtk_widget_create_pango_context(PWidget(wid)));
PLATFORM_ASSERT(pcontext);
SetFractionalPositions(pcontext.get());
@@ -322,7 +322,7 @@ SurfaceImpl::SurfaceImpl(cairo_t *context_, int width, int height, SurfaceMode m
void SurfaceImpl::Release() noexcept {
et = EncodingType::singleByte;
- pixmapContext.reset();
+ cairoOwned.reset();
context = nullptr;
surf.reset();
layout.reset();
@@ -397,7 +397,8 @@ void SurfaceImpl::Init(SurfaceID sid, WindowID wid) {
PLATFORM_ASSERT(sid);
Release();
PLATFORM_ASSERT(wid);
- context = cairo_reference(static_cast<cairo_t *>(sid));
+ cairoOwned.reset(cairo_reference(static_cast<cairo_t *>(sid)));
+ context = cairoOwned.get();
pcontext.reset(gtk_widget_create_pango_context(PWidget(wid)));
SetFractionalPositions(pcontext.get());
// update the Pango context in case sid isn't the widget's surface