Ticket #4914: lxsession-0.4.9.2-fix-logind-dbus-calls.patch

File lxsession-0.4.9.2-fix-logind-dbus-calls.patch, 2.8 KB (added by Miklos Karacsony, 12 years ago)
  • lxsession-0.4.9.2/lxsession-logout/dbus-interface.c

    old new  
    244244    return function_result;
    245245}
    246246
    247 static void
    248 logind_call_function (const gchar *function, gboolean value, GError **error)
     247static char *
     248logind_call_function (const gchar *function)
    249249{
    250250    GVariant *result;
     251    GError *err = NULL;
    251252
    252253    if (!logind_proxy)
    253254    {
    … …  
    258259                                                      "/org/freedesktop/login1",
    259260                                                      "org.freedesktop.login1.Manager",
    260261                                                      NULL,
    261                                                       error);
     262                                                      &err);
     263        if (err != NULL)
     264            g_error_free(err);
    262265        if (!logind_proxy)
    263             return;
     266            return NULL;
    264267    }
    265268
    266269    result = g_dbus_proxy_call_sync (logind_proxy,
    267270                                     function,
    268                                      g_variant_new ("(b)", value),
     271                                     g_variant_new ("(b)", TRUE),
    269272                                     G_DBUS_CALL_FLAGS_NONE,
    270273                                     -1,
    271274                                     NULL,
    272                                      error);
    273     g_variant_unref (result);
    274     return;
     275                                     &err);
     276    if (result)
     277        g_variant_unref (result);
     278    if (err != NULL) {
     279        char *r = strdup(err->message);
     280        g_error_free(err);
     281        return r;
     282    }
     283    return NULL;
    275284}
    276285
    277286gboolean
    … …  
    280289    return logind_query ("CanPowerOff", FALSE, NULL);
    281290}
    282291
    283 void
    284 dbus_logind_PowerOff (GError **error)
     292char *
     293dbus_logind_PowerOff (void)
    285294{
    286     logind_call_function ("PowerOff", TRUE, error);
     295    return logind_call_function ("PowerOff");
    287296}
    288297
    289298gboolean
    … …  
    292301    return logind_query ("CanReboot", FALSE, NULL);
    293302}
    294303
    295 void
    296 dbus_logind_Reboot (GError **error)
     304char *
     305dbus_logind_Reboot (void)
    297306{
    298     logind_call_function ("Reboot", TRUE, error);
     307    return logind_call_function ("Reboot");
    299308}
    300309
    301310gboolean
    … …  
    304313    return logind_query ("CanSuspend", FALSE, NULL);
    305314}
    306315
    307 void
    308 dbus_logind_Suspend (GError **error)
     316char *
     317dbus_logind_Suspend (void)
    309318{
    310     logind_call_function ("Suspend", TRUE, error);
     319    return logind_call_function ("Suspend");
    311320}
    312321
    313322gboolean
    … …  
    316325    return logind_query ("CanHibernate", FALSE, NULL);
    317326}
    318327
    319 void
    320 dbus_logind_Hibernate (GError **error)
     328char *
     329dbus_logind_Hibernate (void)
    321330{
    322     logind_call_function ("Hibernate", TRUE, error);
     331    return logind_call_function ("Hibernate");
    323332}
    324333
    325334/*** ConsoleKit mechanism ***/