}
}
-static void
-_e_comp_wl_surface_render_stop(E_Client *ec)
-{
- /* check if internal animation is running */
- if (e_view_client_is_animating(e_client_view_get(ec))) return;
- /* check if external animation is running */
- if (e_view_data_get(e_view_client_view_get(e_client_view_get(ec)), "effect_running")) return;
-
- e_view_client_hide(e_client_view_get(ec));
-}
-
-EINTERN void
-e_comp_wl_client_surface_finish(E_Client *ec)
-{
- struct wl_resource *res, *surface;
- struct wl_client *surface_client = NULL;
- Eina_List *l, *ll;
-
- surface = e_comp_wl_client_surface_get(ec);
-
- if (surface)
- surface_client = wl_resource_get_client(surface);
-
- if (surface_client &&
- (ec == e_client_focused_get()))
- {
- g_rec_mutex_lock(&e_comp_input_key->kbd.focused_mutex);
- EINA_LIST_FOREACH_SAFE(e_comp_input_key->kbd.focused, l, ll, res)
- {
- if (wl_resource_get_client(res) ==
- surface_client)
- e_comp_input_key->kbd.focused =
- eina_list_remove_list(e_comp_input_key->kbd.focused, l);
-
- }
- g_rec_mutex_unlock(&e_comp_input_key->kbd.focused_mutex);
- }
-
- e_comp_wl_client_surface_set(ec, NULL);
-
- _e_comp_wl_surface_render_stop(ec);
- e_object_del(E_OBJECT(ec));
-}
-
static void
_e_comp_wl_pname_get(pid_t pid, char *name, int size)
{
#include "e_comp_wl_rsm_intern.h"
#include "e_compositor_private.h"
#include "e_surface_view_intern.h"
+#include "e_comp_input_intern.h"
#include <stdlib.h>
#include <wayland-util.h>
free(view);
}
+static void
+_surface_view_render_stop(E_Surface_View *view)
+{
+ /* check if internal animation is running */
+ if (e_view_client_is_animating(e_client_view_get(view->ec))) return;
+ /* check if external animation is running */
+ if (e_view_data_get(e_view_client_view_get(e_client_view_get(view->ec)), "effect_running")) return;
+
+ e_view_client_hide(e_client_view_get(view->ec));
+}
+
static void
_surface_view_cb_surface_client_destroy(struct wl_listener *listener, void *data)
{
E_Surface_View *view = wl_container_of(listener, view, surface_client_destroy);
+ struct wl_resource *res, *surface;
+ struct wl_client *surface_client = NULL;
+ Eina_List *l, *ll;
+
+ surface = e_comp_wl_client_surface_get(view->ec);
+
+ if (surface)
+ surface_client = wl_resource_get_client(surface);
+
+ if (surface_client &&
+ (view->ec == e_client_focused_get()))
+ {
+ g_rec_mutex_lock(&e_comp_input_key->kbd.focused_mutex);
+ EINA_LIST_FOREACH_SAFE(e_comp_input_key->kbd.focused, l, ll, res)
+ {
+ if (wl_resource_get_client(res) ==
+ surface_client)
+ e_comp_input_key->kbd.focused =
+ eina_list_remove_list(e_comp_input_key->kbd.focused, l);
+
+ }
+ g_rec_mutex_unlock(&e_comp_input_key->kbd.focused_mutex);
+ }
+
+ e_comp_wl_client_surface_set(view->ec, NULL);
- e_comp_wl_client_surface_finish(view->ec);
+ _surface_view_render_stop(view);
+ e_object_del(E_OBJECT(view->ec));
}
static void