E_Zone *zone;
E_Client *focused_ec;
- GRecMutex focused_ec_mutex;
-
Eina_List *focus_stack;
Eina_List *defer_focus_stack;
}
}
+static void set_focused_ec(E_Focus_Policy_History *history_policy, E_Client *ec)
+{
+ atomic_store(&history_policy->focused_ec, ec);
+}
+
static void
_focus_policy_history_cb_client_focus_set(struct wl_listener *listener, void *data)
{
_focus_policy_history_focus_stack_latest_set(history_policy, ec);
// assign the focused_ec
- g_rec_mutex_lock(&history_policy->focused_ec_mutex);
- history_policy->focused_ec = ec;
- g_rec_mutex_unlock(&history_policy->focused_ec_mutex);
+ set_focused_ec(history_policy, ec);
ELOGF("FOCUS_HISTORY", "focus_set | focused_ec SET", ec);
}
_e_focus_policy_history_focus_defer_unset(history_policy, ec);
// assign the focused_ec
- g_rec_mutex_lock(&history_policy->focused_ec_mutex);
- history_policy->focused_ec = NULL;
- g_rec_mutex_unlock(&history_policy->focused_ec_mutex);
+ set_focused_ec(history_policy, NULL);
ELOGF("FOCUS_HISTORY", "focus_set | focused_ec UNSET", ec);
}
{
ELOGF("FOCUS_HISTORY", "CRITICAL. focused is deleted ec.", ec);
ELOGF("FOCUS_HISTORY", "CLIENT FOCUS_SET", NULL);
- g_rec_mutex_lock(&history_policy->focused_ec_mutex);
- history_policy->focused_ec = NULL;
- g_rec_mutex_unlock(&history_policy->focused_ec_mutex);
+ set_focused_ec(history_policy, NULL);
}
}
}
EINA_SAFETY_ON_NULL_RETURN(zone);
// make focused_ec be NULL
- g_rec_mutex_lock(&history_policy->focused_ec_mutex);
- history_policy->focused_ec = NULL;
- g_rec_mutex_unlock(&history_policy->focused_ec_mutex);
+ set_focused_ec(history_policy, NULL);
ELOGF("FOCUS_HISTORY", "focus_clear | focused_ec UNSET", NULL);
}
wl_list_remove(&history_policy->zone_client_remove.link);
wl_list_remove(&history_policy->zone_client_add.link);
- g_rec_mutex_clear(&history_policy->focused_ec_mutex);
-
E_FREE(history_policy);
}
EINA_SAFETY_ON_NULL_RETURN_VAL(history_policy, NULL);
//E_FOCUS_HISTORY_TRACE(history_policy, NULL);
-
- g_rec_mutex_lock(&history_policy->focused_ec_mutex);
- focused_ec = history_policy->focused_ec;
- g_rec_mutex_unlock(&history_policy->focused_ec_mutex);
+ focused_ec = atomic_load(&history_policy->focused_ec);
return focused_ec;
}
EINA_SAFETY_ON_NULL_GOTO(history_policy, fail);
history_policy->zone = zone;
- g_rec_mutex_init(&history_policy->focused_ec_mutex);
E_FOCUS_HISTORY_TRACE(history_policy, NULL);
E_Zone *zone;
E_Client *focused_ec;
- GRecMutex focused_ec_mutex;
-
struct wl_listener zone_client_add;
struct wl_listener zone_client_remove;
struct wl_listener zone_focus_clear;
}
}
+static void set_focused_ec(E_Focus_Policy_Topmost *topmost_policy, E_Client *ec)
+{
+ atomic_store(&topmost_policy->focused_ec, ec);
+}
+
static void
_focus_policy_topmost_cb_client_focus_set(struct wl_listener *listener, void *data)
{
}
// assign the focused_ec
- g_rec_mutex_lock(&topmost_policy->focused_ec_mutex);
- topmost_policy->focused_ec = ec;
- g_rec_mutex_unlock(&topmost_policy->focused_ec_mutex);
+ set_focused_ec(topmost_policy, ec);
ELOGF("FOCUS_TOPMOST", "focus_set | focused_ec SET", ec);
}
}
// assign the focused_ec
- g_rec_mutex_lock(&topmost_policy->focused_ec_mutex);
- topmost_policy->focused_ec = NULL;
- g_rec_mutex_unlock(&topmost_policy->focused_ec_mutex);
+ set_focused_ec(topmost_policy, NULL);
ELOGF("FOCUS_TOPMOST", "focus_unset | focused_ec UNSET", NULL);
}
{
ELOGF("FOCUS_TOPMOST", "CRITICAL. focused is deleted ec.", ec);
ELOGF("FOCUS_TOPMOST", "CLIENT FOCUS_SET", NULL);
- g_rec_mutex_lock(&topmost_policy->focused_ec_mutex);
- topmost_policy->focused_ec = NULL;
- g_rec_mutex_unlock(&topmost_policy->focused_ec_mutex);
+ set_focused_ec(topmost_policy, NULL);
}
}
}
if (topmost_policy->zone != zone) return;
// make focused_ec be NULL
- g_rec_mutex_lock(&topmost_policy->focused_ec_mutex);
- topmost_policy->focused_ec = NULL;
- g_rec_mutex_unlock(&topmost_policy->focused_ec_mutex);
+ set_focused_ec(topmost_policy, NULL);
ELOGF("FOCUS_TOPMOST", "focus_clear | focused_ec UNSET", NULL);
}
wl_list_remove(&topmost_policy->zone_client_remove.link);
wl_list_remove(&topmost_policy->zone_client_add.link);
- g_rec_mutex_clear(&topmost_policy->focused_ec_mutex);
-
E_FREE(topmost_policy);
}
EINA_SAFETY_ON_NULL_GOTO(topmost_policy, fail);
topmost_policy->zone = zone;
- g_rec_mutex_init(&topmost_policy->focused_ec_mutex);
policy_iface->impl = (E_Focus_Policy_Impl *)topmost_policy;
policy_iface->del = _focus_policy_topmost_del;