BuildRequires: pkgconfig(xkbcommon)
BuildRequires: pkgconfig(tizen-extension-client)
BuildRequires: pkgconfig(ecore-wayland)
+BuildRequires: pkgconfig(wayland-tbm-server)
+BuildRequires: pkgconfig(wayland-tbm-client)
Requires: libwayland-extension-server
%description
%prep
%setup -q
cp %{SOURCE1001} .
-
+
%build
%autogen --enable-examples
make %{?_smp_mflags}
%files -n %{name}
%manifest %{name}.manifest
%defattr(-,root,root,-)
-%dir %{_includedir}/pepper-efl/
-%{_includedir}/pepper-efl/*.h
+%dir %{_includedir}/pepper-efl/
+%{_includedir}/pepper-efl/*.h
%{_libdir}/libpepper-efl.so.*
%{_libdir}/libpepper-efl.so
%{_libdir}/pkgconfig/libpepper-efl.pc
_pepper_efl_object_cb_buffer_destroy(pepper_event_listener_t *listener EINA_UNUSED, pepper_object_t *object EINA_UNUSED, uint32_t id EINA_UNUSED, void *info EINA_UNUSED, void *data)
{
pepper_efl_object_t *po = data;
- void *shm_data;
DBG("[OBJECT] Buffer destroy: obj %p", po->smart_obj);
po->es = NULL;
po->surface = NULL;
+ po->tbm_surface = NULL;
PE_FREE_FUNC(po->surface_destroy_listener, pepper_event_listener_remove);
}
{
pepper_efl_object_t *po;
pepper_buffer_t *buffer;
- struct wl_shm_buffer *shm_buffer;
+ struct wl_shm_buffer *shm_buffer = NULL;
struct wl_resource *buf_res;
+ tbm_surface_h tbm_surface = NULL;
int bw, bh;
po = evas_object_smart_data_get(obj);
_pepper_efl_object_cb_buffer_destroy, po);
buf_res = pepper_buffer_get_resource(buffer);
- shm_buffer = wl_shm_buffer_get(buf_res);
- if (!shm_buffer)
- {
- ERR("[OBJECT] Failed to get shm_buffer");
- return EINA_FALSE;
- }
- po->shm_buffer = shm_buffer;
+ if ((shm_buffer = wl_shm_buffer_get(buf_res)))
+ {
+ po->shm_buffer = shm_buffer;
- bw = wl_shm_buffer_get_width(shm_buffer);
- bh = wl_shm_buffer_get_height(shm_buffer);
+ bw = wl_shm_buffer_get_width(shm_buffer);
+ bh = wl_shm_buffer_get_height(shm_buffer);
- if ((po->w != bw) || (po->h != bh))
+ if ((po->w != bw) || (po->h != bh))
+ {
+ po->w = bw;
+ po->h = bh;
+ evas_object_resize(obj, bw, bh);
+ }
+ }
+ else if ((tbm_surface = wayland_tbm_server_get_surface(NULL, buf_res)))
{
- po->w = bw;
- po->h = bh;
- evas_object_resize(obj, bw, bh);
+ po->tbm_surface = tbm_surface;
+
+ bw = tbm_surface_get_width(tbm_surface);
+ bh = tbm_surface_get_height(tbm_surface);
+
+ if ((po->w != bw) || (po->h != bh))
+ {
+ po->w = bw;
+ po->h = bh;
+ evas_object_resize(obj, bw, bh);
+ }
+ }
+ else
+ {
+ ERR("[OBJECT] Failed to get buffer");
+ return EINA_FALSE;
}
// first attach
DBG("[OBJECT] Render: obj %p", obj);
// FIXME: just mark dirty here, and set the data in pixels_get callback.
- evas_object_image_size_set(po->img, po->w, po->h);
- evas_object_image_data_set(po->img, wl_shm_buffer_get_data(po->shm_buffer));
- evas_object_image_data_update_add(po->img, 0, 0, po->w, po->h);
+ if (po->shm_buffer)
+ {
+ evas_object_image_size_set(po->img, po->w, po->h);
+ evas_object_image_data_set(po->img, wl_shm_buffer_get_data(po->shm_buffer));
+ evas_object_image_data_update_add(po->img, 0, 0, po->w, po->h);
+ }
+ else if(po->tbm_surface)
+ {
+ Evas_Native_Surface ns;
+
+ ns.version = EVAS_NATIVE_SURFACE_VERSION;
+ ns.type = EVAS_NATIVE_SURFACE_TBM;
+ ns.data.tbm.buffer = po->tbm_surface;
+
+ evas_object_image_size_set(po->img, po->w, po->h);
+ evas_object_image_native_surface_set(po->img, &ns);
+ evas_object_image_data_update_add(po->img, 0, 0, po->w, po->h);
+ }
}
pid_t