entry_sample_LDADD = @ELEMENTARY_LIBS@
-bin_PROGRAMS = pepper_efl_example
+bin_PROGRAMS = pepper_efl_example pepper_efl_simple
pepper_efl_example_SOURCES = pepper_efl_example.c
pepper_efl_example_CFLAGS = \
$(top_builddir)/src/lib/libpepper-efl.la \
@ELEMENTARY_LIBS@
+pepper_efl_simple_SOURCES = pepper_efl_simple.c
+pepper_efl_simple_CFLAGS = \
+ -I$(top_builddir)/src/lib/ \
+ -DDATA_PATH=\"$(datafilesdir)\" \
+ -DSAMPLE_PATH=\"$(widgets_bindir)\" \
+ @ELEMENTARY_CFLAGS@
+pepper_efl_simple_LDADD = \
+ $(top_builddir)/src/lib/libpepper-efl.la \
+ @ELEMENTARY_LIBS@
+
--- /dev/null
+#include <Elementary.h>
+#include "Pepper_Efl.h"
+
+#define WIDTH 1920
+#define HEIGHT 1080
+
+typedef struct
+{
+ Evas_Object *win;
+} app_data;
+
+static void
+_close_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ elm_exit();
+}
+
+static void
+_add_object_cb (void *data, Evas_Object *obj, void *event_info)
+{
+ Evas_Coord x, y, w,h;
+ Evas_Object *img = event_info;
+ app_data *d = data;
+
+ evas_object_geometry_get(img, &x, &y, &w, &h);
+ fprintf(stderr, "[ECOMP] _add_object_cb %p(%dx%d+%d+%d)\n",w, h, x, y);
+
+ x = rand()%(WIDTH-w);
+ y = rand()%(HEIGHT-h);
+ evas_object_move(img, x, y);
+ evas_object_show(img);
+}
+
+static void
+_del_object_cb(void *d, Evas_Object *obj, void *event_info)
+{
+ Evas_Object *img = event_info;
+ if (img)
+ {
+ fprintf(stderr,"[ECOMP] _del_object_cb %p\n", img);
+ }
+ evas_object_del(img);
+}
+
+static Evas_Object *
+elm_win_create(const char *name, int w, int h)
+{
+ Evas_Object *win, *bg;
+
+ win = elm_win_add(NULL, name, ELM_WIN_BASIC);
+ elm_win_autodel_set(win, EINA_TRUE);
+
+ bg = elm_bg_add(win);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, bg);
+ evas_object_show(bg);
+
+ evas_object_resize(win, w, h);
+ evas_object_show(win);
+
+ return win;
+}
+
+EAPI_MAIN int
+elm_main(int argc EINA_UNUSED, char *argv[] EINA_UNUSED)
+{
+ app_data *d;
+ Evas_Object *win;
+ const char *comp_name;
+ char border_path[64];
+ int ret = EXIT_FAILURE;
+ int i, j;
+
+ d = calloc(1, sizeof(app_data));
+
+ elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
+ win = elm_win_create("Pepper EFL Test", WIDTH, HEIGHT);
+ evas_object_show(win);
+
+ /* init */
+ d->win = win;
+
+ /* pepper_efl init */
+ comp_name = pepper_efl_compositor_create(win, "pepper-efl");
+ if (!comp_name)
+ return ret;
+ fprintf(stderr, "display name:%s\n", comp_name);
+
+ evas_object_smart_callback_add(win, PEPPER_EFL_OBJ_ADD, _add_object_cb, d);
+ evas_object_smart_callback_add(win, PEPPER_EFL_OBJ_DEL, _del_object_cb, NULL);
+
+ elm_run();
+
+ pepper_efl_compositor_destroy(comp_name);
+ return ret;
+}
+ELM_MAIN()
static void
_pepper_efl_output_start_repaint_loop(void *o)
{
- pepper_efl_output_t *output = o;
- struct timespec ts;
-
DBG("callback start repaint loop");
-
- pepper_compositor_get_time(output->comp->pepper.comp, &ts);
- pepper_output_finish_frame(output->base, &ts);
}
static void
{
pepper_efl_output_t *output = data;
pepper_efl_surface_t *es;
+ struct timespec ts;
DBG("render post");
- // FIXME: I'm not sure why this do twice both in output_repaint and render_post,
- // but if we remove it, then the client commiting only once when launched
- // couldn't update image.
- EINA_LIST_FREE(output->update_list, es)
- pepper_efl_object_render(es->obj);
+ pepper_compositor_get_time(output->comp->pepper.comp, &ts);
+ pepper_output_finish_frame(output->base, &ts);
}
static void
output->bpp = 32;
output->stride = output->w * (output->bpp / 8);
output->base = pepper_compositor_add_output(comp->pepper.comp,
- &output_interface, "efl", output);
+ &output_interface, "efl", output, WL_OUTPUT_TRANSFORM_NORMAL, 1);
if (!output->base)
{
ERR("failed add output to compositor");