#include <widget_instance.h>
#include <tzplatform_config.h>
#include <wayland-extension/tizen-extension-client-protocol.h>
-#include <aul_rsm_viewer.h>
namespace Dali
{
DALI_TYPE_REGISTRATION_END()
-static Eina_Bool OnKeyDown( void* data, int type, void* eventInfo )
+static void OnBufferChanged( struct tizen_remote_surface *surface, uint32_t type, struct wl_buffer *buffer,
+ int32_t img_file_fd, uint32_t img_file_size, uint32_t time, struct wl_array *keys, void *data)
{
- Ecore_Event_Key *event = static_cast< Ecore_Event_Key* >( eventInfo );
- tizen_remote_surface* surface = static_cast< tizen_remote_surface* >( data );
-
- tizen_remote_surface_transfer_key_event( surface,
- TIZEN_REMOTE_SURFACE_EVENT_TYPE_KEY_DOWN,
- event->keycode,
- ecore_device_class_get(event->dev),
- ecore_device_subclass_get(event->dev),
- ecore_device_identifier_get(event->dev),
- event->timestamp
- );
+ Dali::WidgetView::Internal::WidgetView* widgetView = static_cast< Dali::WidgetView::Internal::WidgetView* >( data );
- return EINA_TRUE;
-}
+ if( widgetView )
+ {
+ if( !widgetView->IsWidgetImageView() )
+ {
+ tizen_remote_surface_transfer_visibility( surface, TIZEN_REMOTE_SURFACE_VISIBILITY_TYPE_VISIBLE);
-static Eina_Bool OnKeyUp(void* data, int type, void* eventInfo)
-{
- Ecore_Event_Key *event = static_cast< Ecore_Event_Key* >( eventInfo );
- tizen_remote_surface* surface = static_cast< tizen_remote_surface* >( data );
+ widgetView->CreateWidgetImageView();
+ widgetView->ConnectSignal( surface );
+ }
- tizen_remote_surface_transfer_key_event( surface,
- TIZEN_REMOTE_SURFACE_EVENT_TYPE_KEY_UP,
- event->keycode,
- ecore_device_class_get(event->dev),
- ecore_device_subclass_get(event->dev),
- ecore_device_identifier_get(event->dev),
- event->timestamp
- );
- return EINA_TRUE;
+ //get tbm surface from buffer
+ tbm_surface_h tbmSurface = static_cast< tbm_surface_h >( wl_buffer_get_user_data( buffer ) );
+ widgetView->UpdateImageSource( tbmSurface );
+ }
}
-static void OnSurfaceUpdate( struct tizen_remote_surface* surface, wl_buffer* buffer, uint32_t time, void* data )
+static void OnBufferUpdated( struct tizen_remote_surface* surface, wl_buffer* buffer, uint32_t time, void* data )
{
Dali::WidgetView::Internal::WidgetView* widgetView = static_cast< Dali::WidgetView::Internal::WidgetView* >( data );
widgetView->CreateWidgetImageView();
widgetView->ConnectSignal( surface );
- ecore_event_handler_add( ECORE_EVENT_KEY_DOWN, OnKeyDown, surface );
- ecore_event_handler_add( ECORE_EVENT_KEY_UP, OnKeyUp, surface );
}
//get tbm surface from buffer
static void OnSurfaceMissing( struct tizen_remote_surface* surface, void* data )
{
- //ToDo: WidgetDeletedSignal
-}
-
+ Dali::WidgetView::Internal::WidgetView* widgetView = static_cast< Dali::WidgetView::Internal::WidgetView* >( data );
-static struct aul_rsm_handler_s remoteSurfaceHandler = {
- OnSurfaceUpdate,
- OnSurfaceMissing,
-};
+ if( widgetView )
+ {
+ widgetView->CloseRemoteSurface();
+ }
+}
} // unnamed namespace
mInstanceId(),
mContentInfo(),
mTitle(),
- mBundle( NULL ),
mWidth( 0 ),
mHeight( 0 ),
mPid( 0 ),
mUpdatePeriod( 0.0 ),
mPreviewVisible( true ),
mStateTextVisible( true ),
- mPermanentDelete( true ),
+ mPermanentDelete( false ),
+ mWatcherHandle( NULL ),
mRemoteSurface( NULL )
{
}
mInstanceId(),
mContentInfo( contentInfo ),
mTitle(),
- mBundle( NULL ),
mWidth( width ),
mHeight( height ),
mPid( 0 ),
mUpdatePeriod( updatePeriod ),
mPreviewVisible( true ),
mStateTextVisible( true ),
- mPermanentDelete( true ),
+ mPermanentDelete( false ),
+ mWatcherHandle( NULL ),
mRemoteSurface( NULL )
{
}
widget_instance_destroy( mInstanceId.c_str() );
}
}
-
- if( mBundle )
- {
- bundle_free( mBundle );
- }
}
bool WidgetView::PauseWidget()
Self().Add( mWidgetImageView );
+ //EFL app should be pre multiplied image.
+ mWidgetImageView.SetProperty( Toolkit::ImageView::Property::PRE_MULTIPLIED_ALPHA, true );
+
// Disable preview and text
if( mPreviewVisible )
{
char* previewPath = NULL;
std::string previewImage;
widget_size_type_e sizeType;
+ screen_connector_watcher_ops ops;
int ret = widget_instance_create( mWidgetId.c_str(), &instanceId );
if( ret < 0 || !instanceId )
mPreviewImage.SetSize( mWidth, mHeight );
}
- Self().SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS );
+ Self().SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
+ Self().SetSize( mWidth, mHeight );
+
Self().Add( mPreviewImage );
// State text
return;
}
- aul_rsm_viewer_set_surface_handler( mInstanceId.c_str(), &remoteSurfaceHandler, this );
-
+ ops.change_cb = OnBufferChanged;
+ ops.missing_cb = OnSurfaceMissing;
+ ops.update_cb = OnBufferUpdated;
+ mWatcherHandle = screen_connector_watcher_add(&ops, (char *)mWidgetId.c_str(), this);
DALI_LOG_INFO( gWidgetViewLogging, Debug::Verbose, "WidgetView::OnInitialize: widget_instance_launch is called. [%s, mPid = %d]\n", mWidgetId.c_str(), mPid );
}
void WidgetView::ConnectSignal( tizen_remote_surface* surface )
{
- if( mWidgetImageView )
+ if( mWidgetImageView && surface )
{
mRemoteSurface = surface;
- mWidgetImageView.TouchSignal().Connect( this, &WidgetView::OnTouch );
- mWidgetImageView.WheelEventSignal().Connect( this, &WidgetView::OnWheelEvent );
+
+ Self().TouchSignal().Connect( this, &WidgetView::OnTouch );
+ Self().WheelEventSignal().Connect( this, &WidgetView::OnWheelEvent );
}
}
{
tizen_remote_surface_event_type type = TIZEN_REMOTE_SURFACE_EVENT_TYPE_NONE;
- if( event.GetPointCount() == 0 )
+ if( event.GetPointCount() == 0 || mRemoteSurface == NULL )
{
return false;
}
bool WidgetView::OnWheelEvent( Dali::Actor actor, const Dali::WheelEvent& event )
{
+ if( mRemoteSurface == NULL )
+ {
+ return false;
+ }
//ToDo: We should check TIZEN_INPUT_DEVICE_CLAS_MOUSE
tizen_remote_surface_transfer_mouse_wheel( mRemoteSurface,
event.direction,
}
}
+void WidgetView::CloseRemoteSurface()
+{
+ screen_connector_watcher_remove( mWatcherHandle );
+ mRemoteSurface = NULL;
+}
+
} // namespace Internal
} // namespace WidgetView