Revert "[4.0] When native image is destroyed, it release of wl buffer and remote... 56/154856/1
authortaeyoon0.lee <taeyoon0.lee@samsung.com>
Wed, 11 Oct 2017 10:00:12 +0000 (19:00 +0900)
committertaeyoon0.lee <taeyoon0.lee@samsung.com>
Wed, 11 Oct 2017 10:00:36 +0000 (19:00 +0900)
This reverts commit 3cee72ba60a342e6bca4e74daca8975fd84c8454.

Change-Id: I40fd5b534d23463c64f7e8ec69beab8ca28ae08e

widget_viewer_dali/internal/widget_view/widget_view_impl.cpp
widget_viewer_dali/internal/widget_view/widget_view_impl.h

index da5783ea36ded4735407a37109979a7994d1c4a3..422fb1696796539925c60807d789c6041afc987a 100644 (file)
@@ -44,7 +44,6 @@
 #include <unistd.h>
 #include <libintl.h>
 #include <xkbcommon/xkbcommon.h>
-#include <dali/devel-api/images/native-image-interface-extension.h>
 
 namespace Dali
 {
@@ -205,7 +204,15 @@ static void OnBufferUpdated( struct tizen_remote_surface *surface, uint32_t type
 
     //get tbm surface from buffer
     tbm_surface_h tbmSurface = static_cast< tbm_surface_h >( wl_buffer_get_user_data( buffer ) );
-    widgetView->UpdateImageSource( tbmSurface, buffer, surface);
+    widgetView->UpdateImageSource( tbmSurface );
+  }
+
+  if( preBuffer != NULL && tizen_remote_surface_get_version( surface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION )
+  {
+    tizen_remote_surface_release( surface, preBuffer );
+    tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( preBuffer );
+    tbm_surface_internal_unref( preTbmSurface );
+    wl_buffer_destroy( preBuffer );
   }
 
   remoteSurface = surface;
@@ -985,62 +992,11 @@ bool WidgetView::IsWidgetImageView()
   return ( mWidgetImageView )? true: false;
 }
 
-
-class DestructorCallback: public CallbackBase
+void WidgetView::UpdateImageSource( tbm_surface_h source )
 {
-public:
-  DestructorCallback(void *buffer ,void *surface)
-  :CallbackBase( reinterpret_cast< void* >( this ),
-   NULL, // we get the dispatcher to call function directly
-   reinterpret_cast< CallbackBase::Dispatcher>( &DestructorCallback::Dispatcher) ),
-   mWlBuffer( buffer ),
-   mRemoteSurface( surface ) {
-
-  }
-
-  void RunCallback()
-  {
-    struct wl_buffer *buffer = static_cast< struct wl_buffer* >(mWlBuffer);
-    struct tizen_remote_surface *surface = static_cast< struct tizen_remote_surface* >(mRemoteSurface);
-    if (tizen_remote_surface_get_version( surface ) >= TIZEN_REMOTE_SURFACE_RELEASE_SINCE_VERSION) {
-        tizen_remote_surface_release( surface, buffer );
-        tbm_surface_h preTbmSurface = (tbm_surface_h)wl_buffer_get_user_data( buffer );
-        tbm_surface_internal_unref( preTbmSurface );
-        wl_buffer_destroy( buffer );
-    }
-  }
-
-  static void Dispatcher( CallbackBase& base )
-  {
-    DestructorCallback& callback( static_cast< DestructorCallback& >( base) );
-    callback.RunCallback();
-  }
-
-  ~DestructorCallback()
-  {
-  }
-
-private:
-  void *mWlBuffer ;
-  void *mRemoteSurface;
-};
-
-
-void WidgetView::UpdateImageSource( tbm_surface_h source , struct wl_buffer *buffer , struct tizen_remote_surface *surface)
-{
-  DestructorCallback* callback = new DestructorCallback( buffer, surface );
-  TriggerEventFactory triggerEventFactory;
-  TriggerEventInterface* notification = triggerEventFactory.CreateTriggerEvent( callback,
-                                                                                TriggerEventInterface::DELETE_AFTER_TRIGGER );
-
   mImageSource = Dali::NativeImageSource::New( source );
   Dali::NativeImage image = Dali::NativeImage::New( *mImageSource );
 
-  NativeImageInterfacePtr mImageSourcePtr = static_cast< NativeImageInterfacePtr >(mImageSource);
-  NativeImageInterface::Extension* extension = mImageSourcePtr->GetExtension();
-  if( extension )
-   extension->SetDestructorNotification(notification);
-
   if( mWidgetImageView )
   {
     mWidgetImageView.SetImage( image );
index f772df04b67cb23949b0ffc95d9e7f97e24b76ed..8aedda1a5dace3f1d9d9e14a5d75e60b0b57c2be 100644 (file)
@@ -30,7 +30,6 @@
 #include <wayland-extension/tizen-remote-surface-client-protocol.h>
 #include <tbm_surface.h>
 #include <screen_connector_toolkit.h>
-#include <dali/integration-api/adaptors/trigger-event-factory.h>
 
 namespace Dali
 {
@@ -136,7 +135,7 @@ public: // Internal API
 
   bool IsWidgetImageView();
 
-  void UpdateImageSource( tbm_surface_h source , struct wl_buffer *buffer , struct tizen_remote_surface *surface);
+  void UpdateImageSource( tbm_surface_h source );
 
   void CreateWidgetImageView();