From: Heeyong Song Date: Mon, 25 Apr 2016 07:54:00 +0000 (+0900) Subject: Support GL Client X-Git-Tag: accepted/tizen/common/20160427.143948~1 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fpepper-dali.git;a=commitdiff_plain;h=d28556111fdf2253bc63bdf9ddcb2f1a572cdc43 Support GL Client Change-Id: I4ab6020833e13add7821651e762af4cb84bf5f65 --- diff --git a/configure.ac b/configure.ac index e838e95..314c014 100644 --- a/configure.ac +++ b/configure.ac @@ -17,6 +17,7 @@ PKG_CHECK_MODULES([PEPPER], [pepper xkbcommon]) PKG_CHECK_MODULES([WAYLAND], [wayland-server xdg-shell-server tizen-extension-client]) PKG_CHECK_MODULES([DALI], [dali-core dali-adaptor dali-toolkit]) PKG_CHECK_MODULES([EFL], [ecore ecore-input ecore-wayland]) +PKG_CHECK_MODULES([WAYLAND_TBM], [wayland-tbm-server]) AC_CONFIG_FILES([ Makefile diff --git a/pepper-dali/Makefile.am b/pepper-dali/Makefile.am index 0f07dff..e82f9fa 100644 --- a/pepper-dali/Makefile.am +++ b/pepper-dali/Makefile.am @@ -12,7 +12,7 @@ pepper_dali_includes = \ libpepper_dali_la_LTLIBRARIES = libpepper-dali.la libpepper_dali_ladir = $(libdir) -libpepper_dali_la_LIBADD = @DALI_LIBS@ @WAYLAND_LIBS@ @PEPPER_LIBS@ +libpepper_dali_la_LIBADD = @DALI_LIBS@ @WAYLAND_LIBS@ @PEPPER_LIBS@ @WAYLAND_TBM_LIBS@ libpepper_dali_la_LDFLAGS = ${LDFLAGS} libpepper_dali_la_CXXFLAGS = \ ${CFLAGS} \ @@ -20,7 +20,9 @@ libpepper_dali_la_CXXFLAGS = \ @EFL_CFLAGS@ \ @WAYLAND_CFLAGS@ \ @PEPPER_CFLAGS@ \ - $(pepper_dali_includes) + @WAYLAND_TBM_LIBS@ \ + $(pepper_dali_includes) \ + -DDEBUG_ENABLED libpepper_dali_la_SOURCES = $(src_files) diff --git a/pepper-dali/internal/compositor-impl.cpp b/pepper-dali/internal/compositor-impl.cpp index dc09c8c..172f162 100644 --- a/pepper-dali/internal/compositor-impl.cpp +++ b/pepper-dali/internal/compositor-impl.cpp @@ -121,24 +121,20 @@ void Compositor::Initialize( Application application, const std::string& name ) mDisplay = pepper_compositor_get_display( mCompositor ); -#if 0 - mTbmServer = wayland_tbm_server_init( mDisplay, NULL, -1, 0 ); - if( !mTbmServer ) + // create shell + mShell = Pepper::Shell::New( Pepper::Compositor( this ) ); + if( !mShell ) { - DALI_LOG_INFO( gPepperCompositorLogging, Debug::General, "Compositor::Initialize: wayland_tbm_server_init is failed.\n" ); + DALI_LOG_INFO( gPepperCompositorLogging, Debug::General, "Compositor::Initialize: Fail to create shell.\n" ); pepper_compositor_destroy( mCompositor ); mCompositor = NULL; return; } -#endif - // create shell - mShell = Pepper::Shell::New( Pepper::Compositor( this ) ); - if( !mShell ) + mTbmServer = wayland_tbm_server_init( mDisplay, NULL, -1, 0 ); + if( !mTbmServer ) { - DALI_LOG_INFO( gPepperCompositorLogging, Debug::General, "Compositor::Initialize: Fail to create shell.\n" ); - wayland_tbm_server_deinit( mTbmServer ); - mTbmServer = NULL; + DALI_LOG_INFO( gPepperCompositorLogging, Debug::General, "Compositor::Initialize: wayland_tbm_server_init is failed.\n" ); pepper_compositor_destroy( mCompositor ); mCompositor = NULL; return; diff --git a/pepper-dali/internal/object-impl.cpp b/pepper-dali/internal/object-impl.cpp index 157d4dc..1e51759 100644 --- a/pepper-dali/internal/object-impl.cpp +++ b/pepper-dali/internal/object-impl.cpp @@ -103,8 +103,8 @@ bool Object::AttchBuffer( int* width, int* height ) { pepper_buffer_t* buffer; wl_resource* bufferResource; - wl_shm_buffer* shmBuffer; - tbm_surface_h tbmSurface; + wl_shm_buffer* shmBuffer = NULL; + tbm_surface_h tbmSurface = NULL; int bufWidth, bufHeight; buffer = pepper_surface_get_buffer( mSurface ); @@ -127,27 +127,6 @@ bool Object::AttchBuffer( int* width, int* height ) bufferResource = pepper_buffer_get_resource( buffer ); - shmBuffer = wl_shm_buffer_get( bufferResource ); - if( shmBuffer ) - { - bufWidth = wl_shm_buffer_get_width( shmBuffer ); - bufHeight = wl_shm_buffer_get_height( shmBuffer ); - } - else - { - tbmSurface = wayland_tbm_server_get_surface( NULL, bufferResource ); - if( tbmSurface ) - { - bufWidth = tbm_surface_get_width( tbmSurface ); - bufHeight = tbm_surface_get_height( tbmSurface ); - } - else - { - DALI_LOG_INFO( gPepperObjectLogging, Debug::General, "Object::AttchBuffer: Failed to get buffer\n" ); - return false; - } - } - if( !mObjectView ) { mObjectView = Pepper::ObjectView::New(); @@ -165,24 +144,47 @@ bool Object::AttchBuffer( int* width, int* height ) mObjectViewAddedSignal.Emit( handle, mObjectView ); } - if( shmBuffer != mShmBuffer ) + shmBuffer = wl_shm_buffer_get( bufferResource ); + if( shmBuffer ) { - // create a new image - PixelBuffer* pixelBuffer = static_cast< PixelBuffer* >( wl_shm_buffer_get_data( shmBuffer ) ); - mBufferImage = BufferImage::New( pixelBuffer, bufWidth, bufHeight ); + bufWidth = wl_shm_buffer_get_width( shmBuffer ); + bufHeight = wl_shm_buffer_get_height( shmBuffer ); + + if( shmBuffer != mShmBuffer ) + { + // create a new image + PixelBuffer* pixelBuffer = static_cast< PixelBuffer* >( wl_shm_buffer_get_data( shmBuffer ) ); + mBufferImage = BufferImage::New( pixelBuffer, bufWidth, bufHeight ); - mObjectView.SetImage( mBufferImage ); + mObjectView.SetImage( mBufferImage ); - mShmBuffer = shmBuffer; + mShmBuffer = shmBuffer; + } } - else if ( tbmSurface != mTbmSurface ) + else { - NativeImageSourcePtr nativeImageSource = NativeImageSource::New( tbmSurface ); - mNativeImage = NativeImage::New( *nativeImageSource ); + tbmSurface = wayland_tbm_server_get_surface( NULL, bufferResource ); + if( tbmSurface ) + { + bufWidth = tbm_surface_get_width( tbmSurface ); + bufHeight = tbm_surface_get_height( tbmSurface ); + + if ( tbmSurface != mTbmSurface ) + { + // create a new image + NativeImageSourcePtr nativeImageSource = NativeImageSource::New( tbmSurface ); + mNativeImage = NativeImage::New( *nativeImageSource ); - mObjectView.SetImage( mNativeImage ); + mObjectView.SetImage( mNativeImage ); - mTbmSurface = tbmSurface; + mTbmSurface = tbmSurface; + } + } + else + { + DALI_LOG_INFO( gPepperObjectLogging, Debug::General, "Object::AttchBuffer: Failed to get buffer\n" ); + return false; + } } if( ( mWidth != bufWidth ) || ( mHeight != bufHeight ) ) @@ -272,6 +274,7 @@ void Object::OnDestroySurface( pepper_event_listener_t* listener, pepper_object_ object->mObjectViewDeletedSignal.Emit( handle, object->mObjectView ); object->mSurface = NULL; + object->mTbmSurface = NULL; if( object->mSurfaceDestroyListener ) { @@ -289,6 +292,7 @@ void Object::OnDestroyBuffer( pepper_event_listener_t* listener, pepper_object_t pepper_event_listener_remove( object->mBufferDestroyListener ); } +#if 0 if( object->mShmBuffer ) { void* shmData = wl_shm_buffer_get_data( object->mShmBuffer ); @@ -305,6 +309,7 @@ void Object::OnDestroyBuffer( pepper_event_listener_t* listener, pepper_object_t else if( object->mTbmSurface ) { } +#endif } } // namespace Internal