[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