event-hook: remove the exec type property & enumeration
With the latest changes, we can implement the "after-events" type with external code that pushes a very low priority event that is the "rescan" event.
This commit is contained in:

committed by
Julian Bouzas

parent
bcb4e80723
commit
b100bdda4a
@@ -284,7 +284,6 @@ struct _WpEventDispatcher
|
||||
GSource *source; /* the event loop source */
|
||||
GList *events; /* the events stack */
|
||||
gchar *events_chain; /* chain of events for an event run */
|
||||
WpEvent *rescan_event;
|
||||
struct spa_system *system;
|
||||
int eventfd;
|
||||
};
|
||||
@@ -375,7 +374,6 @@ wp_event_source_dispatch (GSource * s, GSourceFunc callback, gpointer user_data)
|
||||
WpEventHook *hook = hook_data->hook;
|
||||
const gchar *name = wp_event_hook_get_name (hook);
|
||||
gint priority = wp_event_hook_get_priority (hook);
|
||||
WpEventHookExecType type = wp_event_hook_get_exec_type (hook);
|
||||
|
||||
event->current_hook_in_async = hook_data;
|
||||
event->hooks = g_list_delete_link (event->hooks,
|
||||
@@ -384,21 +382,6 @@ wp_event_source_dispatch (GSource * s, GSourceFunc callback, gpointer user_data)
|
||||
event->hooks_chain = build_chain (name, priority, event->hooks_chain);
|
||||
wp_trace_object (d, "running hook <%p>(%s)", hook, name);
|
||||
|
||||
if ((event == d->rescan_event) &&
|
||||
(type == WP_EVENT_HOOK_EXEC_TYPE_AFTER_EVENTS_WITH_EVENT)) {
|
||||
WpEvent *hook_event = hook_data->event;
|
||||
wp_trace_object (d, "after-events-with-event with event %s", hook_event->name);
|
||||
|
||||
if (g_cancellable_is_cancelled (hook_event->cancellable)) {
|
||||
wp_debug_object (d, "skip running hook(%s) as its trigger event(%s)"
|
||||
" is cancelled", name, hook_event->name);
|
||||
event->current_hook_in_async = NULL;
|
||||
}
|
||||
else
|
||||
wp_event_hook_run (hook, hook_event, event->cancellable,
|
||||
(GAsyncReadyCallback) on_event_hook_done, event);
|
||||
}
|
||||
else
|
||||
/* execute the hook, possibly async */
|
||||
wp_event_hook_run (hook, event, event->cancellable,
|
||||
(GAsyncReadyCallback) on_event_hook_done, event);
|
||||
@@ -407,8 +390,6 @@ wp_event_source_dispatch (GSource * s, GSourceFunc callback, gpointer user_data)
|
||||
/* clear the event after all hooks are done */
|
||||
if (!event->hooks && !event->current_hook_in_async) {
|
||||
d->events = g_list_delete_link (d->events, g_steal_pointer (&levent));
|
||||
if (event == d->rescan_event)
|
||||
d->rescan_event = NULL;
|
||||
g_clear_pointer (&event, wp_event_unref);
|
||||
}
|
||||
|
||||
@@ -533,23 +514,6 @@ hook_cmp_func (const WpEventHookData *new_hook, const WpEventHookData *listed_ho
|
||||
wp_event_hook_get_priority ((WpEventHook *) new_hook->hook);
|
||||
}
|
||||
|
||||
static gint
|
||||
after_events_hook_cmp_func (const WpEventHookData *new_hook,
|
||||
const WpEventHookData *listed_hook)
|
||||
{
|
||||
if (new_hook->event != listed_hook->event)
|
||||
return G_MININT;
|
||||
else
|
||||
return hook_cmp_func (new_hook, listed_hook);
|
||||
}
|
||||
|
||||
|
||||
static gint
|
||||
is_hook_present (const WpEventHookData *hook_data, const WpEventHook *hook)
|
||||
{
|
||||
return !(hook == hook_data->hook);
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Pushes a new event onto the event stack for dispatching only if there
|
||||
* are any hooks are available for it.
|
||||
@@ -564,10 +528,6 @@ wp_event_dispatcher_push_event (WpEventDispatcher * self, WpEvent * event)
|
||||
g_return_if_fail (WP_IS_EVENT_DISPATCHER (self));
|
||||
g_return_if_fail (event != NULL);
|
||||
gboolean hooks_added = FALSE;
|
||||
gboolean rescan_hooks_added = FALSE;
|
||||
|
||||
if (!self->rescan_event)
|
||||
self->rescan_event = wp_event_new ("rescan", G_MININT16, NULL, NULL, NULL);
|
||||
|
||||
/* attach hooks that run for this event */
|
||||
for (guint i = 0; i < self->hooks->len; i++) {
|
||||
@@ -575,51 +535,16 @@ wp_event_dispatcher_push_event (WpEventDispatcher * self, WpEvent * event)
|
||||
|
||||
if (wp_event_hook_runs_for_event (hook, event)) {
|
||||
WpEventHookData *hook_data = g_slice_new0 (WpEventHookData);
|
||||
WpEventHookExecType hook_type = wp_event_hook_get_exec_type (hook);
|
||||
const gchar *name = wp_event_hook_get_name (hook);
|
||||
gint priority = wp_event_hook_get_priority (hook);
|
||||
|
||||
hook_data->hook = g_object_ref (hook);
|
||||
/* ON_EVENT hooks run at the dispatching of the event */
|
||||
if (hook_type == WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT) {
|
||||
event->hooks = g_list_insert_sorted (event->hooks, hook_data,
|
||||
(GCompareFunc) hook_cmp_func);
|
||||
hooks_added = true;
|
||||
|
||||
wp_debug_object (self, "added hook <%p>(%s(%d))", hook, name, priority);
|
||||
}
|
||||
/* AFTER_EVENTS hooks run after all other events have been dispatched */
|
||||
else if (hook_type == WP_EVENT_HOOK_EXEC_TYPE_AFTER_EVENTS_WITH_EVENT) {
|
||||
/* this event will be sent to hook when it is being dispatched */
|
||||
hook_data->event = wp_event_ref (event);
|
||||
|
||||
self->rescan_event->hooks = g_list_insert_sorted (
|
||||
self->rescan_event->hooks, hook_data,
|
||||
(GCompareFunc) after_events_hook_cmp_func);
|
||||
rescan_hooks_added = true;
|
||||
|
||||
wp_debug_object (self, "added after-events-with-event rescan hook"
|
||||
" <%p>(%s(%d)) for event %s", hook, name, priority, event->name);
|
||||
}
|
||||
/* for after-events retain only one instance per hook */
|
||||
else if (!g_list_find_custom (self->rescan_event->hooks, hook,
|
||||
(GCompareFunc) is_hook_present)) {
|
||||
self->rescan_event->hooks = g_list_insert_sorted (
|
||||
self->rescan_event->hooks, hook_data, (GCompareFunc) hook_cmp_func);
|
||||
rescan_hooks_added = true;
|
||||
|
||||
wp_debug_object (self, "added rescan hook <%p>(%s(%d))", hook, name, priority);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (rescan_hooks_added) {
|
||||
if (!g_list_find (self->events, self->rescan_event))
|
||||
self->events = g_list_insert_sorted (self->events, self->rescan_event,
|
||||
(GCompareFunc) event_cmp_func);
|
||||
|
||||
wp_debug_object (self, "pushed rescan event %p for event(%s)",
|
||||
self->rescan_event, event->name);
|
||||
}
|
||||
|
||||
if (hooks_added) {
|
||||
@@ -627,13 +552,12 @@ wp_event_dispatcher_push_event (WpEventDispatcher * self, WpEvent * event)
|
||||
(GCompareFunc) event_cmp_func);
|
||||
wp_debug_object (self, "pushed event (%s)" WP_OBJECT_FORMAT " priority(%d)",
|
||||
event->name, WP_OBJECT_ARGS (event->subject), event->priority);
|
||||
|
||||
/* wakeup the GSource */
|
||||
spa_system_eventfd_write (self->system, self->eventfd, 1);
|
||||
}
|
||||
else
|
||||
g_clear_pointer (&event, wp_event_unref);
|
||||
|
||||
if (hooks_added || rescan_hooks_added)
|
||||
/* wakeup the GSource */
|
||||
spa_system_eventfd_write (self->system, self->eventfd, 1);
|
||||
}
|
||||
|
||||
/*!
|
||||
|
@@ -18,7 +18,6 @@ typedef struct _WpEventHookPrivate WpEventHookPrivate;
|
||||
struct _WpEventHookPrivate
|
||||
{
|
||||
gint priority;
|
||||
WpEventHookExecType exec_type;
|
||||
GWeakRef dispatcher;
|
||||
gchar *name;
|
||||
};
|
||||
@@ -27,7 +26,6 @@ enum {
|
||||
PROP_0,
|
||||
PROP_NAME,
|
||||
PROP_PRIORITY,
|
||||
PROP_EXEC_TYPE,
|
||||
PROP_DISPATCHER,
|
||||
};
|
||||
|
||||
@@ -66,9 +64,6 @@ wp_event_hook_set_property (GObject * object, guint property_id,
|
||||
case PROP_PRIORITY:
|
||||
priv->priority = g_value_get_int (value);
|
||||
break;
|
||||
case PROP_EXEC_TYPE:
|
||||
priv->exec_type = g_value_get_enum (value);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
break;
|
||||
@@ -89,9 +84,6 @@ wp_event_hook_get_property (GObject * object, guint property_id, GValue * value,
|
||||
case PROP_PRIORITY:
|
||||
g_value_set_int (value, priv->priority);
|
||||
break;
|
||||
case PROP_EXEC_TYPE:
|
||||
g_value_set_enum (value, priv->exec_type);
|
||||
break;
|
||||
case PROP_DISPATCHER:
|
||||
g_value_take_object (value, wp_event_hook_get_dispatcher (self));
|
||||
break;
|
||||
@@ -119,11 +111,6 @@ wp_event_hook_class_init (WpEventHookClass * klass)
|
||||
"The priority of the hook", -G_MAXINT, G_MAXINT, 0,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
|
||||
|
||||
g_object_class_install_property (object_class, PROP_EXEC_TYPE,
|
||||
g_param_spec_enum ("exec-type", "exec-type", "The exec type of the hook",
|
||||
WP_TYPE_EVENT_HOOK_EXEC_TYPE, WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
|
||||
|
||||
g_object_class_install_property (object_class, PROP_DISPATCHER,
|
||||
g_param_spec_object ("dispatcher", "dispatcher",
|
||||
"The associated event dispatcher", WP_TYPE_EVENT_DISPATCHER,
|
||||
@@ -160,21 +147,6 @@ wp_event_hook_get_name (WpEventHook * self)
|
||||
return priv->name;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns the execution type of the hook
|
||||
*
|
||||
* \ingroup wpeventhook
|
||||
* \param self the event hook
|
||||
* \return the event hook execution type
|
||||
*/
|
||||
WpEventHookExecType
|
||||
wp_event_hook_get_exec_type (WpEventHook * self)
|
||||
{
|
||||
g_return_val_if_fail (WP_IS_EVENT_HOOK (self), 0);
|
||||
WpEventHookPrivate *priv = wp_event_hook_get_instance_private (self);
|
||||
return priv->exec_type;
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Returns the associated event dispatcher
|
||||
*
|
||||
@@ -500,22 +472,19 @@ wp_simple_event_hook_class_init (WpSimpleEventHookClass * klass)
|
||||
*
|
||||
* \param name the name of the hook
|
||||
* \param priority the priority of the hook
|
||||
* \param type the execution type of the hook
|
||||
* \param closure the closure to invoke when the hook is executed; the closure
|
||||
* should accept two parameters: the event dispatcher and the event, returning
|
||||
* nothing
|
||||
* \return a new simple event hook
|
||||
*/
|
||||
WpEventHook *
|
||||
wp_simple_event_hook_new (const gchar *name, gint priority,
|
||||
WpEventHookExecType type, GClosure * closure)
|
||||
wp_simple_event_hook_new (const gchar *name, gint priority, GClosure * closure)
|
||||
{
|
||||
g_return_val_if_fail (closure != NULL, NULL);
|
||||
|
||||
return g_object_new (WP_TYPE_SIMPLE_EVENT_HOOK,
|
||||
"name", name,
|
||||
"priority", priority,
|
||||
"exec-type", type,
|
||||
"closure", closure,
|
||||
NULL);
|
||||
}
|
||||
@@ -643,15 +612,13 @@ wp_async_event_hook_class_init (WpAsyncEventHookClass * klass)
|
||||
*
|
||||
* \param name the name of the hook
|
||||
* \param priority the priority of the hook
|
||||
* \param type the execution type of the hook
|
||||
* \param get_next_step the closure to invoke to get the next step
|
||||
* \param execute_step the closure to invoke to execute the step
|
||||
* \return a new async event hook
|
||||
*/
|
||||
WpEventHook *
|
||||
wp_async_event_hook_new (const gchar *name, gint priority,
|
||||
WpEventHookExecType type, GClosure * get_next_step,
|
||||
GClosure * execute_step)
|
||||
GClosure * get_next_step, GClosure * execute_step)
|
||||
{
|
||||
g_return_val_if_fail (get_next_step != NULL, NULL);
|
||||
g_return_val_if_fail (execute_step != NULL, NULL);
|
||||
@@ -659,7 +626,6 @@ wp_async_event_hook_new (const gchar *name, gint priority,
|
||||
return g_object_new (WP_TYPE_ASYNC_EVENT_HOOK,
|
||||
"name", name,
|
||||
"priority", priority,
|
||||
"exec-type", type,
|
||||
"get-next-step", get_next_step,
|
||||
"execute-step", execute_step,
|
||||
NULL);
|
||||
|
@@ -17,12 +17,6 @@ G_BEGIN_DECLS
|
||||
typedef struct _WpEvent WpEvent;
|
||||
typedef struct _WpEventDispatcher WpEventDispatcher;
|
||||
|
||||
typedef enum {
|
||||
WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
WP_EVENT_HOOK_EXEC_TYPE_AFTER_EVENTS,
|
||||
WP_EVENT_HOOK_EXEC_TYPE_AFTER_EVENTS_WITH_EVENT,
|
||||
} WpEventHookExecType;
|
||||
|
||||
typedef enum {
|
||||
WP_EVENT_HOOK_PRIORITY_LOWEST = -500,
|
||||
WP_EVENT_HOOK_PRIORITY_ULTRA_LOW = -300,
|
||||
@@ -67,9 +61,6 @@ gint wp_event_hook_get_priority (WpEventHook * self);
|
||||
WP_API
|
||||
const gchar * wp_event_hook_get_name (WpEventHook * self);
|
||||
|
||||
WP_API
|
||||
WpEventHookExecType wp_event_hook_get_exec_type (WpEventHook * self);
|
||||
|
||||
WP_PRIVATE_API
|
||||
WpEventDispatcher * wp_event_hook_get_dispatcher (WpEventHook * self);
|
||||
|
||||
@@ -127,7 +118,7 @@ G_DECLARE_FINAL_TYPE (WpSimpleEventHook, wp_simple_event_hook,
|
||||
|
||||
WP_API
|
||||
WpEventHook * wp_simple_event_hook_new (const gchar *name, gint priority,
|
||||
WpEventHookExecType type, GClosure * closure);
|
||||
GClosure * closure);
|
||||
|
||||
|
||||
/*!
|
||||
@@ -141,8 +132,7 @@ G_DECLARE_FINAL_TYPE (WpAsyncEventHook, wp_async_event_hook,
|
||||
|
||||
WP_API
|
||||
WpEventHook * wp_async_event_hook_new (const gchar *name, gint priority,
|
||||
WpEventHookExecType type, GClosure * get_next_step,
|
||||
GClosure * execute_step);
|
||||
GClosure * get_next_step, GClosure * execute_step);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@@ -151,7 +151,7 @@ wp_default_nodes_api_enable (WpPlugin * plugin, WpTransition * transition)
|
||||
|
||||
/* default metadata added */
|
||||
hook = wp_simple_event_hook_new ("metadata-added@default-nodes-api",
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL, WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL,
|
||||
g_cclosure_new ((GCallback) on_metadata_added, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "metadata-added",
|
||||
@@ -162,7 +162,7 @@ wp_default_nodes_api_enable (WpPlugin * plugin, WpTransition * transition)
|
||||
|
||||
/* default metadata changed */
|
||||
hook = wp_simple_event_hook_new ("metadata-changed@default-nodes-api",
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL, WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL,
|
||||
g_cclosure_new ((GCallback) on_metadata_changed_hook, self, NULL));
|
||||
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
|
@@ -592,7 +592,7 @@ wp_default_nodes_enable (WpPlugin * plugin, WpTransition * transition)
|
||||
|
||||
/* default metadata added */
|
||||
hook = wp_simple_event_hook_new ("metadata-added@default-nodes",
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL, WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL,
|
||||
g_cclosure_new ((GCallback) on_metadata_added, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "metadata-added",
|
||||
@@ -603,7 +603,7 @@ wp_default_nodes_enable (WpPlugin * plugin, WpTransition * transition)
|
||||
|
||||
/* default metadata changed */
|
||||
hook = wp_simple_event_hook_new ("metadata-changed@default-nodes",
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL, WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL,
|
||||
g_cclosure_new ((GCallback) on_metadata_changed, self, NULL));
|
||||
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
@@ -632,7 +632,7 @@ wp_default_nodes_enable (WpPlugin * plugin, WpTransition * transition)
|
||||
|
||||
/* register rescan hook as an after event */
|
||||
hook = wp_simple_event_hook_new("rescan@default-nodes",
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL, WP_EVENT_HOOK_EXEC_TYPE_AFTER_EVENTS,
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL,
|
||||
g_cclosure_new ((GCallback) rescan, self, NULL));
|
||||
|
||||
/* default.configured.audio.sink changed */
|
||||
|
@@ -269,7 +269,7 @@ wp_default_profile_enable (WpPlugin * plugin, WpTransition * transition)
|
||||
|
||||
/* device added */
|
||||
hook = wp_simple_event_hook_new ("device-added@m-default-profile",
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL, WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL,
|
||||
g_cclosure_new ((GCallback) on_device_added, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "device-added",
|
||||
@@ -279,7 +279,7 @@ wp_default_profile_enable (WpPlugin * plugin, WpTransition * transition)
|
||||
|
||||
/* device params changed */
|
||||
hook = wp_simple_event_hook_new ("device-parms-changed@m-default-profile",
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL, WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
WP_EVENT_HOOK_PRIORITY_NORMAL,
|
||||
g_cclosure_new ((GCallback) on_device_params_changed_hook, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "device-params-changed",
|
||||
|
@@ -1919,7 +1919,6 @@ simple_event_hook_new (lua_State *L)
|
||||
gint priority = 0;
|
||||
gint priority_type = 0;
|
||||
const gchar *name;
|
||||
WpEventHookExecType type = 0;
|
||||
GClosure *closure = NULL;
|
||||
|
||||
/* validate arguments */
|
||||
@@ -1939,13 +1938,6 @@ simple_event_hook_new (lua_State *L)
|
||||
luaL_error (L, "SimpleEventHook: expected 'priority' as number");
|
||||
lua_pop (L, 1);
|
||||
|
||||
lua_pushliteral (L, "type");
|
||||
if (lua_gettable (L, 1) == LUA_TSTRING)
|
||||
type = wplua_lua_to_enum (L, -1, WP_TYPE_EVENT_HOOK_EXEC_TYPE);
|
||||
else
|
||||
luaL_error (L, "SimpleEventHook: expected 'type' as string");
|
||||
lua_pop (L, 1);
|
||||
|
||||
lua_pushliteral (L, "execute");
|
||||
if (lua_gettable (L, 1) == LUA_TFUNCTION)
|
||||
closure = wplua_function_to_closure (L, -1);
|
||||
@@ -1953,7 +1945,7 @@ simple_event_hook_new (lua_State *L)
|
||||
luaL_error (L, "SimpleEventHook: expected 'execute' as function");
|
||||
lua_pop (L, 1);
|
||||
|
||||
hook = wp_simple_event_hook_new (name, priority, type, closure);
|
||||
hook = wp_simple_event_hook_new (name, priority, closure);
|
||||
wplua_pushobject (L, hook);
|
||||
|
||||
lua_pushliteral (L, "interests");
|
||||
@@ -2101,7 +2093,6 @@ async_event_hook_new (lua_State *L)
|
||||
const gchar *name;
|
||||
gint priority = 0;
|
||||
gint priority_type = 0;
|
||||
WpEventHookExecType type = 0;
|
||||
GClosure *get_next_step = NULL;
|
||||
GClosure *execute_step = NULL;
|
||||
|
||||
@@ -2122,12 +2113,6 @@ async_event_hook_new (lua_State *L)
|
||||
luaL_error(L, "AsyncEventHook: expected 'priority' as number");
|
||||
lua_pop (L, 1);
|
||||
|
||||
lua_pushliteral (L, "type");
|
||||
if (lua_gettable (L, 1) != LUA_TSTRING)
|
||||
luaL_error (L, "AsyncEventHook: expected 'type' as string");
|
||||
type = wplua_lua_to_enum (L, -1, WP_TYPE_EVENT_HOOK_EXEC_TYPE);
|
||||
lua_pop (L, 1);
|
||||
|
||||
lua_pushliteral (L, "steps");
|
||||
if (lua_gettable (L, 1) != LUA_TTABLE)
|
||||
luaL_error (L, "AsyncEventHook: expected 'steps' as table");
|
||||
@@ -2143,8 +2128,7 @@ async_event_hook_new (lua_State *L)
|
||||
execute_step = wplua_function_to_closure (L, -1);
|
||||
lua_pop (L, 1);
|
||||
|
||||
hook = wp_async_event_hook_new (name, priority, type, get_next_step,
|
||||
execute_step);
|
||||
hook = wp_async_event_hook_new (name, priority, get_next_step, execute_step);
|
||||
wplua_pushobject (L, hook);
|
||||
|
||||
lua_pushliteral (L, "interests");
|
||||
|
@@ -322,8 +322,7 @@ wp_standard_event_source_enable (WpPlugin * plugin, WpTransition * transition)
|
||||
|
||||
/* install hook to restore the rescan_scheduled state after rescanning */
|
||||
self->rescan_done_hook = wp_simple_event_hook_new (
|
||||
"rescan-done@std-event-source",
|
||||
WP_EVENT_HOOK_PRIORITY_LOWEST, WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
"rescan-done@std-event-source", WP_EVENT_HOOK_PRIORITY_LOWEST,
|
||||
g_cclosure_new_object ((GCallback) on_rescan_done, G_OBJECT (self)));
|
||||
wp_interest_event_hook_add_interest (
|
||||
WP_INTEREST_EVENT_HOOK (self->rescan_done_hook),
|
||||
|
@@ -67,7 +67,6 @@ end
|
||||
|
||||
AsyncEventHook {
|
||||
name = "node-added@create-item",
|
||||
type = "on-event",
|
||||
priority = HookPriority.LOW,
|
||||
interests = {
|
||||
EventInterest {
|
||||
@@ -139,7 +138,6 @@ AsyncEventHook {
|
||||
|
||||
SimpleEventHook {
|
||||
name = "node-removed@create-item",
|
||||
type = "on-event",
|
||||
priority = HookPriority.LOW,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -9,7 +9,6 @@ sources = {}
|
||||
|
||||
SimpleEventHook {
|
||||
name = "suspend-node",
|
||||
type = "on-event",
|
||||
priority = HookPriority.NORMAL,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -387,7 +387,6 @@ end
|
||||
|
||||
SimpleEventHook {
|
||||
name = "input-stream-removed@policy-bluetooth",
|
||||
type = "on-event",
|
||||
priority = HookPriority.NORMAL,
|
||||
interests = {
|
||||
EventInterest {
|
||||
@@ -405,7 +404,6 @@ SimpleEventHook {
|
||||
|
||||
SimpleEventHook {
|
||||
name = "input-stream-changed@policy-bluetooth",
|
||||
type = "on-event",
|
||||
priority = HookPriority.NORMAL,
|
||||
interests = {
|
||||
EventInterest {
|
||||
@@ -428,7 +426,6 @@ SimpleEventHook {
|
||||
|
||||
SimpleEventHook {
|
||||
name = "bluez-device-added@policy-bluetooth",
|
||||
type = "on-event",
|
||||
priority = HookPriority.VERY_LOW,
|
||||
interests = {
|
||||
EventInterest {
|
||||
@@ -448,7 +445,6 @@ SimpleEventHook {
|
||||
|
||||
SimpleEventHook {
|
||||
name = "metadata-changed@policy-bluetooth",
|
||||
type = "on-event",
|
||||
priority = HookPriority.VERY_LOW,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -80,7 +80,6 @@ end
|
||||
|
||||
SimpleEventHook {
|
||||
name = "filter-forward-format@policy-node",
|
||||
type = "on-event",
|
||||
priority = HookPriority.NORMAL,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -11,7 +11,6 @@ local cutils = require ("common-utils")
|
||||
|
||||
SimpleEventHook {
|
||||
name = "find-best-target@policy-desktop",
|
||||
type = "on-event",
|
||||
priority = HookPriority.LOW,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -10,7 +10,6 @@ local putils = require ("policy-utils")
|
||||
|
||||
SimpleEventHook {
|
||||
name = "find-default-target@policy-desktop",
|
||||
type = "on-event",
|
||||
priority = HookPriority.NORMAL,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -15,7 +15,6 @@ local config = require ("policy-config")
|
||||
|
||||
SimpleEventHook {
|
||||
name = "find-defined-target@policy-desktop",
|
||||
type = "on-event",
|
||||
priority = HookPriority.HIGH,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -10,7 +10,6 @@ local putils = require ("policy-utils")
|
||||
|
||||
SimpleEventHook {
|
||||
name = "sample-find-user-target@policy-desktop",
|
||||
type = "on-event",
|
||||
priority = HookPriority.VERY_HIGH,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -12,7 +12,6 @@ local cutils = require ("common-utils")
|
||||
|
||||
SimpleEventHook {
|
||||
name = "link-target@policy-desktop",
|
||||
type = "on-event",
|
||||
priority = HookPriority.ULTRA_LOW,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -14,7 +14,6 @@ function handleFollowSetting (enable)
|
||||
if (not handles.follow_hook) and (enable == true) then
|
||||
handles.follow_hook = SimpleEventHook {
|
||||
name = "follow@policy-desktop",
|
||||
type = "on-event",
|
||||
priority = HookPriority.NORMAL,
|
||||
interests = {
|
||||
EventInterest {
|
||||
@@ -40,7 +39,6 @@ function handleMoveSetting (enable)
|
||||
if (not handles.move_hook) and (enable == true) then
|
||||
handles.move_hook = SimpleEventHook {
|
||||
name = "move@policy-desktop",
|
||||
type = "on-event",
|
||||
priority = HookPriority.NORMAL,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -13,7 +13,6 @@ local cutils = require ("common-utils")
|
||||
|
||||
SimpleEventHook {
|
||||
name = "prepare-link@policy-desktop",
|
||||
type = "on-event",
|
||||
priority = HookPriority.VERY_LOW,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -32,7 +32,6 @@ end
|
||||
|
||||
SimpleEventHook {
|
||||
name = "linkable-removed@policy-node",
|
||||
type = "on-event",
|
||||
priority = HookPriority.VERY_LOW,
|
||||
interests = {
|
||||
EventInterest {
|
||||
@@ -80,7 +79,6 @@ SimpleEventHook {
|
||||
|
||||
SimpleEventHook {
|
||||
name = "rescan-session@policy-desktop",
|
||||
type = "on-event",
|
||||
-- let higher priority hooks deal with preparing the graph first
|
||||
-- (things like finding the default nodes, etc...)
|
||||
priority = HookPriority.VERY_LOW,
|
||||
@@ -121,7 +119,6 @@ SimpleEventHook {
|
||||
-- go with a low priority to allow NORMAL handlers
|
||||
-- to stop the event and prevent the rescan
|
||||
priority = HookPriority.VERY_LOW,
|
||||
type = "on-event",
|
||||
interests = {
|
||||
-- on linkable added or removed, where linkable is adapter or plain node
|
||||
EventInterest {
|
||||
|
@@ -103,7 +103,6 @@ end
|
||||
|
||||
SimpleEventHook {
|
||||
name = "handle-profiles@policy-device-profile",
|
||||
type = "on-event",
|
||||
priority = HookPriority.LOW,
|
||||
interests = {
|
||||
EventInterest {
|
||||
@@ -166,7 +165,6 @@ SimpleEventHook {
|
||||
|
||||
SimpleEventHook {
|
||||
name = "device-removed@policy-device-profile",
|
||||
type = "on-event",
|
||||
priority = HookPriority.NORMAL,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -469,7 +469,6 @@ end
|
||||
|
||||
SimpleEventHook {
|
||||
name = "handle-device@device-routes",
|
||||
type = "on-event",
|
||||
priority = HookPriority.ULTRA_LOW,
|
||||
interests = {
|
||||
EventInterest {
|
||||
@@ -511,7 +510,6 @@ SimpleEventHook {
|
||||
|
||||
SimpleEventHook {
|
||||
name = "handle-device@device-routes",
|
||||
type = "on-event",
|
||||
priority = HookPriority.ULTRA_LOW,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -345,7 +345,6 @@ local function handleRestoreTargetSetting (enable)
|
||||
-- save "targe.node" if it is present in default metadata
|
||||
restore_target_hook_handles [1] = SimpleEventHook {
|
||||
name = "metadata-added@restore-stream-save-target",
|
||||
type = "on-event",
|
||||
priority = HookPriority.ULTRA_LOW,
|
||||
interests = {
|
||||
EventInterest {
|
||||
@@ -366,7 +365,6 @@ local function handleRestoreTargetSetting (enable)
|
||||
-- save "target.node" on metadata changes
|
||||
restore_target_hook_handles [2] = SimpleEventHook {
|
||||
name = "metadata-changed@restore-stream-save-target",
|
||||
type = "on-event",
|
||||
priority = HookPriority.ULTRA_LOW,
|
||||
interests = {
|
||||
EventInterest {
|
||||
@@ -468,7 +466,6 @@ local function handleRestoreStreamSetting (enable)
|
||||
-- restore-stream properties
|
||||
restore_stream_hook_handles [1] = SimpleEventHook {
|
||||
name = "node-added@restore-stream",
|
||||
type = "on-event",
|
||||
priority = HookPriority.NORMAL,
|
||||
interests = {
|
||||
EventInterest {
|
||||
@@ -495,7 +492,6 @@ local function handleRestoreStreamSetting (enable)
|
||||
-- save-stream if any of the stream parms changes
|
||||
restore_stream_hook_handles [2] = SimpleEventHook {
|
||||
name = "node-parms-changed@restore-stream-save-stream",
|
||||
type = "on-event",
|
||||
priority = HookPriority.NORMAL,
|
||||
interests = {
|
||||
EventInterest {
|
||||
|
@@ -10,7 +10,6 @@
|
||||
|
||||
typedef struct {
|
||||
WpBaseTestFixture base;
|
||||
WpObjectManager *om;
|
||||
GPtrArray *hooks_executed;
|
||||
GPtrArray *events;
|
||||
WpTransition *transition;
|
||||
@@ -28,6 +27,7 @@ static void
|
||||
test_events_teardown (TestFixture *self, gconstpointer user_data)
|
||||
{
|
||||
g_clear_pointer (&self->hooks_executed, g_ptr_array_unref);
|
||||
g_clear_pointer (&self->events, g_ptr_array_unref);
|
||||
wp_base_test_fixture_teardown (&self->base);
|
||||
}
|
||||
|
||||
@@ -54,28 +54,17 @@ hook_quit (WpEvent *event, TestFixture *self)
|
||||
g_main_loop_quit (self->base.loop);
|
||||
}
|
||||
|
||||
static void
|
||||
hook_after_events_with_event (WpEvent *event, TestFixture *self)
|
||||
{
|
||||
g_debug ("in hook_after_events_with_event %p", event);
|
||||
g_ptr_array_add (self->hooks_executed, hook_after_events_with_event);
|
||||
g_ptr_array_add (self->events, event);
|
||||
g_main_loop_quit (self->base.loop);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
test_events_basic (TestFixture *self, gconstpointer user_data)
|
||||
{
|
||||
g_autoptr (WpEventDispatcher) dispatcher = NULL;
|
||||
g_autoptr (WpEventHook) hook = NULL;
|
||||
WpEvent *event1 = NULL, *event2 = NULL;
|
||||
WpEvent *event1 = NULL, *event2 = NULL, *event3 = NULL;
|
||||
|
||||
dispatcher = wp_event_dispatcher_get_instance (self->base.core);
|
||||
g_assert_nonnull (dispatcher);
|
||||
|
||||
hook = wp_simple_event_hook_new ("hook-a", 10,
|
||||
WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
g_cclosure_new ((GCallback) hook_a, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type1", NULL);
|
||||
@@ -83,7 +72,6 @@ test_events_basic (TestFixture *self, gconstpointer user_data)
|
||||
g_clear_object (&hook);
|
||||
|
||||
hook = wp_simple_event_hook_new ("hook-b", -200,
|
||||
WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
g_cclosure_new ((GCallback) hook_b, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type1", NULL);
|
||||
@@ -91,7 +79,6 @@ test_events_basic (TestFixture *self, gconstpointer user_data)
|
||||
g_clear_object (&hook);
|
||||
|
||||
hook = wp_simple_event_hook_new ("hook-c", 100,
|
||||
WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
g_cclosure_new ((GCallback) hook_c, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type1", NULL);
|
||||
@@ -99,30 +86,18 @@ test_events_basic (TestFixture *self, gconstpointer user_data)
|
||||
g_clear_object (&hook);
|
||||
|
||||
hook = wp_simple_event_hook_new ("hook-d", 0,
|
||||
WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
g_cclosure_new ((GCallback) hook_d, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type2", NULL);
|
||||
wp_event_dispatcher_register_hook (dispatcher, hook);
|
||||
g_clear_object (&hook);
|
||||
|
||||
hook = wp_simple_event_hook_new ("hook_after_events_with_event", 2000,
|
||||
WP_EVENT_HOOK_EXEC_TYPE_AFTER_EVENTS_WITH_EVENT,
|
||||
g_cclosure_new ((GCallback) hook_after_events_with_event, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type1", NULL);
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type2", NULL);
|
||||
wp_event_dispatcher_register_hook (dispatcher, hook);
|
||||
g_clear_object (&hook);
|
||||
|
||||
hook = wp_simple_event_hook_new ("hook-quit-async", 1000,
|
||||
WP_EVENT_HOOK_EXEC_TYPE_AFTER_EVENTS,
|
||||
hook = wp_simple_event_hook_new ("hook-quit", -1000,
|
||||
g_cclosure_new ((GCallback) hook_quit, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type1", NULL);
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type2", NULL);
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type3", NULL);
|
||||
wp_event_dispatcher_register_hook (dispatcher, hook);
|
||||
g_clear_object (&hook);
|
||||
|
||||
@@ -131,17 +106,18 @@ test_events_basic (TestFixture *self, gconstpointer user_data)
|
||||
wp_event_dispatcher_push_event (dispatcher, event1);
|
||||
|
||||
g_assert_cmpint (self->hooks_executed->len, == , 0);
|
||||
g_assert_cmpint (self->events->len, == , 0);
|
||||
g_main_loop_run (self->base.loop);
|
||||
g_assert_cmpint (self->hooks_executed->len, == , 5);
|
||||
g_assert_cmpint (self->hooks_executed->len, == , 4);
|
||||
g_assert_cmpint (self->events->len, == , 4);
|
||||
g_assert (hook_c == self->hooks_executed->pdata [0]);
|
||||
g_assert (event1 == self->events->pdata [0]);
|
||||
g_assert (hook_a == self->hooks_executed->pdata [1]);
|
||||
g_assert (event1 == self->events->pdata [1]);
|
||||
g_assert (hook_b == self->hooks_executed->pdata [2]);
|
||||
g_assert (event1 == self->events->pdata [2]);
|
||||
g_assert (hook_after_events_with_event == self->hooks_executed->pdata [3]);
|
||||
g_assert (hook_quit == self->hooks_executed->pdata [3]);
|
||||
g_assert (event1 == self->events->pdata [3]);
|
||||
g_assert (hook_quit == self->hooks_executed->pdata [4]);
|
||||
|
||||
g_ptr_array_remove_range (self->hooks_executed, 0, self->hooks_executed->len);
|
||||
g_assert_cmpint (self->hooks_executed->len, == , 0);
|
||||
@@ -158,8 +134,10 @@ test_events_basic (TestFixture *self, gconstpointer user_data)
|
||||
wp_event_dispatcher_push_event (dispatcher, event2);
|
||||
|
||||
g_assert_cmpint (self->hooks_executed->len, == , 0);
|
||||
g_assert_cmpint (self->events->len, == , 0);
|
||||
g_main_loop_run (self->base.loop);
|
||||
g_assert_cmpint (self->hooks_executed->len, == , 7);
|
||||
g_assert_cmpint (self->hooks_executed->len, == , 5);
|
||||
g_assert_cmpint (self->events->len, == , 5);
|
||||
g_assert (hook_d == self->hooks_executed->pdata [0]);
|
||||
g_assert (event2 == self->events->pdata [0]);
|
||||
g_assert (hook_c == self->hooks_executed->pdata [1]);
|
||||
@@ -168,11 +146,8 @@ test_events_basic (TestFixture *self, gconstpointer user_data)
|
||||
g_assert (event1 == self->events->pdata [2]);
|
||||
g_assert (hook_b == self->hooks_executed->pdata [3]);
|
||||
g_assert (event1 == self->events->pdata [3]);
|
||||
g_assert (hook_after_events_with_event == self->hooks_executed->pdata [4]);
|
||||
g_assert (event2 == self->events->pdata [4]);
|
||||
g_assert (hook_after_events_with_event == self->hooks_executed->pdata [5]);
|
||||
g_assert (event1 == self->events->pdata [5]);
|
||||
g_assert (hook_quit == self->hooks_executed->pdata [6]);
|
||||
g_assert (hook_quit == self->hooks_executed->pdata [4]);
|
||||
g_assert (event1 == self->events->pdata [4]);
|
||||
|
||||
g_ptr_array_remove_range (self->hooks_executed, 0, self->hooks_executed->len);
|
||||
g_assert_cmpint (self->hooks_executed->len, == , 0);
|
||||
@@ -184,19 +159,23 @@ test_events_basic (TestFixture *self, gconstpointer user_data)
|
||||
wp_properties_new ("test.prop", "some-val", NULL), NULL, NULL);
|
||||
event2 = wp_event_new ("type2", 100,
|
||||
wp_properties_new ("test.prop", "some-val", NULL), NULL, NULL);
|
||||
event3 = wp_event_new ("type3", 50,
|
||||
wp_properties_new ("test.prop", "some-val", NULL), NULL, NULL);
|
||||
|
||||
wp_event_dispatcher_push_event (dispatcher, event3);
|
||||
wp_event_dispatcher_push_event (dispatcher, event2);
|
||||
wp_event_dispatcher_push_event (dispatcher, event1);
|
||||
wp_event_stop_processing (event1);
|
||||
|
||||
g_assert_cmpint (self->hooks_executed->len, == , 0);
|
||||
g_assert_cmpint (self->events->len, == , 0);
|
||||
g_main_loop_run (self->base.loop);
|
||||
g_assert_cmpint (self->hooks_executed->len, == , 3);
|
||||
g_assert_cmpint (self->hooks_executed->len, == , 2);
|
||||
g_assert_cmpint (self->events->len, == , 2);
|
||||
g_assert (hook_d == self->hooks_executed->pdata [0]);
|
||||
g_assert (event2 == self->events->pdata [0]);
|
||||
g_assert (hook_after_events_with_event == self->hooks_executed->pdata [1]);
|
||||
g_assert (event2 == self->events->pdata [1]);
|
||||
g_assert (hook_quit == self->hooks_executed->pdata [2]);
|
||||
g_assert (hook_quit == self->hooks_executed->pdata [1]);
|
||||
g_assert (event3 == self->events->pdata [1]);
|
||||
}
|
||||
|
||||
enum {
|
||||
@@ -245,7 +224,6 @@ test_events_async_hook (TestFixture *self, gconstpointer user_data)
|
||||
g_assert_nonnull (dispatcher);
|
||||
|
||||
hook = wp_simple_event_hook_new ("hook-a", 10,
|
||||
WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
g_cclosure_new ((GCallback) hook_a, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type1", NULL);
|
||||
@@ -253,7 +231,6 @@ test_events_async_hook (TestFixture *self, gconstpointer user_data)
|
||||
g_clear_object (&hook);
|
||||
|
||||
hook = wp_simple_event_hook_new ("hook-b", -200,
|
||||
WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
g_cclosure_new ((GCallback) hook_b, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type1", NULL);
|
||||
@@ -261,25 +238,22 @@ test_events_async_hook (TestFixture *self, gconstpointer user_data)
|
||||
g_clear_object (&hook);
|
||||
|
||||
hook = wp_simple_event_hook_new ("hook-c", 100,
|
||||
WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
g_cclosure_new ((GCallback) hook_c, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type1", NULL);
|
||||
wp_event_dispatcher_register_hook (dispatcher, hook);
|
||||
g_clear_object (&hook);
|
||||
|
||||
hook = wp_simple_event_hook_new ("hook-quit", 1000,
|
||||
WP_EVENT_HOOK_EXEC_TYPE_AFTER_EVENTS,
|
||||
hook = wp_simple_event_hook_new ("hook-quit", -1000,
|
||||
g_cclosure_new ((GCallback) hook_quit, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type1", NULL);
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type2", NULL);
|
||||
WP_CONSTRAINT_TYPE_PW_PROPERTY, "event.type", "=s", "type3", NULL);
|
||||
wp_event_dispatcher_register_hook (dispatcher, hook);
|
||||
g_clear_object (&hook);
|
||||
|
||||
hook = wp_async_event_hook_new ("async-test-hook", 50,
|
||||
WP_EVENT_HOOK_EXEC_TYPE_ON_EVENT,
|
||||
g_cclosure_new ((GCallback) async_hook_get_next_step, self, NULL),
|
||||
g_cclosure_new ((GCallback) async_hook_execute_step, self, NULL));
|
||||
wp_interest_event_hook_add_interest (WP_INTEREST_EVENT_HOOK (hook),
|
||||
|
@@ -30,7 +30,6 @@ local common_interests = {
|
||||
AsyncEventHook {
|
||||
name = "test-async-hook",
|
||||
priority = 10,
|
||||
type = "on-event",
|
||||
interests = common_interests,
|
||||
steps = {
|
||||
start = {
|
||||
@@ -57,7 +56,6 @@ AsyncEventHook {
|
||||
SimpleEventHook {
|
||||
name = "test-simple-hook",
|
||||
priority = 15,
|
||||
type = "on-event",
|
||||
interests = common_interests,
|
||||
execute = function (event)
|
||||
checkpoint("simple-1")
|
||||
@@ -65,9 +63,8 @@ SimpleEventHook {
|
||||
}:register()
|
||||
|
||||
SimpleEventHook {
|
||||
name = "test-afterevent-hook",
|
||||
priority = 1,
|
||||
type = "after-events",
|
||||
name = "test-last-hook",
|
||||
priority = -1000,
|
||||
interests = common_interests,
|
||||
execute = function (event)
|
||||
checkpoint("simple-2")
|
||||
|
Reference in New Issue
Block a user