#include "e_mod_main.h"
#ifdef HAVE_WAYLAND_ONLY
+#define E_COMP_WL
+#include "e_comp_wl.h"
#include "e_mod_wl.h"
#else
#include "e_mod_atoms.h"
static void _pol_cb_win_opaque_data_free(void *data);
#ifndef HAVE_WAYLAND_ONLY
static Eina_Bool _win_opaque_prop_get(Ecore_X_Window win, int *opaque);
-static Pol_Win_Opaque *_win_opaque_add(E_Client *ec, int opaque);
#endif
+static Pol_Win_Opaque *_win_opaque_add(E_Client *ec, int opaque);
static Pol_Visibility *
_visibility_add(E_Client *ec, int visibility)
*opaque = (int)val;
return EINA_TRUE;
}
+#endif
static Pol_Win_Opaque *
_win_opaque_add(E_Client *ec, int opaque)
return pwo;
}
-#endif
void
e_mod_pol_visibility_init(void)
void
e_mod_pol_client_window_opaque_set(E_Client *ec)
{
-#ifndef HAVE_WAYLAND_ONLY
- Ecore_X_Window win;
int opaque = 0;
if (!ec) return;
- win = e_client_util_win_get(ec);
- if (_win_opaque_prop_get(win, &opaque))
- _win_opaque_add(ec, opaque);
+#ifndef HAVE_WAYLAND_ONLY
+ Ecore_X_Window win = e_client_util_win_get(ec);
+
+ if (!_win_opaque_prop_get(win, &opaque)) return;
+#else
+ E_Comp_Wl_Client_Data *cdata;
+
+ if (!ec->pixmap) return;
+ if (!(cdata = e_pixmap_cdata_get(ec->pixmap))) return;
+
+ opaque = cdata->opaque_state;
#endif
+
+ _win_opaque_add(ec, opaque);
}
#ifndef HAVE_WAYLAND_ONLY
epc->comp_data->sub.list_changed = EINA_TRUE;
}
+static void
+_tzpol_iface_cb_opaque_state_set(struct wl_client *client, struct wl_resource *resource, struct wl_resource *surface, int32_t state)
+{
+ E_Pixmap *ep;
+ E_Client *ec;
+ E_Comp_Wl_Client_Data *cdata;
+
+ ep = wl_resource_get_user_data(surface);
+ EINA_SAFETY_ON_NULL_RETURN(ep);
+
+ cdata = e_pixmap_cdata_get(ep);
+ EINA_SAFETY_ON_NULL_RETURN(cdata);
+
+ cdata->opaque_state = state;
+
+ ec = e_pixmap_client_get(ep);
+ if (ec)
+ e_mod_pol_client_window_opaque_set(ec);
+}
+
static const struct tizen_policy_interface _tzpol_iface =
{
_tzpol_iface_cb_vis_get,
_tzpol_iface_cb_transient_for_set,
_tzpol_iface_cb_transient_for_unset,
_tzpol_iface_cb_win_scrmode_set,
- _tzpol_iface_cb_subsurf_place_below_parent
+ _tzpol_iface_cb_subsurf_place_below_parent,
+ _tzpol_iface_cb_opaque_state_set,
};
static void