]> Dogcows Code - chaz/openbox/commitdiff
allocate colors right away instead of delaying it, since they get allocated out of...
authorDana Jansens <danakj@orodu.net>
Mon, 17 Feb 2003 16:36:35 +0000 (16:36 +0000)
committerDana Jansens <danakj@orodu.net>
Mon, 17 Feb 2003 16:36:35 +0000 (16:36 +0000)
otk/rendercolor.cc
otk/rendercolor.hh

index e5cbb7cba45d8b99a55387adde6a59b27c5729f9..5da218ea92f84f101620240714e270ab89be83e8 100644 (file)
@@ -28,23 +28,21 @@ RenderColor::RenderColor(int screen, unsigned char red,
   : _screen(screen),
     _red(red),
     _green(green),
-    _blue(blue),
-    _allocated(false),
-    _created(false)
+    _blue(blue)
 {
+  create();
 }
 
 RenderColor::RenderColor(int screen, RGB rgb)
   : _screen(screen),
     _red(rgb.r),
     _green(rgb.g),
-    _blue(rgb.b),
-    _allocated(false),
-    _created(false)
+    _blue(rgb.b)
 {
+  create();
 }
 
-void RenderColor::create() const
+void RenderColor::create()
 {
   unsigned long color = _blue | _green << 8 | _red << 16;
   
@@ -67,7 +65,6 @@ void RenderColor::create() const
     xcol.blue = (_blue << 8) | _blue;
 
     display->renderControl(_screen)->allocateColor(&xcol);
-    _allocated = true;
 
     _pixel = xcol.pixel;
     gcv.foreground = _pixel;
@@ -81,41 +78,23 @@ void RenderColor::create() const
     _cache[_screen][color] = item;
     ++item->count;
   }
-
-  _created = true;
-}
-
-unsigned long RenderColor::pixel() const
-{
-  if (!_created) create();
-  return _pixel;
-}
-
-GC RenderColor::gc() const
-{
-  if (!_created) create();
-  return _gc;
 }
 
 RenderColor::~RenderColor()
 {
   unsigned long color = _blue | _green << 8 | _red << 16;
 
-  if (_created) {
-    CacheItem *item = _cache[_screen][color];
-    assert(item); // better be...
-
-    if (--item->count <= 0) {
-      // remove from the cache
-      XFreeGC(**display, _gc);
-      _cache[_screen][color] = 0;
-      delete item;
-
-      if (_allocated) {
-        const ScreenInfo *info = display->screenInfo(_screen);
-        XFreeColors(**display, info->colormap(), &_pixel, 1, 0);
-      }
-    }
+  CacheItem *item = _cache[_screen][color];
+  assert(item); // better be...
+  
+  if (--item->count <= 0) {
+    // remove from the cache
+    XFreeGC(**display, _gc);
+    _cache[_screen][color] = 0;
+    delete item;
+
+    const ScreenInfo *info = display->screenInfo(_screen);
+    XFreeColors(**display, info->colormap(), &_pixel, 1, 0);
   }
 }
 
index 1f24b3c9106681705422f16c828ac70b3e482fd5..5076167f3d9d565ddd43d73fdff1b19b09a0a197 100644 (file)
@@ -37,13 +37,10 @@ private:
   unsigned char _green;
   unsigned char _blue;
 
-  mutable unsigned long _pixel;
-  mutable GC _gc;
+  unsigned long _pixel;
+  GC _gc;
 
-  mutable bool _allocated;
-  mutable bool _created;
-
-  void create() const;
+  void create();
   
 public:
   static void initialize();
@@ -58,8 +55,8 @@ public:
   inline unsigned char red() const { return _red; }
   inline unsigned char green() const { return _green; }
   inline unsigned char blue() const { return _blue; }
-  unsigned long pixel() const;
-  GC gc() const;
+  unsigned long pixel() const { return _pixel; }
+  GC gc() const { return _gc; }
 };
 
 }
This page took 0.025673 seconds and 4 git commands to generate.