[aseprite] 179/196: Fix loading two times a file specified in the command line on OS X

Tobias Hansen thansen at moszumanska.debian.org
Wed Apr 20 18:50:17 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 e4c46a761ad50beedfe2dbad28eb5c43e14bdc8e
Author: David Capello <davidcapello at gmail.com>
Date:   Mon Apr 11 19:15:42 2016 -0300

    Fix loading two times a file specified in the command line on OS X
    
    To avoid receiving a she::DropFiles event (from application:openFiles:)
    when we're loading files specified in the command line (i.e. when we are
    showing the progress bar/processing "ui" layer events/CustomizedGuiManager
    is listening for kDropFilesMessages) we call NSApp finishLauching after
    we've processed the whole command line.
---
 src/app/app.cpp            |  2 ++
 src/she/alleg4/she.cpp     |  5 +++++
 src/she/osx/app.h          |  3 +++
 src/she/osx/app.mm         | 22 +++++++++++++++++++++-
 src/she/skia/skia_system.h | 10 ++++++++++
 src/she/system.h           |  1 +
 6 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/src/app/app.cpp b/src/app/app.cpp
index 65d718b..425d7c5 100644
--- a/src/app/app.cpp
+++ b/src/app/app.cpp
@@ -658,6 +658,8 @@ void App::initialize(const AppOptions& options)
 
     LOG("Export sprite sheet: Done\n");
   }
+
+  she::instance()->finishLaunching();
 }
 
 void App::run()
diff --git a/src/she/alleg4/she.cpp b/src/she/alleg4/she.cpp
index 37e1407..b9ada00 100644
--- a/src/she/alleg4/she.cpp
+++ b/src/she/alleg4/she.cpp
@@ -144,6 +144,10 @@ public:
     delete this;
   }
 
+  void finishLaunching() override {
+    // Do nothing
+  }
+
   Capabilities capabilities() const override {
     return (Capabilities)(Capabilities::CanResizeDisplay);
   }
@@ -197,6 +201,7 @@ public:
     set_color_conversion(old_color_conv);
     return sur;
   }
+
 };
 
 System* create_system() {
diff --git a/src/she/osx/app.h b/src/she/osx/app.h
index fa039f8..f0352b8 100644
--- a/src/she/osx/app.h
+++ b/src/she/osx/app.h
@@ -16,10 +16,13 @@ namespace she {
 
   class OSXApp {
   public:
+    static OSXApp* instance();
+
     OSXApp();
     ~OSXApp();
 
     bool init();
+    void finishLaunching();
 
   private:
     class Impl;
diff --git a/src/she/osx/app.mm b/src/she/osx/app.mm
index 37c9cdb..801b0c9 100644
--- a/src/she/osx/app.mm
+++ b/src/she/osx/app.mm
@@ -28,23 +28,38 @@ public:
     [m_app setActivationPolicy:NSApplicationActivationPolicyRegular];
     [m_app setDelegate:m_appDelegate];
     [m_app activateIgnoringOtherApps:YES];
-    [m_app finishLaunching];
 
     return true;
   }
 
+  void finishLaunching() {
+    [m_app finishLaunching];
+  }
+
 private:
   NSApplication* m_app;
   OSXAppDelegate* m_appDelegate;
 };
 
+static OSXApp* g_instance = nullptr;
+
+// static
+OSXApp* OSXApp::instance()
+{
+  return g_instance;
+}
+
 OSXApp::OSXApp()
   : m_impl(new Impl)
 {
+  ASSERT(!g_instance);
+  g_instance = this;
 }
 
 OSXApp::~OSXApp()
 {
+  ASSERT(g_instance == this);
+  g_instance = nullptr;
 }
 
 bool OSXApp::init()
@@ -52,4 +67,9 @@ bool OSXApp::init()
   return m_impl->init();
 }
 
+void OSXApp::finishLaunching()
+{
+  m_impl->finishLaunching();
+}
+
 } // namespace she
diff --git a/src/she/skia/skia_system.h b/src/she/skia/skia_system.h
index fcee2c9..a8a6d61 100644
--- a/src/she/skia/skia_system.h
+++ b/src/she/skia/skia_system.h
@@ -21,6 +21,7 @@
 #ifdef _WIN32
   #include "she/win/event_queue.h"
 #elif __APPLE__
+  #include "she/osx/app.h"
   #include "she/osx/event_queue.h"
 #else
   #include "she/x11/event_queue.h"
@@ -51,6 +52,15 @@ public:
     delete this;
   }
 
+  void finishLaunching() override {
+#if __APPLE__
+    // Start processing NSApplicationDelegate events. (E.g. after
+    // calling this we'll receive application:openFiles: and we'll
+    // generate DropFiles events.)  events
+    OSXApp::instance()->finishLaunching();
+#endif
+  }
+
   Capabilities capabilities() const override {
     return Capabilities(
       int(Capabilities::MultipleDisplays) |
diff --git a/src/she/system.h b/src/she/system.h
index 7e7f040..2b1535b 100644
--- a/src/she/system.h
+++ b/src/she/system.h
@@ -33,6 +33,7 @@ namespace she {
   public:
     virtual ~System() { }
     virtual void dispose() = 0;
+    virtual void finishLaunching() = 0;
     virtual Capabilities capabilities() const = 0;
     virtual Logger* logger() = 0;
     virtual NativeDialogs* nativeDialogs() = 0;

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