Changeset 1840
- Timestamp:
- 04/26/07 14:59:16
- Files:
-
- trunk/ChangeLog (modified) (1 diff)
- trunk/libtinymail-maemo/tny-maemo-conic-device.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ChangeLog
r1838 r1840 1 2007-04-26 Murray Cumming <murrayc@murrayc.com> 2 3 * libtinymail-maemo/tny-maemo-conic-device.c: 4 (tny_maemo_conic_device_instance_init), 5 (tny_maemo_conic_device_new): Do all the initialization in init, because 6 _new functions should just call g_object_new() and not access private API, 7 because they are just C convenience functions. 8 (on_connection_event), (tny_maemo_conic_device_connect), 9 (tny_maemo_conic_device_disconnect), 10 (tny_maemo_conic_device_get_iap), 11 (tny_maemo_conic_device_get_iap_list), 12 (tny_maemo_conic_device_force_online), 13 (tny_maemo_conic_device_force_offline), 14 (tny_maemo_conic_device_finalize): 15 Copy the iap string instead of just storing the pointer, because we have no 16 guarantees about the lifetime of the string that con_ic_event_get_iap_id() 17 returns. Free it in finalize. 18 Added g_return_if*() checks for priv->cnx, without which nothing could work. 19 1 20 2007-04-23 Philip Van Hoof <pvanhoof@gnome.org> 2 21 trunk/libtinymail-maemo/tny-maemo-conic-device.c
r1800 r1840 30 30 ConIcConnection *cnx; 31 31 gboolean is_online; 32 constgchar *iap;32 gchar *iap; 33 33 } TnyMaemoConicDevicePriv; 34 34 … … 49 49 TnyMaemoConicDevice *device; 50 50 TnyMaemoConicDevicePriv *priv; 51 gboolean is_online ;51 gboolean is_online = FALSE; 52 52 53 53 g_return_if_fail (CON_IC_IS_CONNECTION(cnx)); … … 83 83 switch (con_ic_connection_event_get_status(event)) { 84 84 case CON_IC_STATUS_CONNECTED: 85 priv->iap = con_ic_event_get_iap_id ((ConIcEvent*)(event));85 priv->iap = g_strdup (con_ic_event_get_iap_id ((ConIcEvent*)(event))); 86 86 is_online = TRUE; 87 87 break; … … 117 117 tny_maemo_conic_device_connect (TnyMaemoConicDevice *self, const gchar* iap_id) 118 118 { 119 TnyMaemoConicDevicePriv *priv; 119 TnyMaemoConicDevicePriv *priv; 120 120 121 121 g_return_if_fail (TNY_IS_DEVICE(self)); 122 122 priv = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); 123 123 124 g_return_val_if_fail (priv->cnx, FALSE); 125 124 126 if (iap_id) { 125 127 if (!con_ic_connection_connect_by_id (priv->cnx, iap_id, CON_IC_CONNECT_FLAG_NONE)) { … … 153 155 154 156 g_return_if_fail (TNY_IS_MAEMO_CONIC_DEVICE(self)); 157 g_return_val_if_fail (priv->cnx, FALSE); 158 155 159 priv = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); 160 156 161 157 162 if (iap_id) { … … 212 217 g_return_val_if_fail (TNY_IS_MAEMO_CONIC_DEVICE(self), NULL); 213 218 g_return_val_if_fail (iap_id, NULL); 219 g_return_val_if_fail (priv->cnx, NULL); 214 220 215 221 priv = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); … … 235 241 236 242 g_return_val_if_fail (TNY_IS_MAEMO_CONIC_DEVICE(self), NULL); 243 g_return_val_if_fail (priv->cnx, NULL); 237 244 238 245 priv = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); … … 272 279 273 280 g_return_if_fail (TNY_IS_DEVICE(self)); 281 g_return_if_fail (priv->cnx); 282 274 283 priv = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); 275 284 … … 289 298 290 299 g_return_if_fail (TNY_IS_DEVICE(self)); 300 g_return_if_fail (priv->cnx); 301 291 302 priv = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); 292 303 … … 313 324 { 314 325 TnyMaemoConicDevice *self = (TnyMaemoConicDevice *)instance; 326 315 327 TnyMaemoConicDevicePriv *priv = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self); 316 317 priv->is_online = FALSE;318 }319 320 321 322 /**323 * tny_maemo_conic_device_new:324 *325 * Return value: A new #TnyDevice instance326 **/327 TnyDevice*328 tny_maemo_conic_device_new (void)329 {330 TnyMaemoConicDevice *self;331 TnyMaemoConicDevicePriv *priv;332 333 self = g_object_new (TNY_TYPE_MAEMO_CONIC_DEVICE, NULL);334 priv = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (self);335 336 328 priv->iap = NULL; 337 329 priv->cnx = con_ic_connection_new (); 338 330 if (!priv->cnx) { 339 g_warning ("con_ic_connection_new failed"); 340 g_object_unref (self); 341 return NULL; 331 g_warning ("con_ic_connection_new failed. The TnyMaemoConicDevice will be useless."); 342 332 } 343 333 g_signal_connect (priv->cnx, "connection-event", … … 351 341 g_warning ("could not send connect dbus message"); 352 342 343 344 priv->is_online = FALSE; 345 } 346 347 348 349 /** 350 * tny_maemo_conic_device_new: 351 * 352 * Return value: A new #TnyDevice instance 353 **/ 354 TnyDevice* 355 tny_maemo_conic_device_new (void) 356 { 357 TnyMaemoConicDevice *self = g_object_new (TNY_TYPE_MAEMO_CONIC_DEVICE, NULL); 353 358 return TNY_DEVICE (self); 354 359 } … … 359 364 TnyMaemoConicDevicePriv *priv; 360 365 priv = TNY_MAEMO_CONIC_DEVICE_GET_PRIVATE (obj); 361 if ( CON_IC_IS_CONNECTION(priv->cnx)) {366 if (priv->cnx && CON_IC_IS_CONNECTION(priv->cnx)) { 362 367 if (!con_ic_connection_disconnect (priv->cnx)) 363 368 g_warning ("failed to send disconnect dbus message"); 364 369 g_object_unref (priv->cnx); 365 370 priv->cnx = NULL; 371 } 372 373 if (priv->iap) { 374 g_free (priv->iap); 366 375 priv->iap = NULL; 367 } 376 } 368 377 369 378 (*parent_class->finalize) (obj);
