Split on_run callback and run method 91/40891/1
authorJihoon Kim <jihoon48.kim@samsung.com>
Thu, 29 Jan 2015 01:06:48 +0000 (10:06 +0900)
committerJihoon Kim <jihoon48.kim@samsung.com>
Wed, 10 Jun 2015 07:24:10 +0000 (16:24 +0900)
Change-Id: I09b44db4a79047c2a90a541a045a570eb86c748f

src/sclconnection-isf.cpp
src/sclcore.cpp
src/sclcore.h
src/sclcorecallback.h
src/sclcoreimpl.cpp
src/sclcoreimpl.h

index 3066a15..c338a97 100644 (file)
@@ -940,7 +940,7 @@ extern "C"
         _scim_config = config;
         CSCLCoreImpl *impl = CSCLCoreImpl::get_instance();
         if (impl) {
-            impl->run(display.c_str());
+            impl->on_run(display.c_str());
         }
     }
 }
index 4275f55..13fa0e8 100644 (file)
@@ -34,6 +34,13 @@ CSCLCore::~CSCLCore()
     m_impl = NULL;
 }
 
+void CSCLCore::run()
+{
+    if (m_impl) {
+        m_impl->run();
+    }
+}
+
 void CSCLCore::config_reload()
 {
     if (m_impl) {
index a74adc2..4319a7a 100644 (file)
@@ -43,6 +43,8 @@ public:
     CSCLCore(ISCLCoreEventCallback *callback);
     ~CSCLCore();
 
+    void run();
+
     /**
      * @brief Request ISF to reload all configuration.
      */
index 7013228..135b608 100644 (file)
@@ -44,6 +44,7 @@ struct ISCLCoreEventCallback {
     virtual void on_get_app_info(SclCoreAppInfo *info) {}
 
     virtual void on_init() {}
+    virtual void on_run(int argc, char **argv) {}
     virtual void on_exit() {}
     virtual void on_attach_input_context(sclint ic, const sclchar *ic_uuid) {}
     virtual void on_detach_input_context(sclint ic, const sclchar *ic_uuid) {}
index 5103a16..26c24ca 100644 (file)
@@ -22,10 +22,15 @@ using namespace scl;
 CSCLCoreImpl::CSCLCoreImpl()
 {
     m_event_callback = NULL;
+    m_display = NULL;
 }
 
 CSCLCoreImpl::~CSCLCoreImpl()
 {
+    if (m_display) {
+        free(m_display);
+        m_display = NULL;
+    }
 }
 
 CSCLCoreImpl*
@@ -225,12 +230,25 @@ void CSCLCoreImpl::get_keyboard_ise(const sclchar *uuid)
     m_connection.get_keyboard_ise(uuid);
 }
 
-void CSCLCoreImpl::run(const sclchar *display)
+void CSCLCoreImpl::on_run(const sclchar *display)
 {
     m_core_ui.init();
     m_connection.init();
 
-    m_core_ui.run(display);
+    if (m_display) {
+        free (m_display);
+    }
+
+    m_display = strdup(display);
+
+    if (m_event_callback) {
+        m_event_callback->on_run(1, NULL);
+    }
+}
+
+void CSCLCoreImpl::run()
+{
+    m_core_ui.run(m_display);
 
     m_connection.fini();
     m_core_ui.fini();
index 4ef1194..448f6e2 100644 (file)
@@ -33,6 +33,8 @@ class CSCLCoreImpl
 private:
     CSCLCoreImpl();
 
+    sclchar* m_display;
+
 public:
     ~CSCLCoreImpl();
     static CSCLCoreImpl* get_instance();
@@ -40,7 +42,8 @@ public:
     void init(const sclchar *display);
     void fini();
 
-    void run(const sclchar *display);
+    void on_run(const sclchar *display);
+    void run();
 
     void set_core_event_callback(ISCLCoreEventCallback *callback);
     ISCLCoreEventCallback* get_core_event_callback();