{
return ec->comp_data ? ec->comp_data->sub.data : NULL;
}
+
+EINTERN Eina_Bool
+e_client_buffer_flush_enabled_get(E_Client *ec)
+{
+ if (!ec) return EINA_FALSE;
+ if (!ec->comp_data) return EINA_FALSE;
+ if (!ec->exp_iconify.buffer_flush) return EINA_FALSE;
+ if (e_view_client_visible_get(e_client_view_get(ec))) return EINA_FALSE;
+ if (ec->is_cursor) return EINA_FALSE;
+
+ if (e_policy_visibility_client_is_iconic(ec)) return EINA_TRUE;
+ if (!ec->comp_data->mapped) return EINA_TRUE;
+
+ return EINA_FALSE;
+}
void e_client_virtual_touch_threshold_set(E_Client *ec, int threshold);
int e_client_virtual_touch_threshold_get(E_Client *ec);
+EINTERN Eina_Bool e_client_buffer_flush_enabled_get(E_Client *ec);
+
#endif
comp_wl_buffer = _e_hwc_window_comp_wl_buffer_get(hwc_window);
if ((!comp_wl_buffer) &&
- (!e_view_client_visible_get(e_client_view_get(ec))) &&
- (ec->exp_iconify.buffer_flush) &&
- (e_policy_visibility_client_is_iconic(ec)))
+ (e_client_buffer_flush_enabled_get(ec)))
return EINA_FALSE;
if (!comp_wl_buffer)
if (!(ec = copy_thread_data->hwc_window->ec)) goto end;
if (!e_client_cdata_get(ec)) goto end;
- if ((!e_view_client_visible_get(e_client_view_get(ec))) &&
- (ec->exp_iconify.buffer_flush) &&
- (e_policy_visibility_client_is_iconic(ec)))
+ if (e_client_buffer_flush_enabled_get(ec))
goto end;
comp_buffer = _comp_wl_buffer_get(ec);
if (!hwc_window->ec) return;
- if ((!e_view_client_visible_get(e_client_view_get(hwc_window->ec))) &&
- (hwc_window->ec->exp_iconify.buffer_flush) &&
- (e_policy_visibility_client_is_iconic(hwc_window->ec)))
+ if (e_client_buffer_flush_enabled_get(hwc_window->ec))
return;
_e_hwc_window_queue_copy_thread_check_and_run(hwc_window);
hwc_window = ec->hwc_window;
if (!hwc_window) return;
- if ((!e_view_client_visible_get(e_client_view_get(ec))) &&
- (ec->exp_iconify.buffer_flush) &&
- (e_policy_visibility_client_is_iconic(ec)))
+ if (e_client_buffer_flush_enabled_get(hwc_window->ec))
return;
_e_hwc_window_queue_copy_thread_check_and_run(hwc_window);
wl_signal_emit(&cdata->state_commit_signal, &cdata->surface);
- if (buffer &&
- ec->exp_iconify.buffer_flush &&
- e_policy_visibility_client_is_iconic(ec))
- {
- e_pixmap_buffer_clear(ec->pixmap, EINA_FALSE);
- }
+ if ((buffer) && (e_client_buffer_flush_enabled_get(ec)))
+ e_pixmap_buffer_clear(ec->pixmap, EINA_FALSE);
}
static void
E_Pixmap *pixmap = ec->pixmap;
E_Surface *surface;
- /* if not only free, client should be iconic state */
- if (!only_free && !e_policy_visibility_client_is_iconic(ec)) return;
+ if ((!only_free) && (!e_client_buffer_flush_enabled_get(ec))) return;
E_Tizen_Surface_Shm *surface_shm;
E_Tizen_Surface_Shm_Flusher *surface_shm_flusher;
VS_DBG(ec, "\tUPDATE ICONIC STATE: %s", STATE_STR(vc));
vc->prepare_emitted = 0;
- if (ec->iconic && ec->exp_iconify.buffer_flush)
+ if (e_client_buffer_flush_enabled_get(ec))
e_pixmap_buffer_clear(ec->pixmap, EINA_FALSE);
}