Add new callback binder forFrameUpdateInterface with return value 47/303947/2
authorEunki, Hong <eunkiki.hong@samsung.com>
Mon, 8 Jan 2024 08:41:03 +0000 (17:41 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Mon, 8 Jan 2024 10:23:18 +0000 (19:23 +0900)
Change-Id: I0788438ff7d5bc22416cef0df5ec2e686c0cfaaa
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali-csharp-binder/common/dali-wrap.cpp
dali-csharp-binder/common/dali-wrap.h

index 2cdb932..5dfb663 100644 (file)
@@ -1976,7 +1976,8 @@ void SwigDirector_CustomAlgorithmInterface::swig_init_callbacks() {
 }
 
 SwigDirector_FrameCallbackInterface::SwigDirector_FrameCallbackInterface() : Dali::FrameCallbackInterface(), Swig::Director() {
-  swig_callbackOnUpdate = 0;
+  swig_callbackOnUpdate = nullptr;
+  swig_callbackOnUpdateWithReturn = nullptr;
 }
 
 SwigDirector_FrameCallbackInterface::~SwigDirector_FrameCallbackInterface() {
@@ -1985,24 +1986,39 @@ SwigDirector_FrameCallbackInterface::~SwigDirector_FrameCallbackInterface() {
 
 void SwigDirector_FrameCallbackInterface::swig_connect_director(SWIG_Callback0_t callbackUpdate) {
   swig_callbackOnUpdate = callbackUpdate;
+  swig_callbackOnUpdateWithReturn = nullptr;
 }
 
+void SwigDirector_FrameCallbackInterface::swig_connect_director_with_return(SWIG_Callback1_t callbackUpdate) {
+  swig_callbackOnUpdateWithReturn = callbackUpdate;
+  swig_callbackOnUpdate = nullptr;
+}
 
 bool SwigDirector_FrameCallbackInterface::Update(Dali::UpdateProxy& updateProxy, float elapsedSeconds) {
   void * jcurrent  ;
+  bool jresult = false;
 
-  if (!swig_callbackOnUpdate) {
+  if (!swig_callbackOnUpdate && !swig_callbackOnUpdateWithReturn) {
     throw Swig::DirectorPureVirtualException("Dali::FrameCallbackInterface::Update");
   } else {
     Dali::UpdateProxy* proxy = &updateProxy;
     jcurrent = (void *)proxy;
-    swig_callbackOnUpdate(jcurrent, elapsedSeconds);
+
+    if(swig_callbackOnUpdateWithReturn)
+    {
+      jresult = swig_callbackOnUpdateWithReturn(jcurrent, elapsedSeconds);
+    }
+    else
+    {
+      swig_callbackOnUpdate(jcurrent, elapsedSeconds);
+    }
+
     if (!jcurrent) {
       DALI_LOG_ERROR("[ERROR][%s line:%d] Unexpected null return for type Dali::UpdateProxy! ", __FILE__, __LINE__);
       return false;
     }
   }
-  return false;
+  return jresult;
 }
 
 
@@ -25001,6 +25017,13 @@ SWIGEXPORT void SWIGSTDCALL CSharp_Dali_FrameCallbackInterface_director_connect(
   }
 }
 
+SWIGEXPORT void SWIGSTDCALL CSharp_Dali_FrameCallbackInterface_director_connect_with_return(void *objarg, SwigDirector_FrameCallbackInterface::SWIG_Callback1_t callback1) {
+  Dali::FrameCallbackInterface *obj = (Dali::FrameCallbackInterface *)objarg;
+  SwigDirector_FrameCallbackInterface *director = dynamic_cast<SwigDirector_FrameCallbackInterface *>(obj);
+  if (director) {
+    director->swig_connect_director_with_return(callback1);
+  }
+}
 
 SWIGEXPORT void * SWIGSTDCALL CSharp_Dali_new_FrameCallbackInterface() {
   void * jresult ;
index 8b40df0..fb4765f 100755 (executable)
@@ -264,9 +264,12 @@ public:
     typedef void (SWIGSTDCALL* SWIG_Callback0_t)( void*  updateProxy, float elapsedSeconds );
     void swig_connect_director( SWIG_Callback0_t callbackUpdate );
 
+    typedef bool (SWIGSTDCALL* SWIG_Callback1_t)( void*  updateProxy, float elapsedSeconds );
+    void swig_connect_director_with_return( SWIG_Callback1_t callbackUpdate );
 
 private:
     SWIG_Callback0_t swig_callbackOnUpdate;
+    SWIG_Callback1_t swig_callbackOnUpdateWithReturn;
 };
 
 #endif