~mjz/+junk/testing

« back to all changes in this revision

Viewing changes to slickswitcher/drawing.py

  • Committer: Matt
  • Date: 2008-07-16 21:05:04 UTC
  • Revision ID: sharkbaitbobby@gmail.com-20080716210504-ap512emd1y6n134o
* slickswitcher:
 -Probable fix for memory leaks
 -Several minor fixes
 -NOW really doesn't die without gconf

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
from os.path import exists, isdir
26
26
import awn
27
27
import gobject
 
28
import gc
28
29
 
29
30
#For debugging the leaks (might not work)
30
 
import gc
31
31
gc.set_debug(gc.DEBUG_LEAK)
32
32
 
33
33
try:
135
135
          cr.restore()
136
136
          
137
137
          #All went well; save the surface
 
138
          if self.background is not None:
 
139
            del self.background
 
140
            gc.collect()
138
141
          self.background = surface
139
142
        
140
143
        #Something went wrong
147
150
              self.settings['height'], gtk.gdk.INTERP_BILINEAR)
148
151
            
149
152
            #All went well; save the pixbuf
 
153
            if self.background is not None:
 
154
              del self.background
 
155
              gc.collect()
150
156
            self.background = pixbuf
151
157
          
152
158
          #Something went wrong
153
159
          except:
154
160
            
155
161
            #Get a blank image as a surface
 
162
            if self.background is not None:
 
163
              del self.background
 
164
              gc.collect()
156
165
            self.background = self.no_background()
157
166
      
158
167
      #Either the path is None, is '', doesn't exist, is a directory, or hasn't
164
173
          isdir(bg_path):
165
174
          
166
175
          #Get a blank image as a surface
 
176
          if self.background is not None:
 
177
            del self.background
 
178
            gc.collect()
167
179
          self.background = self.no_background()
168
180
    
169
181
    #No GConf installed
170
182
    else:
 
183
      if self.background is not None:
 
184
        del self.background
 
185
        gc.collect()
171
186
      self.background = self.no_background()
172
187
  
173
188
  #Return a blank image as a surface
483
498
    #Applet mode
484
499
    if self.applet_mode:
485
500
      if self.last_height != self.height:
 
501
        del self.surface
 
502
        gc.collect()
486
503
        self.surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, self.height, \
487
504
          self.height)
488
505
        
541
558
      
542
559
    #The background is simply a cairo surface
543
560
    else:
 
561
      pixmap = None
544
562
      self.cr.set_source_surface(self.background, 0, 0)
545
563
    
546
564
    #Now fill the background
568
586
    
569
587
    #Tell the owner that we updated
570
588
    self.owner.updated()
 
589
    
 
590
    #Free some memory
 
591
    del self.cr, pixmap
 
592
    gc.collect()
571
593
  
572
594
  #Update the values from the owner
573
595
  def update_values(self):