Fix rendering update
authorSangjin Lee <lsj119@samsung.com>
Sun, 15 Nov 2015 06:50:46 +0000 (15:50 +0900)
committerSangjin Lee <lsj119@samsung.com>
Sun, 15 Nov 2015 06:57:31 +0000 (15:57 +0900)
Change-Id: I91e5ce320a602d4730fbaf710c99502c396f0c0a
Signed-off-by: Sangjin Lee <lsj119@samsung.com>
src/examples/Makefile.am
src/examples/pepper_efl_simple.c [new file with mode: 0644]
src/examples/thread_sample.c [changed mode: 0755->0644]
src/examples/touch_sample.c [changed mode: 0755->0644]
src/lib/input.c [changed mode: 0755->0644]
src/lib/object.c [changed mode: 0755->0644]
src/lib/output.c

index baa116469b969d4d57d7fb78075034b8ff8745c7..026081ecdb3fcfcfdc21263daf185cd4bb0cf72c 100644 (file)
@@ -19,7 +19,7 @@ entry_sample_CFLAGS = @ELEMENTARY_CFLAGS@
 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 =                            \
@@ -31,3 +31,13 @@ pepper_efl_example_LDADD =                           \
        $(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@
+
diff --git a/src/examples/pepper_efl_simple.c b/src/examples/pepper_efl_simple.c
new file mode 100644 (file)
index 0000000..9b5ed5f
--- /dev/null
@@ -0,0 +1,97 @@
+#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()
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index 5ade00e4934cd009af3ef60c1669a832d267f9d3..2aeed06e76ca2045e942af52bd5bfdc18ad96988 100644 (file)
@@ -90,13 +90,7 @@ _pepper_efl_output_assign_planes(void *o, const pepper_list_t *view_list)
 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
@@ -104,14 +98,12 @@ _pepper_efl_output_cb_render_post(void *data, Evas *e EINA_UNUSED, void *event_i
 {
    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
@@ -219,7 +211,7 @@ pepper_efl_output_create(pepper_efl_comp_t *comp, Evas_Object *win)
    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");