Example #1
0
/** Evaluate need for wakelock
 *
 * @param self   wakelock timer object, or NULL
 */
static void
mce_wltimer_eval_wakelock(const mce_wltimer_t *self)
{
    if( !self )
        goto EXIT;

    if( !self->wlt_name)
        goto EXIT;

    if( self->wlt_timer_id )
        mce_wakelock_obtain(self->wlt_name, -1);
    else
        mce_wakelock_release(self->wlt_name);

EXIT:
    return;
}
Example #2
0
/** Install/remove alarm queue D-Bus name owner monitor
 *
 * @param sender   Private D-Bus name to monitor
 * @param monitor  true/false to start/stop monitoring
 */
static void queue_monitor_setup(const char *sender, bool monitor)
{
    if( monitor ) {
        gssize cnt = mce_dbus_owner_monitor_add(sender,
                                                queue_owner_monitor_dbus_cb,
                                                &queue_owner_monitor_list,
                                                ALARM_MAX_MONITORED);
        if( cnt != -1 ) {
            /* A owner monitor was added/renewed */
            mce_log(LL_DEVEL, "monitoring dbus name: %s", sender);
            mce_wakelock_obtain(ALARM_IMMINENT_WAKELOCK_NAME,
                                ALARM_IMMINENT_TIMEOUT_MS);
        }
    }
    else {
        gssize cnt = mce_dbus_owner_monitor_remove(sender,
                                                   &queue_owner_monitor_list);
        if( cnt == 0 ) {
            /* The last monitor was removed */
            mce_log(LL_DEVEL, "all dbus name monitors removed");
            mce_wakelock_release(ALARM_IMMINENT_WAKELOCK_NAME);
        }
    }
}