all repos — openbox @ 9f705c02b9c412c053fc12a2ebdc5cebe83400c8

openbox fork - make it a bit more like ryudo

*** empty log message ***
Dana Jansens danakj@orodu.net
commit

9f705c02b9c412c053fc12a2ebdc5cebe83400c8

parent

2005c344bdb4b59611972bc37e194d2e14cdf911

4 files changed, 19 insertions(+), 15 deletions(-)

jump to
M otk/rendercontrol.hhotk/rendercontrol.hh

@@ -10,7 +10,7 @@

namespace otk { class ScreenInfo; -class Widget; +class Surface; class RenderControl { protected:

@@ -66,7 +66,7 @@ virtual ~RenderControl();

static RenderControl *getRenderControl(int screen); - virtual void render(Widget *wi) = 0; + virtual void render(Surface *sf) = 0; }; }
M otk/surface.hhotk/surface.hh

@@ -3,6 +3,7 @@ #ifndef __surface_hh

#define __surface_hh #include "point.hh" +#include "truerendercontrol.hh" extern "C" { #include <X11/Xlib.h>

@@ -26,6 +27,8 @@

virtual const Point& size() const { return _size; } virtual int width() const { return _size.x(); } virtual int height() const { return _size.y(); } + + friend class TrueRenderControl; }; }
M otk/truerendercontrol.ccotk/truerendercontrol.cc

@@ -7,7 +7,7 @@

#include "truerendercontrol.hh" #include "display.hh" #include "screeninfo.hh" -#include "widget.hh" +#include "surface.hh" extern "C" { #ifdef HAVE_STDLIB_H

@@ -21,7 +21,10 @@

namespace otk { TrueRenderControl::TrueRenderControl(const ScreenInfo *screen) - : RenderControl(screen) + : RenderControl(screen), + _red_offset(0), + _green_offset(0), + _blue_offset(0) { printf("Initializing TrueColor RenderControl\n");

@@ -99,12 +102,12 @@ assert(false); // wtf?

} } -void TrueRenderControl::render(Widget *wi) +void TrueRenderControl::render(Surface *sf) { - assert(wi); + assert(sf); - int w = wi->width(), h = wi->height(); - Pixmap p = XCreatePixmap(**display, wi->window(), w, h, _screen->depth()); + int w = sf->width(), h = sf->height(); + XImage *im = XCreateImage(**display, _screen->visual(), _screen->depth(), ZPixmap, 0, NULL, w, h, 32, 0);

@@ -125,17 +128,15 @@ printf("\nDone %d %d\n", im->bytes_per_line * h, dp - data);

im->data = (char*) data; - XPutImage(**display, p, DefaultGC(**display, _screen->screen()), + if (!sf->_pm) + sf->_pm = XCreatePixmap(**display, _screen->rootWindow(), w, h, + _screen->depth()); + XPutImage(**display, sf->_pm, DefaultGC(**display, _screen->screen()), im, 0, 0, 0, 0, w, h); //delete [] image->data; //image->data = NULL; XDestroyImage(im); - - XSetWindowBackgroundPixmap(**display, wi->window(), p); - XClearWindow(**display, wi->window()); - - XFreePixmap(**display, p); } }
M otk/truerendercontrol.hhotk/truerendercontrol.hh

@@ -17,7 +17,7 @@ public:

TrueRenderControl(const ScreenInfo *screen); virtual ~TrueRenderControl(); - virtual void render(Widget *wi); + virtual void render(Surface *sf); }; }