[aseprite] 163/308: Fix crash disabling GPU acceleration on Skia/Win port

Tobias Hansen thansen at moszumanska.debian.org
Tue Mar 8 02:45:06 UTC 2016


This is an automated email from the git hooks/post-receive script.

thansen pushed a commit to branch master
in repository aseprite.

commit a43f7cfa6667a543cd3556acd7c3a1178362457a
Author: David Capello <davidcapello at gmail.com>
Date:   Mon Dec 28 15:56:41 2015 -0300

    Fix crash disabling GPU acceleration on Skia/Win port
---
 src/she/skia/skia_display.cpp    | 16 +++++++++++++++-
 src/she/skia/skia_display.h      |  1 +
 src/she/skia/skia_window_win.cpp |  6 +++++-
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/she/skia/skia_display.cpp b/src/she/skia/skia_display.cpp
index 4b84803..5dc70ae 100644
--- a/src/she/skia/skia_display.cpp
+++ b/src/she/skia/skia_display.cpp
@@ -23,7 +23,8 @@ SkiaDisplay::SkiaDisplay(int width, int height, int scale)
   , m_customSurface(false)
   , m_nativeCursor(kArrowCursor)
 {
-  m_surface->create(width, height);
+  m_surface->create(width / scale,
+                    height / scale);
   m_window.setScale(scale);
   m_window.setVisible(true);
 }
@@ -35,6 +36,19 @@ void SkiaDisplay::setSkiaSurface(SkiaSurface* surface)
   m_customSurface = true;
 }
 
+void SkiaDisplay::resetSkiaSurface()
+{
+  if (m_surface) {
+    m_surface->dispose();
+    m_surface = nullptr;
+  }
+
+  gfx::Size size = m_window.clientSize() / m_window.scale();
+  m_surface = new SkiaSurface;
+  m_surface->create(size.w, size.h);
+  m_customSurface = false;
+}
+
 void SkiaDisplay::resize(const gfx::Size& size)
 {
   Event ev;
diff --git a/src/she/skia/skia_display.h b/src/she/skia/skia_display.h
index 00b77de..b980391 100644
--- a/src/she/skia/skia_display.h
+++ b/src/she/skia/skia_display.h
@@ -21,6 +21,7 @@ public:
   SkiaDisplay(int width, int height, int scale);
 
   void setSkiaSurface(SkiaSurface* surface);
+  void resetSkiaSurface();
 
   void resize(const gfx::Size& size);
   void dispose() override;
diff --git a/src/she/skia/skia_window_win.cpp b/src/she/skia/skia_window_win.cpp
index 94728de..a7ea988 100644
--- a/src/she/skia/skia_window_win.cpp
+++ b/src/she/skia/skia_window_win.cpp
@@ -10,6 +10,7 @@
 
 #include "she/skia/skia_window_win.h"
 
+#include "base/log.h"
 #include "she/event_queue.h"
 #include "she/skia/skia_display.h"
 #include "she/system.h"
@@ -157,7 +158,7 @@ bool SkiaWindow::attachGL()
                                       (GrBackendContext)m_glCtx->gl()));
     }
     catch (const std::exception& ex) {
-      //LOG("Cannot create GL context: %s\n", ex.what());
+      LOG("Cannot create GL context: %s\n", ex.what());
       detachGL();
     }
   }
@@ -179,6 +180,9 @@ bool SkiaWindow::attachANGLE()
 
 void SkiaWindow::detachGL()
 {
+  if (m_glCtx && m_display)
+    m_display->resetSkiaSurface();
+
   m_skSurfaceDirect.reset(nullptr);
   m_skSurface.reset(nullptr);
   m_grRenderTarget.reset(nullptr);

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git



More information about the Pkg-games-commits mailing list