Mercurial > pidgin.yaz
comparison plugins/dbus-example.c @ 14035:8bda65b88e49
[gaim-migrate @ 16638]
A bunch of small changes. Mostly remove "if not null" checks before
calling g_free, g_list_free, g_slist_free and g_strdup. Also use
g_list_foreach() to call g_free to free strings in an array. And
some whitespace changes here and there.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sat, 05 Aug 2006 08:27:39 +0000 |
parents | b43aec5fa9eb |
children |
comparison
equal
deleted
inserted
replaced
14034:0839a7b71325 | 14035:8bda65b88e49 |
---|---|
49 #define DBUS_API_SUBJECT_TO_CHANGE | 49 #define DBUS_API_SUBJECT_TO_CHANGE |
50 #include "dbus-maybe.h" | 50 #include "dbus-maybe.h" |
51 #include "dbus-bindings.h" | 51 #include "dbus-bindings.h" |
52 | 52 |
53 typedef struct { | 53 typedef struct { |
54 char *text; | 54 char *text; |
55 } GaimText; | 55 } GaimText; |
56 | 56 |
57 /* This makes the structure GaimText visible to the gaim-dbus type | 57 /* This makes the structure GaimText visible to the gaim-dbus type |
58 system. It defines GaimText as a type with no parent. From now | 58 system. It defines GaimText as a type with no parent. From now |
59 on, we will be able to register pointers to structures of this | 59 on, we will be able to register pointers to structures of this |
60 type. You to dbus-define types you want to be directly accessible | 60 type. You to dbus-define types you want to be directly accessible |
61 by external applications. */ | 61 by external applications. */ |
62 GAIM_DBUS_DEFINE_TYPE(GaimText) | 62 GAIM_DBUS_DEFINE_TYPE(GaimText) |
63 | 63 |
64 /* Here we make four functions accessible to other applications by | 64 /* Here we make four functions accessible to other applications by |
65 DBus. These functions can access types defined in gaim proper | 65 DBus. These functions can access types defined in gaim proper |
66 (GaimBuddy) as well as the types defined in the plugin (GaimText). */ | 66 (GaimBuddy) as well as the types defined in the plugin (GaimText). */ |
67 DBUS_EXPORT GaimText* dbus_example_get_hello_object(void); | 67 DBUS_EXPORT GaimText* dbus_example_get_hello_object(void); |
76 | 76 |
77 /* This is the GaimText object we want to make publicly visible. */ | 77 /* This is the GaimText object we want to make publicly visible. */ |
78 static GaimText hello; | 78 static GaimText hello; |
79 | 79 |
80 /* Here come the definitions of the four exported functions. */ | 80 /* Here come the definitions of the four exported functions. */ |
81 GaimText* dbus_example_get_hello_object(void) | 81 GaimText* dbus_example_get_hello_object(void) |
82 { | 82 { |
83 return &hello; | 83 return &hello; |
84 } | 84 } |
85 | 85 |
86 void dbus_example_set_text(GaimText *obj, const char *text) | 86 void dbus_example_set_text(GaimText *obj, const char *text) |
87 { | 87 { |
88 if (obj != NULL) { | 88 if (obj != NULL) { |
89 g_free(obj->text); | 89 g_free(obj->text); |
90 obj->text = g_strdup(text); | 90 obj->text = g_strdup(text); |
91 } | 91 } |
92 } | 92 } |
93 | 93 |
94 const char *dbus_example_get_text(GaimText *obj) | 94 const char *dbus_example_get_text(GaimText *obj) |
95 { | 95 { |
96 if (obj != NULL) | 96 if (obj != NULL) |
97 return obj->text; | 97 return obj->text; |
98 else | 98 else |
99 return NULL; | 99 return NULL; |
100 } | 100 } |
101 | 101 |
102 const char *dbus_example_get_buddy_name(GaimBuddy *buddy) | 102 const char *dbus_example_get_buddy_name(GaimBuddy *buddy) |
103 { | 103 { |
104 return gaim_buddy_get_name(buddy); | 104 return gaim_buddy_get_name(buddy); |
105 } | 105 } |
106 | 106 |
107 /* And now standard plugin stuff */ | 107 /* And now standard plugin stuff */ |
108 | 108 |
109 static gboolean | 109 static gboolean |
110 plugin_load(GaimPlugin *plugin) | 110 plugin_load(GaimPlugin *plugin) |
111 { | 111 { |
112 GAIM_DBUS_RETURN_FALSE_IF_DISABLED(plugin); | 112 GAIM_DBUS_RETURN_FALSE_IF_DISABLED(plugin); |
113 | 113 |
114 /* First, we have to register our four exported functions with the | 114 /* First, we have to register our four exported functions with the |
115 main gaim dbus loop. Without this statement, the gaim dbus | 115 main gaim dbus loop. Without this statement, the gaim dbus |
116 code wouldn't know about our functions. */ | 116 code wouldn't know about our functions. */ |
117 GAIM_DBUS_REGISTER_BINDINGS(plugin); | 117 GAIM_DBUS_REGISTER_BINDINGS(plugin); |
118 | 118 |
119 /* Then, we register the hello object of type GaimText. Note that | 119 /* Then, we register the hello object of type GaimText. Note that |
120 pointer registrations / unregistrations are completely dynamic; | 120 pointer registrations / unregistrations are completely dynamic; |
121 they don't have to be made when the plugin is loaded / | 121 they don't have to be made when the plugin is loaded / |
122 unloaded. Without this statement the dbus gaim code wouldn't | 122 unloaded. Without this statement the dbus gaim code wouldn't |
123 know about the hello object. */ | 123 know about the hello object. */ |
124 GAIM_DBUS_REGISTER_POINTER(&hello, GaimText); | 124 GAIM_DBUS_REGISTER_POINTER(&hello, GaimText); |
125 | 125 |
126 hello.text = g_strdup("Hello."); | 126 hello.text = g_strdup("Hello."); |
127 | 127 |
128 return TRUE; | 128 return TRUE; |
129 } | 129 } |
130 | 130 |
131 | 131 |
132 static gboolean | 132 static gboolean |
133 plugin_unload(GaimPlugin *plugin) | 133 plugin_unload(GaimPlugin *plugin) |
134 { | 134 { |
135 g_free(hello.text); | 135 g_free(hello.text); |
136 | 136 |
137 /* It is necessary to unregister all pointers registered by the module. */ | 137 /* It is necessary to unregister all pointers registered by the module. */ |
138 GAIM_DBUS_UNREGISTER_POINTER(&hello); | 138 GAIM_DBUS_UNREGISTER_POINTER(&hello); |
139 | 139 |
140 return TRUE; | 140 return TRUE; |
141 } | 141 } |
142 | 142 |
143 static GaimPluginInfo info = | 143 static GaimPluginInfo info = |
144 { | 144 { |
145 GAIM_PLUGIN_MAGIC, | 145 GAIM_PLUGIN_MAGIC, |