Beispiel #1
0
gboolean
mc_event_raise (const gchar * event_group_name, const gchar * event_name, gpointer event_data)
{
    GTree *event_group;
    GPtrArray *callbacks;
    guint array_index;

    if (mc_event_grouplist == NULL || event_group_name == NULL || event_name == NULL)
        return FALSE;

    event_group = mc_event_get_event_group_by_name (event_group_name, FALSE, NULL);
    if (event_group == NULL)
        return FALSE;

    callbacks = mc_event_get_event_by_name (event_group, event_name, FALSE, NULL);
    if (callbacks == NULL)
        return FALSE;

    for (array_index = callbacks->len; array_index > 0; array_index--)
    {
        mc_event_callback_t *cb = g_ptr_array_index (callbacks, array_index - 1);
        if (!(*cb->callback) (event_group_name, event_name, cb->init_data, event_data))
            break;
    }
    return TRUE;
}
Beispiel #2
0
void
mc_event_del (const gchar * event_group_name, const gchar * event_name,
              mc_event_callback_func_t event_callback, gpointer event_init_data)
{
    GTree *event_group;
    GPtrArray *callbacks;
    mc_event_callback_t *cb;

    if (mc_event_grouplist == NULL || event_group_name == NULL || event_name == NULL
        || event_callback == NULL)
        return;

    event_group = mc_event_get_event_group_by_name (event_group_name, FALSE, NULL);
    if (event_group == NULL)
        return;

    callbacks = mc_event_get_event_by_name (event_group, event_name, FALSE, NULL);
    if (callbacks == NULL)
        return;

    cb = mc_event_is_callback_in_array (callbacks, event_callback, event_init_data);

    if (cb == NULL)
        return;

    g_ptr_array_remove (callbacks, (gpointer) cb);
    g_free ((gpointer) cb);
}
Beispiel #3
0
gboolean
mc_event_present (const gchar * event_group_name, const gchar * event_name)
{
    GTree *event_group;
    GPtrArray *callbacks;

    if (mc_event_grouplist == NULL || event_group_name == NULL || event_name == NULL)
        return FALSE;

    event_group = mc_event_get_event_group_by_name (event_group_name, FALSE, NULL);
    if (event_group == NULL)
        return FALSE;

    callbacks = mc_event_get_event_by_name (event_group, event_name, FALSE, NULL);
    if (callbacks == NULL)
        return FALSE;

    return TRUE;
}
Beispiel #4
0
gboolean
mc_event_add (const gchar * event_group_name, const gchar * event_name,
              mc_event_callback_func_t event_callback, gpointer event_init_data, GError ** mcerror)
{

    GTree *event_group;
    GPtrArray *callbacks;
    mc_event_callback_t *cb;

    if (mc_event_grouplist == NULL || event_group_name == NULL || event_name == NULL
        || event_callback == NULL)
    {
        g_propagate_error (mcerror,
                           g_error_new (MC_ERROR, 1,
                                        _("Check input data! Some of parameters are NULL!")));
        return FALSE;
    }

    event_group = mc_event_get_event_group_by_name (event_group_name, TRUE, mcerror);
    if (event_group == NULL)
        return FALSE;

    callbacks = mc_event_get_event_by_name (event_group, event_name, TRUE, mcerror);
    if (callbacks == NULL)
        return FALSE;

    cb = mc_event_is_callback_in_array (callbacks, event_callback, event_init_data);
    if (cb == NULL)
    {
        cb = g_new0 (mc_event_callback_t, 1);
        cb->callback = event_callback;
        g_ptr_array_add (callbacks, (gpointer) cb);
    }
    cb->init_data = event_init_data;
    return TRUE;
}