waylandsink : change log level for crash analysis 87/163087/4
authorHyunil <hyunil46.park@samsung.com>
Thu, 7 Dec 2017 06:42:13 +0000 (15:42 +0900)
committerHyunil <hyunil46.park@samsung.com>
Thu, 7 Dec 2017 23:57:39 +0000 (08:57 +0900)
Change-Id: I8ef51e1a20648220f30939a6bbfcfed3810b7b68
Signed-off-by: Hyunil <hyunil46.park@samsung.com>
ext/wayland/gstwaylandsink.c
ext/wayland/wldisplay.c
ext/wayland/wlwindow.c

index e223b97..2f8d914 100755 (executable)
@@ -831,6 +831,9 @@ gst_wayland_sink_get_mm_video_buf (GstBuffer * buffer)
       mm_video_buf->handle.bo[0], mm_video_buf->handle.bo[1],
       mm_video_buf->handle.bo[2]);
   GST_DEBUG ("Number of TBM bo is %d", mm_video_buf->handle_num);
+  if (mm_video_buf->handle_num == 0) {
+    GST_ERROR ("Number of TBM bo is %d", mm_video_buf->handle_num);
+  }
   GST_DEBUG ("Number of plane is %d", mm_video_buf->plane_num);
   return mm_video_buf;
 }
@@ -1023,6 +1026,7 @@ gst_wayland_sink_set_property (GObject * object,
   GstWaylandSink *sink = GST_WAYLAND_SINK (object);
   FUNCTION;
   g_mutex_lock (&sink->render_lock);
+  GST_WARNING ("prop_id (%d)", prop_id);
 
   switch (prop_id) {
     case PROP_DISPLAY:
@@ -1035,7 +1039,7 @@ gst_wayland_sink_set_property (GObject * object,
       sink->dump_video = g_value_get_boolean (value);
       if (sink->display) {
         sink->display->dump_video = sink->dump_video;
-        GST_LOG ("Dump video set (%d):", sink->dump_video);
+        GST_WARNING ("Dump video set (%d):", sink->dump_video);
       }
       break;
     case PROP_DUMP_COUNT:
@@ -1045,6 +1049,7 @@ gst_wayland_sink_set_property (GObject * object,
       break;
     case PROP_DISABLE_OVERLAY:
       sink->disable_overlay = g_value_get_boolean (value);
+      GST_WARNING ("disable_overlay (%d)", sink->disable_overlay);
       if (sink->window && sink->display) {
         if (sink->disable_overlay) {
           g_clear_object (&sink->window);
@@ -1055,7 +1060,7 @@ gst_wayland_sink_set_property (GObject * object,
       break;
     case PROP_SIGNAL_HANDOFFS:
       sink->signal_handoffs = g_value_get_boolean (value);
-      GST_LOG ("set signal_handoffs(%d)", sink->signal_handoffs);
+      GST_WARNING ("set signal_handoffs(%d)", sink->signal_handoffs);
       if (sink->window) {
         if (sink->signal_handoffs) {
           /* overlay -> hand-off */
@@ -1082,11 +1087,11 @@ gst_wayland_sink_set_property (GObject * object,
       break;
     case PROP_KEEP_CAMERA_PREVIEW:
       sink->keep_camera_preview = g_value_get_boolean (value);
-      GST_LOG ("keep_camera_preview (%d)", sink->keep_camera_preview);
+      GST_WARNING ("keep_camera_preview (%d)", sink->keep_camera_preview);
       break;
     case PROP_USE_TBM:
       sink->USE_TBM = g_value_get_boolean (value);
-      GST_LOG ("1:USE TBM 0: USE SHM set(%d)", sink->USE_TBM);
+      GST_WARNING ("1:USE TBM 0: USE SHM set(%d)", sink->USE_TBM);
       break;
     case PROP_ROTATE_ANGLE:
       if (sink->rotate_angle == g_value_get_enum (value))
@@ -1303,7 +1308,7 @@ gst_wayland_sink_finalize (GObject * object)
 {
   GstWaylandSink *sink = GST_WAYLAND_SINK (object);
   FUNCTION;
-  GST_DEBUG_OBJECT (sink, "Finalizing the sink..");
+  GST_WARNING_OBJECT (sink, "Finalizing the sink..");
 
   if (sink->last_buffer)
     gst_buffer_unref (sink->last_buffer);
@@ -1472,15 +1477,15 @@ gst_wayland_sink_change_state (GstElement * element, GstStateChange transition)
 
   switch (transition) {
     case GST_STATE_CHANGE_NULL_TO_READY:
-      GST_LOG ("WAYLANDSINK TRANSITION: NULL_TO_READY");
+      GST_WARNING ("WAYLANDSINK TRANSITION: NULL_TO_READY");
       if (!gst_wayland_sink_find_display (sink))
         return GST_STATE_CHANGE_FAILURE;
       break;
     case GST_STATE_CHANGE_READY_TO_PAUSED:
-      GST_LOG ("WAYLANDSINK TRANSITION: READY_TO_PAUSED");
+      GST_WARNING ("WAYLANDSINK TRANSITION: READY_TO_PAUSED");
       break;
     case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
-      GST_LOG ("WAYLANDSINK TRANSITION: PAUSED_TO_PLAYING");
+      GST_WARNING ("WAYLANDSINK TRANSITION: PAUSED_TO_PLAYING");
       break;
     default:
       break;
@@ -1492,10 +1497,10 @@ gst_wayland_sink_change_state (GstElement * element, GstStateChange transition)
 
   switch (transition) {
     case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
-      GST_LOG ("WAYLANDSINK TRANSITION: PLAYING_TO_PAUSED");
+      GST_WARNING ("WAYLANDSINK TRANSITION: PLAYING_TO_PAUSED");
       break;
     case GST_STATE_CHANGE_PAUSED_TO_READY:
-      GST_LOG ("WAYLANDSINK TRANSITION: PAUSED_TO_READY");
+      GST_WARNING ("WAYLANDSINK TRANSITION: PAUSED_TO_READY");
 #ifdef TIZEN_FEATURE_WLSINK_ENHANCEMENT
       if (sink->keep_camera_preview) {
         if (sink->window) {
@@ -1516,17 +1521,17 @@ gst_wayland_sink_change_state (GstElement * element, GstStateChange transition)
       gst_buffer_replace (&sink->last_buffer, NULL);
       if (sink->window) {
         if (gst_wl_window_is_toplevel (sink->window)) {
-          GST_DEBUG ("internal window");
+          GST_WARNING ("internal window");
           g_clear_object (&sink->window);
         } else {
           /* remove buffer from surface, show nothing */
-          GST_DEBUG ("external window");
+          GST_WARNING ("external window");
           gst_wl_window_render (sink->window, NULL, NULL);
         }
       }
       break;
     case GST_STATE_CHANGE_READY_TO_NULL:
-      GST_LOG ("WAYLANDSINK TRANSITION: READY_TO_NULL");
+      GST_WARNING ("WAYLANDSINK TRANSITION: READY_TO_NULL");
       g_mutex_lock (&sink->display_lock);
       /* If we had a toplevel window, we most likely have our own connection
        * to the display too, and it is a good idea to disconnect and allow
@@ -1696,7 +1701,7 @@ gst_wayland_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
 
   sink = GST_WAYLAND_SINK (bsink);
 
-  GST_DEBUG_OBJECT (sink, "set caps %" GST_PTR_FORMAT, caps);
+  GST_WARNING_OBJECT (sink, "set caps %" GST_PTR_FORMAT, caps);
 
   /* extract info from caps */
   if (!gst_video_info_from_caps (&info, caps))
@@ -1722,7 +1727,7 @@ gst_wayland_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
   /* verify we support the requested format */
 #ifdef TIZEN_FEATURE_WLSINK_ENHANCEMENT
   if (sink->USE_TBM) {
-    GST_LOG ("USE TBM FORMAT");
+    GST_WARNING ("USE TBM FORMAT");
     formats = sink->display->tbm_formats;
     for (i = 0; i < formats->len; i++) {
       if (g_array_index (formats, uint32_t, i) == tbm_format)
@@ -1912,7 +1917,7 @@ gst_wayland_sink_propose_allocation (GstBaseSink * bsink, GstQuery * query)
   gst_query_add_allocation_param (query, gst_wl_shm_allocator_get (), NULL);
 
   gst_structure_free (config);
-
+  GST_WARNING ("set propose allocation");
   return TRUE;
 }
 
@@ -1923,7 +1928,7 @@ gst_wayland_sink_preroll (GstBaseSink * bsink, GstBuffer * buffer)
   GstWaylandSink *sink = GST_WAYLAND_SINK (bsink);
   FUNCTION;
 
-  GST_DEBUG_OBJECT (bsink, "preroll buffer %p", buffer);
+  GST_WARNING_OBJECT (bsink, "preroll buffer %p", buffer);
 
   if (sink->signal_handoffs) {
     GST_LOG ("g_signal_emit: preroll-handoff");
@@ -2535,7 +2540,7 @@ gst_wayland_sink_set_wl_window_wl_surface_id (GstVideoOverlay * overlay,
   g_mutex_lock (&sink->render_lock);
   g_clear_object (&sink->window);
 
-  GST_LOG ("wl_surface_id %d %x", (int) wl_surface_id,
+  GST_WARNING ("wl_surface_id %d %x", (int) wl_surface_id,
       (guintptr) wl_surface_id);
 
   if (wl_surface_id) {
@@ -2615,7 +2620,7 @@ gst_wayland_sink_set_render_rectangle (GstVideoOverlay * overlay,
     return;
   }
 
-  GST_DEBUG_OBJECT (sink, "window geometry changed to (%d, %d) %d x %d",
+  GST_WARNING_OBJECT (sink, "window geometry changed to (%d, %d) %d x %d",
       x, y, w, h);
   if (gst_wl_window_set_render_rectangle (sink->window, x, y, w, h)) {
     sink->video_info_changed = TRUE;
index 7e9e39e..ad58c2c 100644 (file)
@@ -164,6 +164,7 @@ gst_wl_display_finalize (GObject * gobject)
     wl_display_flush (self->display);
     wl_display_disconnect (self->display);
   }
+  GST_WARNING ("wl_display finalize is done");
 
   G_OBJECT_CLASS (gst_wl_display_parent_class)->finalize (gobject);
 }
@@ -234,27 +235,27 @@ registry_handle_global (void *data, struct wl_registry *registry,
   if (g_strcmp0 (interface, "wl_compositor") == 0) {
     self->compositor = wl_registry_bind (registry, id, &wl_compositor_interface,
         MIN (version, 4));
-    GST_INFO
+    GST_WARNING
         ("wl_compositor@%p = wl_registry_bind (wl_registry@%p, id@%d, wl_compositor_interface@%p, version@%d)",
         self->compositor, registry, id, &wl_compositor_interface, MIN (version,
             4));
   } else if (g_strcmp0 (interface, "wl_subcompositor") == 0) {
     self->subcompositor =
         wl_registry_bind (registry, id, &wl_subcompositor_interface, 1);
-    GST_INFO
+    GST_WARNING
         ("wl_subcompositor@%p = wl_registry_bind (wl_registry@%p, id@%d, wl_subcompositor_interface@%p, version@%d)",
         self->subcompositor, registry, id, &wl_subcompositor_interface, 1);
   } else if (g_strcmp0 (interface, "wl_shell") == 0) {
     self->shell = wl_registry_bind (registry, id, &wl_shell_interface, 1);
-    GST_INFO
+    GST_WARNING
         ("wl_shell@%p = wl_registry_bind (wl_registry@%p, id@%d, wl_shell_interface@%p, version@%d)",
         self->shell, registry, id, &wl_shell_interface, 1);
   } else if (g_strcmp0 (interface, "wl_shm") == 0) {
     self->shm = wl_registry_bind (registry, id, &wl_shm_interface, 1);
-    GST_INFO
+    GST_WARNING
         ("wl_shm@%p = wl_registry_bind (wl_registry@%p, id@%d, wl_shm_interface@%p, version@%d)",
         self->shm, registry, id, &wl_shm_interface, 1);
-    GST_INFO
+    GST_WARNING
         ("wl_shm_add_listener (wl_shm@%p, wl_shm_listener@%p, GstWlDisplay@%p)",
         self->shm, &shm_listener, self);
     wl_shm_add_listener (self->shm, &shm_listener, self);
@@ -262,25 +263,25 @@ registry_handle_global (void *data, struct wl_registry *registry,
 
   } else if (g_strcmp0 (interface, "wl_scaler") == 0) {
     self->scaler = wl_registry_bind (registry, id, &wl_scaler_interface, 2);
-    GST_INFO
+    GST_WARNING
         ("wl_scaler@%p = wl_registry_bind (wl_registry@%p, id@%d, wl_scaler_interface@%p, version@%d)",
         self->scaler, registry, id, &wl_scaler_interface, 2);
 #ifdef TIZEN_FEATURE_WLSINK_ENHANCEMENT
   } else if (g_strcmp0 (interface, "tizen_policy") == 0) {
     self->tizen_policy =
         wl_registry_bind (registry, id, &tizen_policy_interface, 7);
-    GST_INFO
+    GST_WARNING
         ("tizen_policy@%p = wl_registry_bind (wl_registry@%p, id@%d, tizen_policy_interface@%p, version@%d)",
         self->tizen_policy, registry, id, &tizen_policy_interface, 7);
   } else if (g_strcmp0 (interface, "tizen_video") == 0) {
     self->tizen_video =
         wl_registry_bind (registry, id, &tizen_video_interface, version);
     g_return_if_fail (self->tizen_video != NULL);
-    GST_INFO
+    GST_WARNING
         ("tizen_video@%p = wl_registry_bind (wl_registry@%p, id@%d, tizen_video_interface@%p, version@%d)",
         self->tizen_video, registry, id, &tizen_video_interface, version);
 
-    GST_INFO
+    GST_WARNING
         ("tizen_video_add_listener (tizen_video@%p, tizen_video_listener@%p, GstWlDisplay@%p)",
         self->tizen_video, &tizen_video_listener, self);
     tizen_video_add_listener (self->tizen_video, &tizen_video_listener, self);
@@ -347,7 +348,7 @@ gst_wl_display_new (const gchar * name, GError ** error)
   FUNCTION;
 
   display = wl_display_connect (name);
-  GST_INFO ("wl_display@%p = wl_display_connect (name@%p)", display, name);
+  GST_WARNING ("wl_display@%p = wl_display_connect (name@%p)", display, name);
   if (!display) {
     *error = g_error_new (g_quark_from_static_string ("GstWlDisplay"), 0,
         "Failed to connect to the wayland display '%s'",
@@ -414,7 +415,7 @@ gst_wl_display_new_existing (struct wl_display * display,
   VERIFY_INTERFACE_EXISTS (tizen_video, "tizen_video");
 
   self->tbm_client = wayland_tbm_client_init (self->display);
-  GST_INFO ("tbm_client@%p = wayland_tbm_client_init (wl_display@%p)",
+  GST_WARNING ("tbm_client@%p = wayland_tbm_client_init (wl_display@%p)",
       self->tbm_client, self->display);
 
   if (!self->tbm_client) {
index c8d8366..5f84d36 100644 (file)
@@ -114,6 +114,7 @@ gst_wl_window_finalize (GObject * gobject)
   wl_surface_destroy (self->area_surface);
   g_clear_object (&self->display);
 
+  GST_WARNING ("wl_window finalize is done");
   G_OBJECT_CLASS (gst_wl_window_parent_class)->finalize (gobject);
 }
 
@@ -190,18 +191,18 @@ gst_wl_window_new_internal (GstWlDisplay * display)
   window->display = g_object_ref (display);
 
   window->area_surface = wl_compositor_create_surface (display->compositor);
-  GST_INFO
+  GST_WARNING
       ("area_surface(wl_surface)@%p = wl_compositor_create_surface(wl_compositor@%p)",
       window->area_surface, display->compositor);
   window->video_surface = wl_compositor_create_surface (display->compositor);
-  GST_INFO
+  GST_WARNING
       ("video_surface(wl_surface)@%p = wl_compositor_create_surface(wl_compositor@%p)",
       window->video_surface, display->compositor);
 
-  GST_INFO ("wl_proxy_set_queue (area_surface@%p, wl_event_queue@%p)",
+  GST_WARNING ("wl_proxy_set_queue (area_surface@%p, wl_event_queue@%p)",
       window->area_surface, display->queue);
   wl_proxy_set_queue ((struct wl_proxy *) window->area_surface, display->queue);
-  GST_INFO ("wl_proxy_set_queue (video_surface@%p, wl_event_queue@%p)",
+  GST_WARNING ("wl_proxy_set_queue (video_surface@%p, wl_event_queue@%p)",
       window->video_surface, display->queue);
   wl_proxy_set_queue ((struct wl_proxy *) window->video_surface,
       display->queue);
@@ -210,7 +211,7 @@ gst_wl_window_new_internal (GstWlDisplay * display)
   /* go toplevel */
   if (display->need_shell_surface) {
     /* for internal window */
-    GST_INFO
+    GST_WARNING
         ("wl_shell_surface@%p =  wl_shell_get_shell_surface (wl_shell@%p, area_subsurface(wl_surface)@%p)",
         window->shell_surface, display->shell, window->area_surface);
     window->shell_surface =
@@ -221,25 +222,27 @@ gst_wl_window_new_internal (GstWlDisplay * display)
       window->area_subsurface =
           tizen_policy_get_subsurface (display->tizen_policy,
           window->area_surface, display->wl_surface_id);
-      GST_INFO
+      GST_WARNING
           ("area_subsurface(wl_subsurface)@%p = tizen_policy_get_subsurface(tizen_policy@%p, area_surface(wl_surface)@%p, wl_surface_id@%d)",
           window->area_subsurface, display->tizen_policy, window->area_surface,
           display->wl_surface_id);
-      GST_INFO ("wl_subsurface_set_desync (area_subsurface(wl_subsurface)@%p)",
+      GST_WARNING
+          ("wl_subsurface_set_desync (area_subsurface(wl_subsurface)@%p)",
           window->area_subsurface);
       wl_subsurface_set_desync (window->area_subsurface);
-      GST_INFO ("wl_surface_commit (%p)", window->area_surface);
+      GST_WARNING ("wl_surface_commit (%p)", window->area_surface);
       wl_surface_commit (window->area_surface);
     } else {
-      GST_INFO (" wl_surface parent %p", parent);
+      GST_WARNING (" wl_surface parent %p", parent);
       window->area_subsurface =
           wl_subcompositor_get_subsurface (display->subcompositor,
           window->area_surface, parent);
-      GST_INFO
+      GST_WARNING
           ("area_subsurface(wl_subsurface)@%p = wl_subcompositor_get_subsurface(wl_subcompositor@%p, area_surface(wl_surface)@%p, parent@%p)",
           window->area_subsurface, display->subcompositor, window->area_surface,
           parent);
-      GST_INFO ("wl_subsurface_set_desync (area_subsurface(wl_subsurface)@%p)",
+      GST_WARNING
+          ("wl_subsurface_set_desync (area_subsurface(wl_subsurface)@%p)",
           window->area_subsurface);
       wl_subsurface_set_desync (window->area_subsurface);
     }
@@ -257,36 +260,37 @@ gst_wl_window_new_internal (GstWlDisplay * display)
   window->video_subsurface =
       wl_subcompositor_get_subsurface (display->subcompositor,
       window->video_surface, window->area_surface);
-  GST_INFO
+  GST_WARNING
       ("video_subsurface(wl_subsurface)@%p = wl_subcompositor_get_subsurface(wl_subcompositor@%p, video_surface(wl_surface)@%p, area_surface(wl_surface)@%p)",
       window->video_subsurface, display->subcompositor, window->video_surface,
       window->area_surface);
 
-  GST_INFO ("wl_subsurface_set_desync (video_subsurface(wl_subsurface)@%p)",
+  GST_WARNING ("wl_subsurface_set_desync (video_subsurface(wl_subsurface)@%p)",
       window->video_subsurface);
   wl_subsurface_set_desync (window->video_subsurface);
-  GST_INFO ("wl_surface_commit (%p)", window->video_surface);
+  GST_WARNING ("wl_surface_commit (%p)", window->video_surface);
   wl_surface_commit (window->video_surface);
 
 #ifdef TIZEN_FEATURE_WLSINK_ENHANCEMENT
   window->tizen_area_viewport =
       tizen_video_get_viewport (display->tizen_video, window->area_surface);
-  GST_INFO
+  GST_WARNING
       ("tizen_area_viewport(tizen_viewport)@%p = tizen_video_get_viewport(tizen_video@%p, area_surface(wl_surface)@%p)",
       window->tizen_area_viewport, display->tizen_video, window->area_surface);
   window->tizen_video_viewport =
       tizen_video_get_viewport (display->tizen_video, window->video_surface);
-  GST_INFO
+  GST_WARNING
       ("tizen_video_viewport(tizen_viewport)@%p = tizen_video_get_viewport(tizen_video@%p, video_surface(wl_surface)@%p)",
       window->tizen_video_viewport, display->tizen_video,
       window->video_surface);
   window->tizen_video_dest_mode =
       tizen_viewport_get_destination_mode (window->tizen_video_viewport);
-  GST_INFO
+  GST_WARNING
       ("tizen_video_dest_mode(tizen_destination_mode)@%p = tizen_viewport_get_destination_mode (tizen_video_viewport@%p)",
       window->tizen_video_dest_mode, window->tizen_video_viewport);
   /* video surface always follow area surface by below code. */
-  GST_INFO ("tizen_viewport_follow_parent_transform(tizen_video_viewport@%p)",
+  GST_WARNING
+      ("tizen_viewport_follow_parent_transform(tizen_video_viewport@%p)",
       window->tizen_video_viewport);
   tizen_viewport_follow_parent_transform (window->tizen_video_viewport);
 
@@ -339,21 +343,21 @@ gst_wl_window_new_internal (GstWlDisplay * display)
 
   /* do not accept input */
   region = wl_compositor_create_region (display->compositor);
-  GST_INFO ("wl_region@%p = wl_compositor_create_region (wl_compositor@%p)",
+  GST_WARNING ("wl_region@%p = wl_compositor_create_region (wl_compositor@%p)",
       region, display->compositor);
-  GST_INFO ("wl_surface_set_input_region (area_surface@%p, wl_region@%p)",
+  GST_WARNING ("wl_surface_set_input_region (area_surface@%p, wl_region@%p)",
       window->area_surface, region);
   wl_surface_set_input_region (window->area_surface, region);
-  GST_INFO ("wl_region_destroy (wl_region@%p)", region);
+  GST_WARNING ("wl_region_destroy (wl_region@%p)", region);
   wl_region_destroy (region);
 
   region = wl_compositor_create_region (display->compositor);
-  GST_INFO ("wl_region@%p = wl_compositor_create_region (wl_compositor@%p)",
+  GST_WARNING ("wl_region@%p = wl_compositor_create_region (wl_compositor@%p)",
       region, display->compositor);
-  GST_INFO ("wl_surface_set_input_region (video_surface@%p, wl_region@%p)",
+  GST_WARNING ("wl_surface_set_input_region (video_surface@%p, wl_region@%p)",
       window->video_surface, region);
   wl_surface_set_input_region (window->video_surface, region);
-  GST_INFO ("wl_region_destroy (wl_region@%p)", region);
+  GST_WARNING ("wl_region_destroy (wl_region@%p)", region);
   wl_region_destroy (region);
 
 #ifdef TIZEN_FEATURE_WLSINK_ENHANCEMENT
@@ -363,11 +367,11 @@ gst_wl_window_new_internal (GstWlDisplay * display)
 
     window->tizen_area_dest_mode =
         tizen_viewport_get_destination_mode (window->tizen_area_viewport);
-    GST_INFO
+    GST_WARNING
         ("tizen_area_dest_mode(tizen_destination_mode)@%p = tizen_viewport_get_destination_mode (tizen_area_viewport@%p)",
         window->tizen_area_dest_mode, window->tizen_area_viewport);
     if (window->tizen_area_dest_mode) {
-      GST_INFO
+      GST_WARNING
           ("tizen_destination_mode_set (tizen_destination_mode@%p, @%d, 3 is FULL)",
           window->tizen_area_dest_mode, tizen_disp_mode);
       tizen_destination_mode_set (window->tizen_area_dest_mode,
@@ -1020,7 +1024,7 @@ gst_wl_window_set_destination_mode_crop_wl_buffer (GstWlWindow * window,
 {
   FUNCTION;
   g_return_if_fail (window != NULL);
-  GST_LOG ("set crop x@%d, y@%d, w@%d, h@%d", x, y, w, h);
+  GST_WARNING ("set crop x@%d, y@%d, w@%d, h@%d", x, y, w, h);
   window->mode_crop.x = x;
   window->mode_crop.y = y;
   window->mode_crop.w = w;