[aseprite] 131/196: Throw exceptions if a SkBitmap cannot be created on SkiaSurface

Tobias Hansen thansen at moszumanska.debian.org
Wed Apr 20 18:50:11 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 677fe413166cbb5dc4eaa3aae0d42149dcece728
Author: David Capello <davidcapello at gmail.com>
Date:   Tue Mar 29 20:04:49 2016 -0300

    Throw exceptions if a SkBitmap cannot be created on SkiaSurface
    
    Maybe in the future we might avoid throwing exceptions from the "she"
    layer and just return an error code.
---
 src/she/skia/skia_surface.h | 26 ++++++++++++++++----------
 1 file changed, 16 insertions(+), 10 deletions(-)

diff --git a/src/she/skia/skia_surface.h b/src/she/skia/skia_surface.h
index 7d6298a..0daf66d 100644
--- a/src/she/skia/skia_surface.h
+++ b/src/she/skia/skia_surface.h
@@ -1,5 +1,5 @@
 // SHE library
-// Copyright (C) 2012-2015  David Capello
+// Copyright (C) 2012-2016  David Capello
 //
 // This file is released under the terms of the MIT license.
 // Read LICENSE.txt for more information.
@@ -8,6 +8,7 @@
 #define SHE_SKIA_SKIA_SURFACE_INCLUDED
 #pragma once
 
+#include "base/exception.h"
 #include "gfx/clip.h"
 #include "she/common/font.h"
 #include "she/locked_surface.h"
@@ -56,20 +57,22 @@ public:
   void create(int width, int height) {
     ASSERT(!m_surface);
 
-    m_bitmap.tryAllocPixels(
-      SkImageInfo::MakeN32Premul(width, height));
-    m_bitmap.eraseColor(SK_ColorTRANSPARENT);
+    if (!m_bitmap.tryAllocPixels(
+          SkImageInfo::MakeN32Premul(width, height)))
+      throw base::Exception("Cannot create Skia surface");
 
+    m_bitmap.eraseColor(SK_ColorTRANSPARENT);
     rebuild();
   }
 
   void createRgba(int width, int height) {
     ASSERT(!m_surface);
 
-    m_bitmap.tryAllocPixels(
-      SkImageInfo::MakeN32Premul(width, height));
-    m_bitmap.eraseColor(SK_ColorTRANSPARENT);
+    if (!m_bitmap.tryAllocPixels(
+          SkImageInfo::MakeN32Premul(width, height)))
+      throw base::Exception("Cannot create Skia surface");
 
+    m_bitmap.eraseColor(SK_ColorTRANSPARENT);
     rebuild();
   }
 
@@ -131,7 +134,9 @@ public:
         m_paint.setXfermodeMode(SkXfermode::kSrcOver_Mode);
         {
           SkBitmap bitmap;
-          bitmap.tryAllocPixels(SkImageInfo::MakeN32Premul(8, 8));
+          if (!bitmap.tryAllocPixels(SkImageInfo::MakeN32Premul(8, 8)))
+            throw base::Exception("Cannot create temporary Skia surface");
+
           {
             bitmap.lockPixels();
             SkPMColor bg = SkPreMultiplyARGB(255, 0, 0, 0);
@@ -164,8 +169,9 @@ public:
     ASSERT(!m_surface);
 
     SkBitmap result;
-    result.tryAllocPixels(
-      SkImageInfo::MakeN32Premul(width()*scaleFactor, height()*scaleFactor));
+    if (!result.tryAllocPixels(
+          SkImageInfo::MakeN32Premul(width()*scaleFactor, height()*scaleFactor)))
+      throw base::Exception("Cannot create temporary Skia surface to change scale");
 
     SkPaint paint;
     paint.setXfermodeMode(SkXfermode::kSrc_Mode);

-- 
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