#include "e_client_intern.h"
#include "e_comp_object_intern.h"
#include "e_utils_intern.h"
+#include "e_blur_intern.h"
#include <pixman.h>
#include <wayland-tbm-server.h>
static Eina_List *hwc_window_event_hdlrs = NULL;
static Eina_List *hwc_window_comp_object_hooks = NULL;
static Eina_List *hwc_window_pixmap_hooks = NULL;
+static Eina_List *hwc_window_blur_hooks = NULL;
static int _e_hwc_window_hooks_delete = 0;
static int _e_hwc_window_hooks_walking = 0;
e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_BUFFER);
}
+static void
+_e_hwc_window_cb_blur_set(void *data, E_Blur *blur)
+{
+ E_Client *ec;
+ E_Hwc_Window *hwc_window;
+
+ ec = e_blur_client_get(blur);
+ if (!ec) return;
+
+ hwc_window = ec->hwc_window;
+ if (!hwc_window) return;
+
+ e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_VISIBLE);
+}
+
+static void
+_e_hwc_window_cb_blur_unset(void *data, E_Blur *blur)
+{
+ E_Client *ec;
+ E_Hwc_Window *hwc_window;
+
+ ec = e_blur_client_get(blur);
+ if (!ec) return;
+
+ hwc_window = ec->hwc_window;
+ if (!hwc_window) return;
+
+ e_hwc_window_changed_set(hwc_window, E_HWC_WINS_CHANGED_WIN_VISIBLE);
+}
+
EINTERN Eina_Bool
e_hwc_window_init(void)
{
_e_hwc_window_cb_effect_start, NULL);
E_COMP_COMP_HOOK_APPEND(hwc_window_comp_object_hooks, E_COMP_OBJECT_HOOK_EFFECT_END,
_e_hwc_window_cb_effect_end, NULL);
+ E_BLUR_HOOK_APPEND(hwc_window_blur_hooks, E_BLUR_HOOK_SET,
+ _e_hwc_window_cb_blur_set, NULL);
+ E_BLUR_HOOK_APPEND(hwc_window_blur_hooks, E_BLUR_HOOK_UNSET,
+ _e_hwc_window_cb_blur_unset, NULL);
return EINA_TRUE;
}
E_FREE_LIST(hwc_window_comp_wl_hooks, e_comp_wl_hook_del);
E_FREE_LIST(hwc_window_comp_object_hooks, e_comp_object_hook_del);
E_FREE_LIST(hwc_window_pixmap_hooks, e_pixmap_hook_del);
+ E_FREE_LIST(hwc_window_blur_hooks, e_blur_hook_del);
}
EINTERN E_Hwc_Window *
Eina_Bool effect_client;
Evas_Render_Op render_op;
Eina_Bool qps_visible;
+ Eina_Bool blur_visible = EINA_FALSE;
ecore_evas_geometry_get(e_comp->ee, NULL, NULL, &ee_w, &ee_h);
qps_visible = e_qps_visible_get();
for (o = evas_object_top_get(e_comp->evas); o; o = evas_object_below_get(o))
{
ec = _e_hwc_windows_client_get_from_object(o, &effect_client);
- if (!ec) continue;
+ if (!ec)
+ {
+ if ((evas_object_visible_get(o)) &&
+ (!e_util_strcmp(evas_object_name_get(o), "blur_obj")))
+ blur_visible = EINA_TRUE;
+
+ continue;
+ }
hwc_window = ec->hwc_window;
if (!hwc_window) continue;
else
e_hwc_window_restriction_unset(hwc_window, E_HWC_WINDOW_RESTRICTION_QUICKPANEL_OPEN);
+ if (blur_visible)
+ e_hwc_window_restriction_set(hwc_window, E_HWC_WINDOW_RESTRICTION_BLUR);
+ else
+ e_hwc_window_restriction_unset(hwc_window, E_HWC_WINDOW_RESTRICTION_BLUR);
+
if (hwc)
{
zone = hwc_window->zone;