~ubuntu-branches/ubuntu/oneiric/cairo-dock/oneiric

« back to all changes in this revision

Viewing changes to src/gldit/cairo-dock-load.c

  • Committer: Bazaar Package Importer
  • Author(s): Matthieu Baerts (matttbe)
  • Date: 2010-09-07 20:31:25 UTC
  • mto: (18.1.1 cairo-dock) (19.1.1 cairo-dock)
  • mto: This revision was merged to the branch mainline in revision 14.
  • Revision ID: james.westby@ubuntu.com-20100907203125-a91ch8odv2r6ziic
Tags: upstream-2.2.0~0rc1
ImportĀ upstreamĀ versionĀ 2.2.0~0rc1

Show diffs side-by-side

added added

removed removed

Lines of Context:
365
365
 
366
366
static cairo_surface_t *_cairo_dock_create_surface_from_desktop_bg (void)  // attention : fonction lourde.
367
367
{
368
 
        cd_debug ("%s ()", __func__);
 
368
        //g_print ("+++ %s ()\n", __func__);
369
369
        Pixmap iRootPixmapID = cairo_dock_get_window_background_pixmap (cairo_dock_get_root_id ());
370
370
        g_return_val_if_fail (iRootPixmapID != 0, NULL);
371
371
        
436
436
 
437
437
CairoDockDesktopBackground *cairo_dock_get_desktop_background (gboolean bWithTextureToo)
438
438
{
439
 
        cd_message ("%s (%d, %d)", __func__, bWithTextureToo, s_pDesktopBg?s_pDesktopBg->iRefCount:-1);
 
439
        //g_print ("%s (%d, %d)\n", __func__, bWithTextureToo, s_pDesktopBg?s_pDesktopBg->iRefCount:-1);
440
440
        if (s_pDesktopBg == NULL)
441
441
        {
442
442
                s_pDesktopBg = g_new0 (CairoDockDesktopBackground, 1);
443
443
        }
444
 
        if (s_pDesktopBg->iRefCount == 0)
 
444
        if (s_pDesktopBg->pSurface == NULL)
445
445
        {
446
446
                s_pDesktopBg->pSurface = _cairo_dock_create_surface_from_desktop_bg ();
447
447
        }
453
453
        s_pDesktopBg->iRefCount ++;
454
454
        if (s_pDesktopBg->iSidDestroyBg != 0)
455
455
        {
 
456
                //g_print ("cancel pending destroy\n");
456
457
                g_source_remove (s_pDesktopBg->iSidDestroyBg);
457
458
                s_pDesktopBg->iSidDestroyBg = 0;
458
459
        }
461
462
 
462
463
static gboolean _destroy_bg (CairoDockDesktopBackground *pDesktopBg)
463
464
{
464
 
        cd_message ("%s ()", __func__);
 
465
        //g_print ("%s ()\n", __func__);
465
466
        g_return_val_if_fail (pDesktopBg != NULL, 0);
466
467
        if (pDesktopBg->pSurface != NULL)
467
468
        {
468
469
                cairo_surface_destroy (pDesktopBg->pSurface);
469
470
                pDesktopBg->pSurface = NULL;
 
471
                //g_print ("--- surface destroyed\n");
470
472
        }
471
473
        if (pDesktopBg->iTexture != 0)
472
474
        {
478
480
}
479
481
void cairo_dock_destroy_desktop_background (CairoDockDesktopBackground *pDesktopBg)
480
482
{
 
483
        //g_print ("%s ()\n", __func__);
481
484
        g_return_if_fail (pDesktopBg != NULL);
482
485
        if (pDesktopBg->iRefCount > 0)
483
486
                pDesktopBg->iRefCount --;
484
487
        if (pDesktopBg->iRefCount == 0 && pDesktopBg->iSidDestroyBg == 0)
485
488
        {
 
489
                //g_print ("add pending destroy\n");
486
490
                pDesktopBg->iSidDestroyBg = g_timeout_add_seconds (3, (GSourceFunc)_destroy_bg, pDesktopBg);
487
491
        }
488
492
}
501
505
 
502
506
void cairo_dock_reload_desktop_background (void)
503
507
{
504
 
        cd_message ("%s ()", __func__);
 
508
        //g_print ("%s ()\n", __func__);
505
509
        if (s_pDesktopBg == NULL)  // rien a recharger.
506
510
                return ;
507
511
        if (s_pDesktopBg->pSurface == NULL && s_pDesktopBg->iTexture == 0)  // rien a recharger.
508
512
                return ;
509
513
        
510
514
        if (s_pDesktopBg->pSurface != NULL)
 
515
        {
511
516
                cairo_surface_destroy (s_pDesktopBg->pSurface);
 
517
                //g_print ("--- surface destroyed\n");
 
518
        }
512
519
        s_pDesktopBg->pSurface = _cairo_dock_create_surface_from_desktop_bg ();
513
520
        
514
521
        if (s_pDesktopBg->iTexture != 0)
524
531
        cd_debug ("");
525
532
        if (s_pDesktopBg)  // on decharge le desktop-bg de force.
526
533
        {
527
 
                _destroy_bg (s_pDesktopBg);  // detruit ses ressources immediatement, mais pas le pointeur.
528
534
                if (s_pDesktopBg->iSidDestroyBg != 0)
529
535
                {
530
536
                        g_source_remove (s_pDesktopBg->iSidDestroyBg);
531
537
                        s_pDesktopBg->iSidDestroyBg = 0;
532
538
                }
533
539
                s_pDesktopBg->iRefCount = 0;
 
540
                _destroy_bg (s_pDesktopBg);  // detruit ses ressources immediatement, mais pas le pointeur.
534
541
        }
535
542
        g_pFakeTransparencyDesktopBg = NULL;
536
543
        cairo_dock_unload_desklet_buttons ();