gladish: Don't log dbus error when studio is not loaded on gladish start

This commit is contained in:
Nedko Arnaudov 2010-12-23 02:36:58 +02:00
parent 67ba277fa5
commit d4946efe30
5 changed files with 51 additions and 2 deletions

View File

@ -189,6 +189,7 @@ static void disconnect_dbus(void)
{
dbus_object_path_destroy(g_dbus_connection, g_control_object);
dbus_connection_unref(g_dbus_connection);
dbus_call_last_error_cleanup();
}
void term_signal_handler(int signum)

View File

@ -42,6 +42,8 @@
DBusConnection * g_dbus_connection;
DBusError g_dbus_error;
static char * g_dbus_call_last_error_name;
static char * g_dbus_call_last_error_message;
struct dbus_signal_hook_descriptor
{
@ -62,6 +64,41 @@ struct dbus_service_descriptor
LIST_HEAD(g_dbus_services);
void dbus_call_last_error_cleanup(void)
{
free(g_dbus_call_last_error_name);
g_dbus_call_last_error_name = NULL;
free(g_dbus_call_last_error_message);
g_dbus_call_last_error_message = NULL;
}
bool dbus_call_last_error_is_name(const char * name)
{
return g_dbus_call_last_error_name != NULL && strcmp(name, g_dbus_call_last_error_name) == 0;
}
const char * dbus_call_last_error_get_message(void)
{
return g_dbus_call_last_error_message != NULL ? g_dbus_call_last_error_message : "";
}
static void dbus_call_last_error_set(void)
{
dbus_call_last_error_cleanup();
if (g_dbus_error.name != NULL)
{
g_dbus_call_last_error_name = strdup(g_dbus_error.name);
}
if (g_dbus_error.message != NULL)
{
g_dbus_call_last_error_message = strdup(g_dbus_error.message);
}
}
bool dbus_iter_get_dict_entry(DBusMessageIter * iter_ptr, const char * key, void * value, int * type, int * size)
{
DBusMessageIter dict_iter;
@ -353,7 +390,7 @@ dbus_call_raw(
&g_dbus_error);
if (reply_ptr == NULL)
{
//log_error("calling method '%s' failed, error is '%s'", method, g_dbus_error.message);
dbus_call_last_error_set();
dbus_error_free(&g_dbus_error);
}

View File

@ -111,6 +111,10 @@ dbus_unregister_service_lifetime_hook(
DBusConnection * connection,
const char * service);
void dbus_call_last_error_cleanup(void);
bool dbus_call_last_error_is_name(const char * name);
const char * dbus_call_last_error_get_message(void);
#include "method.h"
#include "signal.h"
#include "interface.h"

View File

@ -55,4 +55,6 @@ void dbus_uninit(void)
{
dbus_error_free(&g_dbus_error);
}
dbus_call_last_error_cleanup();
}

View File

@ -298,7 +298,12 @@ studio_proxy_set_room_callbacks(
if (!dbus_call(0, SERVICE_NAME, STUDIO_OBJECT_PATH, IFACE_STUDIO, "GetRoomList", "", NULL, &reply_ptr))
{
log_error("Cannot fetch studio room list");
/* Don't log error if there is no studio loaded */
if (!dbus_call_last_error_is_name(DBUS_ERROR_UNKNOWN_METHOD))
{
log_error("Cannot fetch studio room list: %s", dbus_call_last_error_get_message());
}
return;
}