Various cleanups

This commit is contained in:
William Jon McCann 2010-06-24 02:07:09 -04:00
parent d6476d362b
commit dedef26ef9
2 changed files with 97 additions and 60 deletions

View File

@ -1,9 +1,8 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
*
* @file libnotify/notification.c Notification object
*
* @Copyright (C) 2006 Christian Hammond
* @Copyright (C) 2006 John Palmieri
* Copyright (C) 2006 Christian Hammond
* Copyright (C) 2006 John Palmieri
* Copyright (C) 2010 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -20,16 +19,18 @@
* Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#include "config.h"
#include <dbus/dbus.h>
#include <dbus/dbus-glib.h>
#include <libnotify/notify.h>
#include <libnotify/internal.h>
#include <gtk/gtk.h>
#include <gdk/gdkx.h>
#include "notify.h"
#include "internal.h"
#define CHECK_DBUS_VERSION(major, minor) \
(DBUS_MAJOR_VER > (major) || \
(DBUS_MAJOR_VER == (major) && DBUS_MINOR_VER >= (minor)))
@ -162,10 +163,15 @@ notify_notification_class_init (NotifyNotificationClass *klass)
g_signal_new ("closed",
G_TYPE_FROM_CLASS (object_class),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (NotifyNotificationClass, closed), NULL, NULL,
g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
G_STRUCT_OFFSET (NotifyNotificationClass, closed),
NULL,
NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE,
0);
g_object_class_install_property (object_class, PROP_ID,
g_object_class_install_property (object_class,
PROP_ID,
g_param_spec_int ("id", "ID",
"The notification ID",
0,
@ -177,7 +183,8 @@ notify_notification_class_init (NotifyNotificationClass *klass)
| G_PARAM_STATIC_NICK
| G_PARAM_STATIC_BLURB));
g_object_class_install_property (object_class, PROP_SUMMARY,
g_object_class_install_property (object_class,
PROP_SUMMARY,
g_param_spec_string ("summary",
"Summary",
"The summary text",
@ -188,7 +195,8 @@ notify_notification_class_init (NotifyNotificationClass *klass)
| G_PARAM_STATIC_NICK
| G_PARAM_STATIC_BLURB));
g_object_class_install_property (object_class, PROP_BODY,
g_object_class_install_property (object_class,
PROP_BODY,
g_param_spec_string ("body",
"Message Body",
"The message body text",
@ -199,7 +207,8 @@ notify_notification_class_init (NotifyNotificationClass *klass)
| G_PARAM_STATIC_NICK
| G_PARAM_STATIC_BLURB));
g_object_class_install_property (object_class, PROP_ICON_NAME,
g_object_class_install_property (object_class,
PROP_ICON_NAME,
g_param_spec_string ("icon-name",
"Icon Name",
"The icon filename or icon theme-compliant name",
@ -210,7 +219,8 @@ notify_notification_class_init (NotifyNotificationClass *klass)
| G_PARAM_STATIC_NICK
| G_PARAM_STATIC_BLURB));
g_object_class_install_property (object_class, PROP_ATTACH_WIDGET,
g_object_class_install_property (object_class,
PROP_ATTACH_WIDGET,
g_param_spec_object ("attach-widget",
"Attach Widget",
"The widget to attach the notification to",
@ -221,7 +231,8 @@ notify_notification_class_init (NotifyNotificationClass *klass)
| G_PARAM_STATIC_NICK
| G_PARAM_STATIC_BLURB));
g_object_class_install_property (object_class, PROP_STATUS_ICON,
g_object_class_install_property (object_class,
PROP_STATUS_ICON,
g_param_spec_object ("status-icon",
"Status Icon",
"The status icon to attach the notification to",
@ -232,7 +243,8 @@ notify_notification_class_init (NotifyNotificationClass *klass)
| G_PARAM_STATIC_NICK
| G_PARAM_STATIC_BLURB));
g_object_class_install_property (object_class, PROP_CLOSED_REASON,
g_object_class_install_property (object_class,
PROP_CLOSED_REASON,
g_param_spec_int ("closed-reason",
"Closed Reason",
"The reason code for why the notification was closed",
@ -350,8 +362,9 @@ _g_value_free (GValue *value)
static void
destroy_pair (CallbackPair *pair)
{
if (pair->user_data != NULL && pair->free_func != NULL)
if (pair->user_data != NULL && pair->free_func != NULL) {
pair->free_func (pair->user_data);
}
g_free (pair);
}
@ -378,7 +391,7 @@ notify_notification_finalize (GObject *object)
{
NotifyNotification *obj = NOTIFY_NOTIFICATION (object);
NotifyNotificationPrivate *priv = obj->priv;
DBusGProxy *proxy = _notify_get_g_proxy ();
DBusGProxy *proxy;
_notify_cache_remove_notification (obj);
@ -404,6 +417,7 @@ notify_notification_finalize (GObject *object)
g_object_remove_weak_pointer (G_OBJECT (priv->status_icon),
(gpointer) & priv->status_icon);
proxy = _notify_get_g_proxy ();
if (proxy != NULL && priv->signals_registered) {
dbus_g_proxy_disconnect_signal (proxy,
"NotificationClosed",
@ -492,7 +506,8 @@ notify_notification_new (const char *summary,
"summary", summary,
"body", body,
"icon-name", icon,
"attach-widget", attach, NULL);
"attach-widget", attach,
NULL);
}
/**
@ -712,8 +727,9 @@ _action_signal_handler (DBusGProxy *proxy,
action);
if (pair == NULL) {
if (g_ascii_strcasecmp (action, "default"))
if (g_ascii_strcasecmp (action, "default")) {
g_warning ("Received unknown action %s", action);
}
} else {
pair->cb (notification, action, pair->user_data);
}
@ -722,14 +738,17 @@ _action_signal_handler (DBusGProxy *proxy,
static char **
_gslist_to_string_array (GSList *list)
{
GSList *l;
GArray *a = g_array_sized_new (TRUE,
FALSE,
sizeof (char *),
g_slist_length (list));
GSList *l;
GArray *a;
for (l = list; l != NULL; l = l->next)
a = g_array_sized_new (TRUE,
FALSE,
sizeof (char *),
g_slist_length (list));
for (l = list; l != NULL; l = l->next) {
g_array_append_val (a, l->data);
}
return (char **) g_array_free (a, FALSE);
}
@ -809,7 +828,9 @@ notify_notification_show (NotifyNotification *notification,
action_array = _gslist_to_string_array (priv->actions);
/* TODO: make this nonblocking */
dbus_g_proxy_call (proxy, "Notify", &tmp_error,
dbus_g_proxy_call (proxy,
"Notify",
&tmp_error,
G_TYPE_STRING, notify_get_app_name (),
G_TYPE_UINT, priv->id,
G_TYPE_STRING, priv->icon_name,
@ -822,7 +843,8 @@ notify_notification_show (NotifyNotification *notification,
priv->hints,
G_TYPE_INT, priv->timeout,
G_TYPE_INVALID,
G_TYPE_UINT, &priv->id, G_TYPE_INVALID);
G_TYPE_UINT, &priv->id,
G_TYPE_INVALID);
/* Don't free the elements because they are owned by priv->actions */
g_free (action_array);
@ -909,7 +931,7 @@ static void
_gvalue_array_append_int (GValueArray *array,
gint i)
{
GValue value = { 0 };
GValue value = { 0 };
g_value_init (&value, G_TYPE_INT);
g_value_set_int (&value, i);
@ -920,7 +942,7 @@ _gvalue_array_append_int (GValueArray *array,
static void
_gvalue_array_append_bool (GValueArray *array, gboolean b)
{
GValue value = { 0 };
GValue value = { 0 };
g_value_init (&value, G_TYPE_BOOLEAN);
g_value_set_boolean (&value, b);
@ -933,8 +955,8 @@ _gvalue_array_append_byte_array (GValueArray *array,
guchar *bytes,
gsize len)
{
GArray *byte_array;
GValue value = { 0 };
GArray *byte_array;
GValue value = { 0 };
byte_array = g_array_sized_new (FALSE, FALSE, sizeof (guchar), len);
g_assert (byte_array != NULL);
@ -1198,7 +1220,7 @@ notify_notification_set_hint_string (NotifyNotification *notification,
const char *key,
const char *value)
{
GValue *hint_value;
GValue *hint_value;
g_return_if_fail (notification != NULL);
g_return_if_fail (NOTIFY_IS_NOTIFICATION (notification));

View File

@ -1,9 +1,8 @@
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
*
* @file libnotify/notify.c Notifications library
*
* @Copyright (C) 2004-2006 Christian Hammond <chipx86@chipx86.com>
* @Copyright (C) 2004-2006 Mike Hearn <mike@navi.cx>
* Copyright (C) 2004-2006 Christian Hammond <chipx86@chipx86.com>
* Copyright (C) 2004-2006 Mike Hearn <mike@navi.cx>
* Copyright (C) 2010 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@ -21,13 +20,16 @@
* Boston, MA 02111-1307, USA.
*/
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <unistd.h>
#include <libnotify/notify.h>
#include <libnotify/internal.h>
#include <libnotify/notify-marshal.h>
#include "notify.h"
#include "internal.h"
#include "notify-marshal.h"
static gboolean _initted = FALSE;
static char *_app_name = NULL;
@ -53,8 +55,9 @@ _notify_update_spec_version (void)
{
char *spec_version;
if (!notify_get_server_info (NULL, NULL, NULL, &spec_version))
if (!notify_get_server_info (NULL, NULL, NULL, &spec_version)) {
return FALSE;
}
sscanf (spec_version,
"%d.%d",
@ -118,8 +121,9 @@ notify_uninit (void)
{
GList *l;
if (!_initted)
if (!_initted) {
return;
}
if (_app_name != NULL) {
g_free (_app_name);
@ -169,13 +173,14 @@ on_proxy_destroy (DBusGProxy *proxy,
DBusGProxy *
_notify_get_g_proxy (void)
{
GError *error = NULL;
DBusGConnection *bus = NULL;
GError *error;
DBusGConnection *bus;
if (_proxy != NULL)
return _proxy;
/* lazily initialize D-Bus connection */
error = NULL;
bus = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
if (error != NULL) {
@ -198,12 +203,14 @@ _notify_get_g_proxy (void)
dbus_g_object_register_marshaller (notify_marshal_VOID__UINT_UINT,
G_TYPE_NONE,
G_TYPE_UINT,
G_TYPE_UINT, G_TYPE_INVALID);
G_TYPE_UINT,
G_TYPE_INVALID);
dbus_g_object_register_marshaller (notify_marshal_VOID__UINT_STRING,
G_TYPE_NONE,
G_TYPE_UINT,
G_TYPE_STRING, G_TYPE_INVALID);
G_TYPE_STRING,
G_TYPE_INVALID);
dbus_g_proxy_add_signal (_proxy,
"NotificationClosed",
@ -231,20 +238,24 @@ _notify_get_g_proxy (void)
*
* Returns: A #GList of server capability strings.
*/
GList *
GList *
notify_get_server_caps (void)
{
GError *error = NULL;
char **caps = NULL;
GError *error;
char **caps;
char **cap;
GList *result = NULL;
GList *result;
DBusGProxy *proxy;
caps = NULL;
result = NULL;
proxy = _notify_get_g_proxy ();
if (proxy == NULL) {
return NULL;
}
error = NULL;
if (!dbus_g_proxy_call (proxy,
"GetCapabilities",
&error,
@ -313,37 +324,41 @@ notify_get_server_info (char **ret_name,
return FALSE;
}
if (ret_name != NULL)
if (ret_name != NULL) {
*ret_name = name;
else
} else {
g_free (name);
}
if (ret_vendor != NULL)
if (ret_vendor != NULL) {
*ret_vendor = vendor;
else
} else {
g_free (vendor);
}
if (ret_version != NULL)
if (ret_version != NULL) {
*ret_version = version;
else
} else {
g_free (version);
}
if (spec_version != NULL)
if (spec_version != NULL) {
*ret_spec_version = spec_version;
else
} else {
g_free (spec_version);
}
return TRUE;
}
void
_notify_cache_add_notification (NotifyNotification * n)
_notify_cache_add_notification (NotifyNotification *n)
{
_active_notifications = g_list_prepend (_active_notifications, n);
}
void
_notify_cache_remove_notification (NotifyNotification * n)
_notify_cache_remove_notification (NotifyNotification *n)
{
_active_notifications = g_list_remove (_active_notifications, n);
}