Update wrt-plugins-common_0.3.53
[framework/web/wrt-plugins-common.git] / src / Commons / EventReceiver.h
index 5506695..0768e05 100644 (file)
@@ -71,9 +71,18 @@ class EventReceiver :
     void signalEventByDispatcher(const DPL::SharedPtr<TemplateEvent> &event)
     {
         LogDebug("in");
-        DPL::Event::AbstractEventDispatcher *dispatcher =
-            ThreadPool::getInstance().getDispatcher(m_threadDispatcher);
-        dispatcher->AddEventCall(new SignalEventCall<TemplateEvent>(event));
+        Try {
+            DPL::Event::AbstractEventDispatcher *dispatcher =
+                ThreadPool::getInstance().getDispatcher(m_threadDispatcher);
+            dispatcher->AddEventCall(new SignalEventCall<TemplateEvent>(event));
+        }
+        Catch(DPL::Thread::Exception::UnmanagedThread) {
+            // if called on unmanaged thread,
+            // call signalSynchronousEventFlag() directly
+            LogDebug("signalSynchronousEventFlag() is called"
+                     "by unmanaged thread");
+            event->signalSynchronousEventFlag();
+        }
     }
 
     virtual ~EventReceiver()