e_output_capture: add sync flag. 07/156807/3
authorJunkyeong Kim <jk0430.kim@samsung.com>
Fri, 20 Oct 2017 05:05:34 +0000 (14:05 +0900)
committerSooChan Lim <sc1.lim@samsung.com>
Fri, 20 Oct 2017 05:39:32 +0000 (05:39 +0000)
Change-Id: I15f5c201718a8f52d81d0d41cb6a69af4a8ec285
Signed-off-by: Junkyeong Kim <jk0430.kim@samsung.com>
src/bin/e_comp_wl_screenshooter.c
src/bin/e_info_server.c
src/bin/e_output.c
src/bin/e_output.h

index 27b0746..509940f 100644 (file)
@@ -829,7 +829,7 @@ _e_screenshooter_cb_shoot(struct wl_client *client,
 
    e_comp_wl_video_buffer_clear(vbuf);
 
-   ret = e_output_capture(mirror->e_output, vbuf->tbm_surface, screenshot_auto_rotation, _e_output_capture_oneshot_cb, buffer);
+   ret = e_output_capture(mirror->e_output, vbuf->tbm_surface, screenshot_auto_rotation, EINA_FALSE, _e_output_capture_oneshot_cb, buffer);
    if (ret) return;
    else ERR("capture fail");
 
index 8798c33..e4d2e74 100644 (file)
@@ -3797,7 +3797,7 @@ _e_info_server_cb_screen_dump(const Eldbus_Service_Interface *iface EINA_UNUSED,
      }
    strncpy(path_backup, path, PATH_MAX);
 
-   ret = e_output_capture(eout, surface, EINA_FALSE, _e_info_server_cb_screen_dump_cb, path_backup);
+   ret = e_output_capture(eout, surface, EINA_FALSE, EINA_TRUE, _e_info_server_cb_screen_dump_cb, path_backup);
    if (ret)
      return reply;
    else
index f95b5a7..c327b2f 100644 (file)
@@ -2612,7 +2612,7 @@ e_output_hook_del(E_Output_Hook *ch)
 }
 
 EINTERN Eina_Bool
-e_output_capture(E_Output *output, tbm_surface_h tsurface, Eina_Bool auto_rotate, E_Output_Capture_Cb func, void *data)
+e_output_capture(E_Output *output, tbm_surface_h tsurface, Eina_Bool auto_rotate, Eina_Bool sync, E_Output_Capture_Cb func, void *data)
 {
    Eina_Bool ret = EINA_FALSE;
    tdm_capture *tcapture = NULL;
@@ -2623,6 +2623,17 @@ e_output_capture(E_Output *output, tbm_surface_h tsurface, Eina_Bool auto_rotate
         return EINA_TRUE;
      }
 
+   if (sync)
+     {
+       ret = _e_output_capture(output, tsurface, auto_rotate);
+       EINA_SAFETY_ON_FALSE_GOTO(ret == EINA_TRUE, fail);
+
+       DBG("capture done(%p)", tsurface);
+       func(output, tsurface, data);
+
+       return EINA_TRUE;
+     }
+
    tcapture = _e_output_tdm_capture_create(output, TDM_CAPTURE_CAPABILITY_ONESHOT);
    if (tcapture)
      {
index 1bc0d6f..ea4a83b 100644 (file)
@@ -136,7 +136,7 @@ EINTERN E_Plane         * e_output_default_fb_target_get(E_Output *output);
 EINTERN Eina_Bool         e_output_fake_config_set(E_Output *output, int w, int h);
 EINTERN Eina_Bool         e_output_zoom_set(E_Output *output, double zoomx, double zoomy, int cx, int cy);
 EINTERN void              e_output_zoom_unset(E_Output *output);
-EINTERN Eina_Bool         e_output_capture(E_Output *output, tbm_surface_h surface, Eina_Bool auto_rotate, E_Output_Capture_Cb func, void *data);
+EINTERN Eina_Bool         e_output_capture(E_Output *output, tbm_surface_h surface, Eina_Bool auto_rotate, Eina_Bool sync, E_Output_Capture_Cb func, void *data);
 EINTERN Eina_Bool         e_output_stream_capture_queue(E_Output *output, tbm_surface_h surface, E_Output_Capture_Cb func, void *data);
 EINTERN Eina_Bool         e_output_stream_capture_dequeue(E_Output *output, tbm_surface_h surface);
 EINTERN Eina_Bool         e_output_stream_capture_start(E_Output *output);