src/bin/e_wtz_shell.h \
src/bin/e_device.h \
src/bin/e_input_event.h \
-src/bin/e_single_pixel_buffer.h \
src/bin/e_blender.h
enlightenment_src = \
src/bin/e_wtz_shell.c \
src/bin/e_device.c \
src/bin/e_input_event.c \
-src/bin/e_single_pixel_buffer.c \
src/bin/e_comp_wl_buffer.c \
src/bin/e_compositor.c \
src/bin/e_blender.c \
#include <glib.h>
#include <libds/log.h>
+#include <libds/single_pixel_buffer_v1.h>
/* handle include for printing uint64_t */
#define __STDC_FORMAT_MACROS
e_comp_wl_renderer_init();
_e_comp_wl_move_resize_init();
e_presentation_time_init();
- e_single_pixel_buffer_manager_init();
+ ds_single_pixel_buffer_manager_v1_create(e_comp_wl->wl.disp);
e_blender_init();
if (!e_foreign_global_init(e_comp_wl->wl.disp))
_e_comp_wl_gl_shutdown();
e_blender_shutdown();
- e_single_pixel_buffer_manager_shutdown();
e_presentation_time_shutdown();
e_comp_wl_renderer_shutdown();
e_comp_wl_capture_shutdown();
uint32_t busy;
E_Explicit_Sync_Buffer_Release *buffer_release;
- E_Single_Pixel_Buffer *single_pixel_buffer;
};
struct _E_Comp_Wl_Buffer_Ref
+#include <libds/single_pixel_buffer_v1.h>
+
#include "e_comp_wl_private.h"
typedef struct _E_Buffer E_Buffer;
return &buffer->base;
}
+EINTERN void *
+e_comp_wl_buffer_single_pixel_buffer_data_get(E_Comp_Wl_Buffer *comp_buffer)
+{
+ E_Buffer *buffer;
+ uint32_t format;
+ size_t stride;
+ void *data;
+
+ EINA_SAFETY_ON_NULL_RETURN_VAL(comp_buffer, NULL);
+ EINA_SAFETY_ON_FALSE_RETURN_VAL(comp_buffer->type == E_COMP_WL_BUFFER_TYPE_SINGLE_PIXEL, NULL);
+
+ buffer = _e_buffer_from_base(comp_buffer);
+ EINA_SAFETY_ON_NULL_RETURN_VAL(buffer, NULL);
+
+ if (!ds_buffer_begin_data_ptr_access(buffer->ds_buffer,
+ DS_BUFFER_DATA_PTR_ACCESS_READ,
+ &data, &format, &stride))
+ {
+ ERR("Could not access data of buffer(%p)", buffer);
+ return NULL;
+ }
+
+ ds_buffer_end_data_ptr_access(buffer->ds_buffer);
+
+ return data;
+}
+
static void
_e_comp_wl_buffer_ref(E_Comp_Wl_Buffer *base)
{
}
static Eina_Bool
-_e_comp_wl_buffer_init(E_Comp_Wl_Buffer *base, struct wl_resource *resource, E_Client *ec)
+_e_comp_wl_buffer_init(E_Comp_Wl_Buffer *base, struct ds_buffer *ds_buffer, E_Client *ec)
{
struct wl_shm_buffer *shmbuff;
- E_Single_Pixel_Buffer *single_pixel_buffer;
+ struct wl_resource *resource;
Eina_Bool res;
+ resource = ds_buffer_get_resource(ds_buffer);
shmbuff = wl_shm_buffer_get(resource);
if (shmbuff)
{
if (!base->type)
{
- single_pixel_buffer = e_single_pixel_buffer_manager_buffer_get(resource);
- if (single_pixel_buffer)
+ if (ds_single_pixel_buffer_v1_from_buffer(ds_buffer))
{
base->type = E_COMP_WL_BUFFER_TYPE_SINGLE_PIXEL;
base->w = 1;
base->h = 1;
base->format = WL_SHM_FORMAT_ARGB8888;
- base->single_pixel_buffer = single_pixel_buffer;
}
}
buffer->ds_buffer = ds_buffer;
- buffer_resource = ds_buffer_get_resource(ds_buffer);
- if (!_e_comp_wl_buffer_init(&buffer->base, buffer_resource, ec))
+ if (!_e_comp_wl_buffer_init(&buffer->base, ds_buffer, ec))
{
free(buffer);
return NULL;
}
+ buffer_resource = ds_buffer_get_resource(ds_buffer);
buffer->base.destroy_listener.notify = _e_buffer_cb_resource_destroy;
wl_resource_add_destroy_listener(buffer_resource, &buffer->base.destroy_listener);
#define E_COMP_WL_BUFFER_H
#include <libds/types/ds_buffer.h>
+#include "e_comp_wl.h"
EINTERN E_Comp_Wl_Buffer *e_comp_wl_buffer_get(struct ds_buffer *ds_buffer, E_Client *ec);
+EINTERN void *e_comp_wl_buffer_single_pixel_buffer_data_get(E_Comp_Wl_Buffer *buffer);
#endif
#include "e_comp_wl_tizen_hwc.h"
#include "e_comp_wl_renderer.h"
#include "e_map.h"
-#include "e_single_pixel_buffer.h"
#include "e_blender.h"
#include "e.h"
#include "e_comp_wl.h"
+#include "e_comp_wl_buffer.h"
#include <wayland-tbm-server.h>
#include <tizen-extension-server-protocol.h>
#include <tizen-surface-server-protocol.h>
E_Comp_Wl_Buffer *buffer = NULL;
struct wl_shm_buffer *shm_buffer = NULL;
int bw, bh;
+ void *data;
if (!cp)
{
cp->w = 1;
cp->h = 1;
cp->image_argb = EINA_TRUE;
- cp->single_pixel = buffer->single_pixel_buffer->data;
- cp->data = &cp->single_pixel;
+ data = e_comp_wl_buffer_single_pixel_buffer_data_get(buffer);
+ if (data)
+ {
+ cp->single_pixel = *((uint32_t *)data);
+ cp->data = &cp->single_pixel;
+ }
cp->shm_buffer = NULL;
}
else
+++ /dev/null
-#include "e.h"
-#include <single-pixel-buffer-v1-server-protocol.h>
-
-static E_Single_Pixel_Buffer_Manager *_single_pixel_buffer_mgr = NULL;
-
-static void
-_single_pixel_buffer_manager_destroy(struct wl_client *client, struct wl_resource *resource)
-{
- wl_resource_destroy(resource);
-}
-
-static void
-_single_pixel_buffer_cb_resource_destroy(struct wl_resource *resource)
-{
- E_Single_Pixel_Buffer *single_pixel_buffer;
-
- single_pixel_buffer = wl_resource_get_user_data(resource);
- if (!single_pixel_buffer) return;
-
- free(single_pixel_buffer);
-}
-
-static void
-_single_pixel_buffer_destroy(struct wl_client *client, struct wl_resource *resource)
-{
- wl_resource_destroy(resource);
-}
-
-static const struct wl_buffer_interface single_pixel_buffer_implementation = {
- _single_pixel_buffer_destroy,
-};
-
-static void
-_single_pixel_buffer_manager_create_u32_rgba_buffer(struct wl_client *client,
- struct wl_resource *resource,
- uint32_t id,
- uint32_t r,
- uint32_t g,
- uint32_t b,
- uint32_t a)
-{
- E_Single_Pixel_Buffer *single_pixel_buffer;
-
- single_pixel_buffer = E_NEW(E_Single_Pixel_Buffer, 1);
- if (!single_pixel_buffer)
- {
- wl_client_post_no_memory(client);
- return;
- }
-
- single_pixel_buffer->buffer = wl_resource_create(client, &wl_buffer_interface, 1, id);
- if (!single_pixel_buffer->buffer)
- {
- free(single_pixel_buffer);
- wl_client_post_no_memory(client);
- return;
- }
-
- wl_resource_set_implementation(single_pixel_buffer->buffer, &single_pixel_buffer_implementation,
- single_pixel_buffer, _single_pixel_buffer_cb_resource_destroy);
-
- single_pixel_buffer->r = r;
- single_pixel_buffer->g = g;
- single_pixel_buffer->b = b;
- single_pixel_buffer->a = a;
-
- single_pixel_buffer->data = (((uint32_t)((a / (double)0xffffffff) * 255)) << 24) |
- (((uint32_t)((r / (double)0xffffffff) * 255)) << 16) |
- (((uint32_t)((g / (double)0xffffffff) * 255)) << 8) |
- ((uint32_t)((b / (double)0xffffffff) * 255));
-
- ELOGF("SPBUF", "Create Single Pixel Buffer:%p r(%x) g(%x) b(%x) a(%x) data(%x)",
- NULL, single_pixel_buffer, r, g, b, a, single_pixel_buffer->data);
-}
-
-static const struct wp_single_pixel_buffer_manager_v1_interface single_pixel_buffer_manager_implementation = {
- _single_pixel_buffer_manager_destroy,
- _single_pixel_buffer_manager_create_u32_rgba_buffer
-};
-
-static void
-_single_pixel_buffer_manager_cb_bind(struct wl_client *client, void *data, uint32_t version, uint32_t id)
-{
- struct wl_resource *resource;
-
- resource = wl_resource_create(client, &wp_single_pixel_buffer_manager_v1_interface, version, id);
- if (!resource)
- {
- wl_client_post_no_memory(client);
- return;
- }
-
- wl_resource_set_implementation(resource, &single_pixel_buffer_manager_implementation,
- NULL, NULL);
-}
-
-EINTERN Eina_Bool
-e_single_pixel_buffer_manager_init(void)
-{
- E_Single_Pixel_Buffer_Manager *single_pixel_buffer_mgr;
-
- EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl, EINA_FALSE);
- EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl->wl.disp, EINA_FALSE);
-
- if (_single_pixel_buffer_mgr) return EINA_TRUE;
-
- single_pixel_buffer_mgr = E_NEW(E_Single_Pixel_Buffer_Manager, 1);
- EINA_SAFETY_ON_NULL_GOTO(single_pixel_buffer_mgr, fail);
-
- single_pixel_buffer_mgr->global = wl_global_create(e_comp_wl->wl.disp,
- &wp_single_pixel_buffer_manager_v1_interface,
- 1,
- NULL,
- _single_pixel_buffer_manager_cb_bind);
- EINA_SAFETY_ON_NULL_GOTO(single_pixel_buffer_mgr->global, fail);
-
- _single_pixel_buffer_mgr = single_pixel_buffer_mgr;
-
- return EINA_TRUE;
-
-fail:
- if (single_pixel_buffer_mgr)
- free(single_pixel_buffer_mgr);
-
- return EINA_FALSE;
-}
-
-EINTERN void
-e_single_pixel_buffer_manager_shutdown(void)
-{
- E_Single_Pixel_Buffer_Manager *single_pixel_buffer_mgr;
-
- single_pixel_buffer_mgr = _single_pixel_buffer_mgr;
- if (!single_pixel_buffer_mgr) return;
-
- wl_global_destroy(single_pixel_buffer_mgr->global);
- free(single_pixel_buffer_mgr);
-
- _single_pixel_buffer_mgr = NULL;
-}
-
-EINTERN E_Single_Pixel_Buffer *
-e_single_pixel_buffer_manager_buffer_get(struct wl_resource *resource)
-{
- EINA_SAFETY_ON_NULL_RETURN_VAL(resource, NULL);
-
- if (wl_resource_instance_of(resource, &wl_buffer_interface,
- &single_pixel_buffer_implementation))
- return wl_resource_get_user_data(resource);
- else
- return NULL;
-}
+++ /dev/null
-#ifdef E_TYPEDEFS
-
-typedef struct _E_Single_Pixel_Buffer_Manager E_Single_Pixel_Buffer_Manager;
-typedef struct _E_Single_Pixel_Buffer E_Single_Pixel_Buffer;
-
-#else
-#ifndef E_SINGLE_PIXEL_BUFFER_H
-#define E_SINGLE_PIXEL_BUFFER_H
-
-struct _E_Single_Pixel_Buffer_Manager
-{
- struct wl_global *global;
-};
-
-struct _E_Single_Pixel_Buffer
-{
- struct wl_resource *buffer;
-
- uint32_t r;
- uint32_t g;
- uint32_t b;
- uint32_t a;
-
- uint32_t data;
-};
-
-EINTERN Eina_Bool e_single_pixel_buffer_manager_init(void);
-EINTERN void e_single_pixel_buffer_manager_shutdown(void);
-
-EINTERN E_Single_Pixel_Buffer *e_single_pixel_buffer_manager_buffer_get(struct wl_resource *resource);
-
-#endif // E_SINGLE_PIXEL_BUFFER_H
-#endif