comparison src/aosd/aosd_osd.c @ 907:f20ca9b8cd7d trunk

[svn] aosd: added some more error checking
author giacomo
date Sun, 01 Apr 2007 11:36:52 -0700
parents 16e51fb5908e
children 8b4b381b4399
comparison
equal deleted inserted replaced
906:16e51fb5908e 907:f20ca9b8cd7d
378 378
379 379
380 gint 380 gint
381 aosd_osd_display ( gchar * markup_string , aosd_cfg_osd_t * cfg_osd , gboolean copy_cfg ) 381 aosd_osd_display ( gchar * markup_string , aosd_cfg_osd_t * cfg_osd , gboolean copy_cfg )
382 { 382 {
383 if ( osd_status == AOSD_STATUS_HIDDEN ) 383 if ( osd != NULL )
384 { 384 {
385 aosd_osd_data_alloc( markup_string , cfg_osd , copy_cfg ); 385 if ( osd_status == AOSD_STATUS_HIDDEN )
386 aosd_osd_create(); 386 {
387 osd_status = AOSD_STATUS_FADEIN; 387 aosd_osd_data_alloc( markup_string , cfg_osd , copy_cfg );
388 osd_source_id = g_timeout_add_full( G_PRIORITY_DEFAULT_IDLE , AOSD_TIMING , 388 aosd_osd_create();
389 aosd_timer_func , NULL , NULL ); 389 osd_status = AOSD_STATUS_FADEIN;
390 osd_source_id = g_timeout_add_full( G_PRIORITY_DEFAULT_IDLE , AOSD_TIMING ,
391 aosd_timer_func , NULL , NULL );
392 }
393 else
394 {
395 g_source_remove( osd_source_id ); /* remove timer */
396 osd_source_id = 0;
397 aosd_osd_hide();
398 aosd_osd_data_free();
399 osd_status = AOSD_STATUS_HIDDEN;
400 /* now display new OSD */
401 aosd_osd_data_alloc( markup_string , cfg_osd , copy_cfg );
402 aosd_osd_create();
403 osd_status = AOSD_STATUS_FADEIN;
404 osd_source_id = g_timeout_add_full( G_PRIORITY_DEFAULT_IDLE , AOSD_TIMING ,
405 aosd_timer_func , NULL , NULL );
406 }
407 return 0;
390 } 408 }
391 else 409 else
392 { 410 {
393 g_source_remove( osd_source_id ); /* remove timer */ 411 g_warning( "OSD display requested, but no osd object is loaded!\n" );
394 osd_source_id = 0; 412 }
395 aosd_osd_hide();
396 aosd_osd_data_free();
397 osd_status = AOSD_STATUS_HIDDEN;
398 /* now display new OSD */
399 aosd_osd_data_alloc( markup_string , cfg_osd , copy_cfg );
400 aosd_osd_create();
401 osd_status = AOSD_STATUS_FADEIN;
402 osd_source_id = g_timeout_add_full( G_PRIORITY_DEFAULT_IDLE , AOSD_TIMING ,
403 aosd_timer_func , NULL , NULL );
404 }
405 return 0;
406 } 413 }
407 414
408 415
409 void 416 void
410 aosd_osd_shutdown ( void ) 417 aosd_osd_shutdown ( void )
411 { 418 {
412 if (( osd != NULL ) && ( osd_status != AOSD_STATUS_HIDDEN )) /* osd is being displayed */ 419 if ( osd != NULL )
413 { 420 {
414 g_source_remove( osd_source_id ); /* remove timer */ 421 if ( osd_status != AOSD_STATUS_HIDDEN ) /* osd is being displayed */
415 osd_source_id = 0; 422 {
416 aosd_osd_hide(); 423 g_source_remove( osd_source_id ); /* remove timer */
417 aosd_osd_data_free(); 424 osd_source_id = 0;
418 osd_status = AOSD_STATUS_HIDDEN; 425 aosd_osd_hide();
426 aosd_osd_data_free();
427 osd_status = AOSD_STATUS_HIDDEN;
428 }
429 }
430 else
431 {
432 g_warning( "OSD shutdown requested, but no osd object is loaded!\n" );
419 } 433 }
420 return; 434 return;
421 } 435 }
422 436
423 437
429 /* create Ghosd object */ 443 /* create Ghosd object */
430 if ( transparency_mode == AOSD_MISC_TRANSPARENCY_FAKE ) 444 if ( transparency_mode == AOSD_MISC_TRANSPARENCY_FAKE )
431 osd = ghosd_new(); 445 osd = ghosd_new();
432 else 446 else
433 osd = ghosd_new_with_argbvisual(); 447 osd = ghosd_new_with_argbvisual();
448
449 if ( osd == NULL )
450 g_warning( "Unable to load osd object; OSD will not work properly!\n" );
434 } 451 }
435 return; 452 return;
436 } 453 }
437 454
438 455