all repos — openbox @ 96a9196cbb71b7f8d5e3d98a92b2e59bb1b591a8

openbox fork - make it a bit more like ryudo

otk::Timer-ng!! thanks ManMower for this shizznit!
Dana Jansens danakj@orodu.net
commit

96a9196cbb71b7f8d5e3d98a92b2e59bb1b591a8

parent

0afb43164484dcac4773ad778c032687da6b01aa

M otk/Makefile.amotk/Makefile.am

@@ -10,7 +10,7 @@ noinst_LTLIBRARIES=libotk.la

libotk_la_SOURCES= color.cc display.cc font.cc gccache.cc image.cc \ property.cc imagecontrol.cc rect.cc screeninfo.cc \ - texture.cc timer.cc timerqueuemanager.cc style.cc \ + texture.cc timer.cc style.cc \ configuration.cc util.cc widget.cc focuswidget.cc \ button.cc eventhandler.cc eventdispatcher.cc ustring.cc \ label.cc focuslabel.cc application.cc appwidget.cc

@@ -34,18 +34,17 @@ # swig $(filter -I%,$(CXXFLAGS)) -python -shadow -c++ -o $@ $<

# local dependencies application.o: application.cc application.hh eventdispatcher.hh \ - eventhandler.hh display.hh configuration.hh timerqueuemanager.hh \ - timerqueue.hh timer.hh image.hh color.hh screeninfo.hh rect.hh \ + eventhandler.hh display.hh configuration.hh \ + timer.hh image.hh color.hh screeninfo.hh rect.hh \ point.hh style.hh font.hh texture.hh util.hh widget.hh appwidget.o: appwidget.cc appwidget.hh widget.hh rect.hh point.hh \ texture.hh color.hh util.hh style.hh font.hh image.hh screeninfo.hh \ timer.hh configuration.hh eventdispatcher.hh eventhandler.hh \ - application.hh display.hh timerqueuemanager.hh timerqueue.hh + application.hh display.hh button.o: button.cc button.hh focuslabel.hh focuswidget.hh widget.hh \ rect.hh point.hh texture.hh color.hh util.hh style.hh font.hh \ image.hh screeninfo.hh timer.hh configuration.hh eventdispatcher.hh \ - eventhandler.hh application.hh display.hh timerqueuemanager.hh \ - timerqueue.hh + eventhandler.hh application.hh display.hh color.o: color.cc color.hh display.hh screeninfo.hh rect.hh point.hh configuration.o: configuration.cc configuration.hh util.hh eventdispatcher.o: eventdispatcher.cc eventdispatcher.hh \

@@ -54,13 +53,11 @@ eventhandler.o: eventhandler.cc eventhandler.hh

focuslabel.o: focuslabel.cc focuslabel.hh focuswidget.hh widget.hh \ rect.hh point.hh texture.hh color.hh util.hh style.hh font.hh \ image.hh screeninfo.hh timer.hh configuration.hh eventdispatcher.hh \ - eventhandler.hh application.hh display.hh timerqueuemanager.hh \ - timerqueue.hh + eventhandler.hh application.hh display.hh focuswidget.o: focuswidget.cc focuswidget.hh widget.hh rect.hh \ point.hh texture.hh color.hh util.hh style.hh font.hh image.hh \ screeninfo.hh timer.hh configuration.hh eventdispatcher.hh \ - eventhandler.hh application.hh display.hh timerqueuemanager.hh \ - timerqueue.hh + eventhandler.hh application.hh display.hh font.o: font.cc font.hh util.hh display.hh color.hh screeninfo.hh \ rect.hh point.hh gccache.o: gccache.cc gccache.hh display.hh color.hh assassin.hh \

@@ -72,10 +69,10 @@ screeninfo.hh rect.hh point.hh timer.hh texture.hh util.hh

label.o: label.cc label.hh widget.hh rect.hh point.hh texture.hh \ color.hh util.hh style.hh font.hh image.hh screeninfo.hh timer.hh \ configuration.hh eventdispatcher.hh eventhandler.hh application.hh \ - display.hh timerqueuemanager.hh timerqueue.hh + display.hh otk_test.o: otk_test.cc application.hh eventdispatcher.hh \ - eventhandler.hh display.hh configuration.hh timerqueuemanager.hh \ - timerqueue.hh timer.hh image.hh color.hh screeninfo.hh rect.hh \ + eventhandler.hh display.hh configuration.hh \ + timer.hh image.hh color.hh screeninfo.hh rect.hh \ point.hh style.hh font.hh texture.hh util.hh focuswidget.hh widget.hh \ appwidget.hh button.hh focuslabel.hh property.o: property.cc property.hh screeninfo.hh rect.hh point.hh \

@@ -88,11 +85,9 @@ texture.hh image.hh screeninfo.hh rect.hh point.hh timer.hh \

configuration.hh texture.o: texture.cc texture.hh color.hh util.hh display.hh image.hh \ screeninfo.hh rect.hh point.hh timer.hh -timer.o: timer.cc timer.hh timerqueuemanager.hh timerqueue.hh -timerqueuemanager.o: timerqueuemanager.cc timerqueuemanager.hh \ - timerqueue.hh timer.hh display.hh +timer.o: timer.cc timer.hh util.o: util.cc util.hh widget.o: widget.cc widget.hh rect.hh point.hh texture.hh color.hh \ util.hh style.hh font.hh image.hh screeninfo.hh timer.hh \ configuration.hh eventdispatcher.hh eventhandler.hh application.hh \ - display.hh timerqueuemanager.hh timerqueue.hh assassin.hh + display.hh assassin.hh
M otk/application.ccotk/application.cc

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

#include "application.hh" #include "eventhandler.hh" #include "widget.hh" +#include "timer.hh" extern "C" { #ifdef HAVE_STDLIB_H

@@ -29,8 +30,8 @@ (void)argv;

const ScreenInfo *s_info = _display.screenInfo(DefaultScreen(*_display)); - _timer_manager = new TimerQueueManager(); - _img_ctrl = new ImageControl(_timer_manager, s_info, True, 4, 5, 200); + Timer::initialize(); + _img_ctrl = new ImageControl(s_info, True, 4, 5, 200); _style_conf = new Configuration(False); _style = new Style(_img_ctrl);

@@ -41,8 +42,8 @@ Application::~Application()

{ delete _style_conf; delete _img_ctrl; - delete _timer_manager; delete _style; + Timer::destroy(); } void Application::loadStyle(void)

@@ -68,7 +69,7 @@ }

while (_appwidget_count > 0) { dispatchEvents(); - _timer_manager->fire(); // fire pending events + Timer::dispatchTimers(); // fire pending events } }
M otk/application.hhotk/application.hh

@@ -5,7 +5,6 @@

#include "eventdispatcher.hh" #include "display.hh" #include "configuration.hh" -#include "timerqueuemanager.hh" #include "image.hh" #include "style.hh"

@@ -33,7 +32,6 @@ private:

void loadStyle(void); Display _display; - TimerQueueManager *_timer_manager; ImageControl *_img_ctrl; Configuration *_style_conf; Style *_style;
M otk/image.hhotk/image.hh

@@ -77,11 +77,10 @@ unsigned long pixel1, pixel2, texture;

}; #endif - ImageControl(otk::TimerQueueManager *timermanager, - const otk::ScreenInfo *scrn, - bool _dither= False, int _cpc = 4, - unsigned long cache_timeout = 300000l, - unsigned long cmax = 200l); + ImageControl(const otk::ScreenInfo *scrn, + bool _dither= False, int _cpc = 4, + unsigned long cache_timeout = 300000l, + unsigned long cmax = 200l); virtual ~ImageControl(void); inline bool doDither(void) { return dither; }
M otk/imagecontrol.ccotk/imagecontrol.cc

@@ -41,11 +41,10 @@ }

ImageControl *ctrl = 0; -ImageControl::ImageControl(TimerQueueManager *timermanager, - const ScreenInfo *scrn, - bool _dither, int _cpc, - unsigned long cache_timeout, - unsigned long cmax) { +ImageControl::ImageControl(const ScreenInfo *scrn, + bool _dither, int _cpc, + unsigned long cache_timeout, + unsigned long cmax) { if (! ctrl) ctrl = this; screeninfo = scrn;

@@ -53,13 +52,10 @@ setDither(_dither);

setColorsPerChannel(_cpc); cache_max = cmax; - if (cache_timeout) { - timer = new Timer(timermanager, (TimeoutHandler)timeout, this); - timer->setTimeout(cache_timeout); - timer->start(); - } else { + if (cache_timeout) + timer = new Timer(cache_timeout, (Timer::TimeoutHandler)timeout, this); + else timer = (Timer *) 0; - } colors = (XColor *) 0; ncolors = 0;

@@ -350,10 +346,8 @@ const CacheContainer::iterator end = cache.end();

for (; it != end; ++it) XFreePixmap(**display, it->pixmap); } - if (timer) { - timer->stop(); + if (timer) delete timer; - } }
M otk/otk.hhotk/otk.hh

@@ -26,8 +26,6 @@ #include "strut.hh"

#include "style.hh" #include "texture.hh" #include "timer.hh" -#include "timerqueue.hh" -#include "timerqueuemanager.hh" #include "util.hh" #include "ustring.hh" #include "widget.hh"
M otk/otk.iotk/otk.i

@@ -76,8 +76,6 @@ %include "strut.hh"

%include "style.hh" %include "texture.hh" %include "timer.hh" -%include "timerqueue.hh" -%include "timerqueuemanager.hh" %include "util.hh" %include "widget.hh"
M otk/timer.ccotk/timer.cc

@@ -5,121 +5,127 @@ # include "../config.h"

#endif // HAVE_CONFIG_H #include "timer.hh" -#include "timerqueuemanager.hh" +#include "display.hh" namespace otk { -static timeval normalizeTimeval(const timeval &tm) -{ - timeval ret = tm; - - while (ret.tv_usec < 0) { - if (ret.tv_sec > 0) { - --ret.tv_sec; - ret.tv_usec += 1000000; - } else { - ret.tv_usec = 0; - } - } +timeval Timer::_nearest_timeout, Timer::_now; +Timer::TimerQ Timer::_q; - if (ret.tv_usec >= 1000000) { - ret.tv_sec += ret.tv_usec / 1000000; - ret.tv_usec %= 1000000; - } - - if (ret.tv_sec < 0) ret.tv_sec = 0; - - return ret; +void Timer::timevalAdd(timeval &a, long msec) +{ + a.tv_sec += msec / 1000; + a.tv_usec += (msec % 1000) * 1000; + a.tv_sec += a.tv_usec / 1000000; + a.tv_usec %= 1000000; } - -Timer::Timer(TimerQueueManager *m, TimeoutHandler h, TimeoutData d) +bool Timer::nearestTimeout(struct timeval &tm) { - _manager = m; - _handler = h; - _data = d; + if (_q.empty()) + return false; + tm.tv_sec = _nearest_timeout.tv_sec - _now.tv_sec; + tm.tv_usec = _nearest_timeout.tv_usec - _now.tv_usec; - _recur = _timing = false; -} + while (tm.tv_usec < 0) { + tm.tv_usec += 1000000; + tm.tv_sec--; + } + tm.tv_sec += tm.tv_usec / 1000000; + tm.tv_usec %= 1000000; + if (tm.tv_sec < 0) + tm.tv_sec = 0; - -Timer::~Timer(void) -{ - if (_timing) stop(); + return true; } - -void Timer::setTimeout(long t) +void Timer::dispatchTimers(bool wait) { - _timeout.tv_sec = t / 1000; - _timeout.tv_usec = t % 1000; - _timeout.tv_usec *= 1000; -} + fd_set selset; + int fd; + timeval next; + Timer *curr; + gettimeofday(&_now, NULL); + _nearest_timeout = _now; + _nearest_timeout.tv_sec += 10000; -void Timer::setTimeout(const timeval &t) -{ - _timeout.tv_sec = t.tv_sec; - _timeout.tv_usec = t.tv_usec; -} + while (!_q.empty()) { + curr = _q.top(); + /* since we overload the destructor to keep from removing from the middle of + the priority queue, set _del_me, we have to do our real delete in here. + */ + if (curr->_del_me) { + _q.pop(); + realDelete(curr); + continue; + } + // the queue is sorted, so if this timer shouldn't fire, none are ready + _nearest_timeout = curr->_timeout; + if (!timercmp(&_now, &_nearest_timeout, >)) + break; -void Timer::start(void) -{ - gettimeofday(&_start, 0); + /* we set the last fired time to delay msec after the previous firing, then + re-insert. timers maintain their order and may trigger more than once if + they've waited more than one delay's worth of time. + */ + _q.pop(); + timevalAdd(curr->_last, curr->_delay); + curr->_action(curr->_data); + timevalAdd(curr->_timeout, curr->_delay); + _q.push(curr); + } - if (! _timing) { - _timing = true; - _manager->addTimer(this); + if (wait) { + // wait for the nearest trigger, or for X to do something interesting + fd = ConnectionNumber(**display); + FD_ZERO(&selset); + FD_SET(fd, &selset); + if (nearestTimeout(next)) + select(fd + 1, &selset, NULL, NULL, &next); + else + select(fd + 1, &selset, NULL, NULL, NULL); } } - -void Timer::stop(void) +Timer::Timer(long delay, Timer::TimeoutHandler action, void *data) + : _delay(delay), + _action(action), + _data(data), + _del_me(false), + _last(_now), + _timeout(_now) { - if (_timing) { - _timing = false; - - _manager->removeTimer(this); - } + timevalAdd(_timeout, delay); + _q.push(this); } - -void Timer::fire(void) +void Timer::operator delete(void *self) { - if (_handler) - _handler(_data); + Timer *t; + t = (Timer *)self; + t->_del_me = true; } - -timeval Timer::remainingTime(const timeval &tm) const +void Timer::realDelete(Timer *me) { - timeval ret = endTime(); - - ret.tv_sec -= tm.tv_sec; - ret.tv_usec -= tm.tv_usec; - - return normalizeTimeval(ret); + ::delete me; } - -timeval Timer::endTime(void) const +void Timer::initialize(void) { - timeval ret; - - ret.tv_sec = _start.tv_sec + _timeout.tv_sec; - ret.tv_usec = _start.tv_usec + _timeout.tv_usec; - - return normalizeTimeval(ret); + gettimeofday(&_now, NULL); + _nearest_timeout.tv_sec = 100000; + _nearest_timeout.tv_usec = 0; } - -bool Timer::shouldFire(const timeval &tm) const +void Timer::destroy(void) { - timeval end = endTime(); - - return ! ((tm.tv_sec < end.tv_sec) || - (tm.tv_sec == end.tv_sec && tm.tv_usec < end.tv_usec)); + while(!_q.empty()) { + realDelete(_q.top()); + _q.pop(); + } } }
M otk/timer.hhotk/timer.hh

@@ -2,6 +2,10 @@ // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-

#ifndef __timer_hh #define __timer_hh +/*! @file timer.hh + @brief Contains the Timer class, used for timed callbacks. +*/ + extern "C" { #ifdef TIME_WITH_SYS_TIME # include <sys/time.h>

@@ -13,120 +17,109 @@ # else // !HAVE_SYS_TIME_H

# include <time.h> # endif // HAVE_SYS_TIME_H #endif // TIME_WITH_SYS_TIME + +#ifdef HAVE_UNISTD_H +# include <sys/types.h> +# include <unistd.h> +#endif // HAVE_UNISTD_H } +#include <queue> +#include <vector> + namespace otk { -class TimerQueueManager; - -//! The data passed to the TimeoutHandler function. +//! The Timer class implements timed callbacks. /*! - Note: this is a very useful place to put an object instance, and set the - event handler to a static function in the same class. + The Timer class can be used to have a callback fire after a given time + interval. A created Timer will fire repetitively until it is destroyed. */ -typedef void *TimeoutData; -//! The type of function which can be set as the callback for a Timer firing -typedef void (*TimeoutHandler)(TimeoutData); - -//! A Timer class which will fire a function when its time elapses class Timer { -private: - //! The manager which to add ourself to and remove ourself after we are done - TimerQueueManager *_manager; - //! The function to call when the time elapses - TimeoutHandler _handler; - //! The data which gets passed along to the TimeoutHandler - TimeoutData _data; - //! Determines if the timer is currently started - bool _timing; - //! When this is true, the timer will reset itself to fire again every time - bool _recur; - - //! The time at which the timer started - timeval _start; - //! The time at which the timer is going to fire - timeval _timeout; - - //! Disallows copying of Timer objects - Timer(const Timer&); - //! Disallows copying of Timer objects - Timer& operator=(const Timer&); - public: - //! Constructs a new Timer object - /*! - @param m The TimerQueueManager with which to associate. The manager - specified will be resposible for making this timer fire. - @param h The function to call when the timer fires - @param d The data to pass along to the function call when the timer fires - */ - Timer(TimerQueueManager *m, TimeoutHandler h, TimeoutData d); - //! Destroys the Timer object - virtual ~Timer(); + //! Data type of Timer callback + typedef void (*TimeoutHandler)(void *data); - //! Fires the timer, calling its TimeoutHandler - void fire(); +private: + //! Compares two timeval structs + struct TimerCompare { + //! Compares two timeval structs + inline bool operator()(const Timer *a, const Timer *b) const { + return timercmp(&a->_timeout, &b->_timeout, >); + } + }; - //! Returns if the Timer is started and timing - inline bool timing() const { return _timing; } - //! Returns if the Timer is going to repeat - inline bool recurring() const { return _recur; } + typedef + std::priority_queue<Timer*, std::vector<Timer*>, TimerCompare> TimerQ; - //! Gets the amount of time the Timer should last before firing - inline const timeval &timeout() const { return _timeout; } - //! Gets the time at which the Timer started - inline const timeval &startTime() const { return _start; } + //! Milliseconds between timer firings + long _delay; + //! Callback for timer expiry + TimeoutHandler _action; + //! Data sent to callback + void *_data; + //! We overload the delete operator to just set this to true + bool _del_me; + //! The time the last fire should've been at + struct timeval _last; + //! When this timer will next trigger + struct timeval _timeout; - //! Gets the amount of time left before the Timer fires - timeval remainingTime(const timeval &tm) const; - //! Returns if the Timer is past its timeout time, and should fire - bool shouldFire(const timeval &tm) const; + //! Queue of pending timers + static TimerQ _q; + //! Time next timer will expire + static timeval _nearest_timeout; + //! Time at start of current processing loop + static timeval _now; - //! Gets the time at which the Timer will fire - timeval endTime() const; - - //! Sets the Timer to repeat or not + //! Really delete something (not just flag for later) /*! - @param b If true, the timer is set to repeat; otherwise, it will fire only - once + @param self Timer to be deleted. */ - inline void setRecurring(bool b) { _recur = b; } + static void realDelete(Timer *self); - //! Sets the amount of time for the Timer to last in milliseconds + //! Adds a millisecond delay to a timeval structure /*! - @param t The number of milliseconds the timer should last + @param a Amount of time to increment. + @param msec Number of milliseconds to increment by. */ - void setTimeout(long t); - //! Sets the amount of time the Timer should last before firing + static void timevalAdd(timeval &a, long msec); + +public: + //! Constructs a new running timer and queues it /*! - @param t The amount of time the timer should last + @param delay Time in milliseconds between firings + @param cb The function to be called on fire. + @param data Data to be passed to the callback on fire. */ - void setTimeout(const timeval &t); + Timer(long delay, TimeoutHandler cb, void *data); - //! Causes the timer to begin + //! Overloaded delete so we can leave deleted objects in queue for later reap /*! - The timer fires after the time in Timer::getTimeout has passed since this - function was called. - Calling this function while the timer is already started will cause it to - restart its countdown. + @param self Pointer to current instance of Timer. */ - void start(); // manager acquires timer - //! Causes the timer to stop + void operator delete(void *self); + + //! Dispatches all elligible timers, then optionally waits for X events /*! - The timer will no longer fire once this function has been called. - Calling this function more than once does not have any effect. + @param wait Whether to wait for X events after processing timers. */ - void stop(); // manager releases timer + static void dispatchTimers(bool wait = true); - //! Determines if this Timer will fire before a second Timer object + //! Returns a relative timeval (to pass select) of the next timer /*! - @param other The second Timer with which to compare - @return true if this Timer will fire before 'other'; otherwise, false + @param tm Changed to hold the time until next timer. + @return true if there are any timers queued, and the timeout is being + returned in 'tm'. false if there are no timers queued. */ - bool operator<(const Timer& other) const - { return shouldFire(other.endTime()); } + static bool nearestTimeout(struct timeval &tm); + + //! Initializes internal data before use + static void initialize(void); + + //! Deletes all waiting timers + static void destroy(void); }; } -#endif // __timer_hh +#endif // __timer.hh
M src/bindings.ccsrc/bindings.cc

@@ -145,17 +145,17 @@

Bindings::Bindings() : _curpos(&_keytree), _resetkey(0,0), - _timer(openbox->timerManager(), - (otk::TimeoutHandler)resetChains, this) + _timer((otk::Timer *) 0) { - _timer.setTimeout(5000); // chains reset after 5 seconds - // setResetKey("C-g"); // set the default reset key } Bindings::~Bindings() { + if (_timer) + delete _timer; + grabKeys(false); removeAllKeys(); // removeAllButtons(); XXX

@@ -379,7 +379,11 @@ KeyBindingTree *p = _curpos->first_child;

while (p) { if (p->binding.key == key && p->binding.modifiers == modifiers) { if (p->chain) { - _timer.start(); // start/restart the timer + if (_timer) + delete _timer; + _timer = new otk::Timer(5000, // 5 second timeout + (otk::Timer::TimeoutHandler)resetChains, + this); // grab the server here to make sure no key pressed go missed otk::display->grab(); grabKeys(false);

@@ -403,7 +407,10 @@ }

void Bindings::resetChains(Bindings *self) { - self->_timer.stop(); + if (self->_timer) { + delete self->_timer; + self->_timer = (otk::Timer *) 0; + } // grab the server here to make sure no key pressed go missed otk::display->grab(); self->grabKeys(false);
M src/bindings.hhsrc/bindings.hh

@@ -67,7 +67,7 @@ KeyBindingTree *_curpos; // position in the keytree

Binding _resetkey; // the key which resets the key chain status - otk::Timer _timer; + otk::Timer *_timer; KeyBindingTree *find(KeyBindingTree *search, bool *conflict) const; KeyBindingTree *buildtree(const StringVect &keylist,
M src/openbox.ccsrc/openbox.cc

@@ -113,6 +113,7 @@ sigaction(SIGTERM, &action, (struct sigaction *) 0);

sigaction(SIGINT, &action, (struct sigaction *) 0); sigaction(SIGHUP, &action, (struct sigaction *) 0); + otk::Timer::initialize(); _property = new otk::Property(); _actions = new Actions(); _bindings = new Bindings();

@@ -193,6 +194,8 @@ // this tends to block.. i honestly am not sure why. causing an x error in

// the shutdown process unblocks it. blackbox simply did a ::exit(0), so // all im gunna do is the same. //otk::display->destroy(); + + otk::Timer::destroy(); if (_restart) { if (!_restart_prog.empty()) {

@@ -320,7 +323,7 @@ dispatchEvents(); // from otk::EventDispatcher

XFlush(**otk::display); // flush here before we go wait for timers // don't wait if we're to shutdown if (_shutdown) break; - _timermanager.fire(!_sync); // wait if not in sync mode + otk::Timer::dispatchTimers(!_sync); // wait if not in sync mode } }
M src/openbox.hhsrc/openbox.hh

@@ -16,7 +16,6 @@ #include <map>

#include "otk/display.hh" #include "otk/screeninfo.hh" -#include "otk/timerqueuemanager.hh" #include "otk/property.hh" #include "otk/configuration.hh" #include "otk/eventdispatcher.hh"

@@ -109,13 +108,6 @@

//! A list of all the managed screens ScreenList _screens; - //! Manages all timers for the application - /*! - Use of the otk::TimerQueueManager::fire funtion in this object ensures - that all timers fire when their times elapse. - */ - otk::TimerQueueManager _timermanager; - //! Cached atoms on the display /*! This is a pointer because the Property class uses otk::Display::display

@@ -184,13 +176,6 @@ #endif

//! Returns the state of the window manager (starting, exiting, etc) inline RunState state() const { return _state; } - - //! Returns the otk::TimerQueueManager for the application - /*! - All otk::Timer objects used in the application should be made to use this - otk::TimerQueueManager. - */ - inline otk::TimerQueueManager *timerManager() { return &_timermanager; } //! Returns the otk::Property instance for the window manager inline const otk::Property *property() const { return _property; }
M src/openbox.pysrc/openbox.py

@@ -446,7 +446,6 @@ State_Starting = _openbox.Openbox_State_Starting

State_Normal = _openbox.Openbox_State_Normal State_Exiting = _openbox.Openbox_State_Exiting def state(*args): return apply(_openbox.Openbox_state,args) - def timerManager(*args): return apply(_openbox.Openbox_timerManager,args) def property(*args): return apply(_openbox.Openbox_property,args) def actions(*args): return apply(_openbox.Openbox_actions,args) def bindings(*args): return apply(_openbox.Openbox_bindings,args)
M src/openbox_wrap.ccsrc/openbox_wrap.cc

@@ -706,8 +706,7 @@ #define SWIGTYPE_p_p_unsigned_long swig_types[57]

#define SWIGTYPE_p_XMotionEvent swig_types[58] #define SWIGTYPE_p_XButtonEvent swig_types[59] #define SWIGTYPE_p_XSelectionEvent swig_types[60] -#define SWIGTYPE_p_otk__TimerQueueManager swig_types[61] -static swig_type_info *swig_types[63]; +static swig_type_info *swig_types[62]; /* -------- TYPES TABLE (END) -------- */

@@ -5073,23 +5072,6 @@ return NULL;

} -static PyObject *_wrap_Openbox_timerManager(PyObject *self, PyObject *args) { - PyObject *resultobj; - ob::Openbox *arg1 = (ob::Openbox *) 0 ; - otk::TimerQueueManager *result; - PyObject * obj0 = 0 ; - - if(!PyArg_ParseTuple(args,(char *)"O:Openbox_timerManager",&obj0)) goto fail; - if ((SWIG_ConvertPtr(obj0,(void **) &arg1, SWIGTYPE_p_ob__Openbox,SWIG_POINTER_EXCEPTION | 0 )) == -1) SWIG_fail; - result = (otk::TimerQueueManager *)(arg1)->timerManager(); - - resultobj = SWIG_NewPointerObj((void *) result, SWIGTYPE_p_otk__TimerQueueManager, 0); - return resultobj; - fail: - return NULL; -} - - static PyObject *_wrap_Openbox_property(PyObject *self, PyObject *args) { PyObject *resultobj; ob::Openbox *arg1 = (ob::Openbox *) 0 ;

@@ -8117,7 +8099,6 @@ { (char *)"Cursors_ur_angle_set", _wrap_Cursors_ur_angle_set, METH_VARARGS },

{ (char *)"Cursors_ur_angle_get", _wrap_Cursors_ur_angle_get, METH_VARARGS }, { (char *)"Cursors_swigregister", Cursors_swigregister, METH_VARARGS }, { (char *)"Openbox_state", _wrap_Openbox_state, METH_VARARGS }, - { (char *)"Openbox_timerManager", _wrap_Openbox_timerManager, METH_VARARGS }, { (char *)"Openbox_property", _wrap_Openbox_property, METH_VARARGS }, { (char *)"Openbox_actions", _wrap_Openbox_actions, METH_VARARGS }, { (char *)"Openbox_bindings", _wrap_Openbox_bindings, METH_VARARGS },

@@ -8353,7 +8334,6 @@ static swig_type_info _swigt__p_p_unsigned_long[] = {{"_p_p_unsigned_long", 0, "unsigned long **", 0},{"_p_p_unsigned_long"},{0}};

static swig_type_info _swigt__p_XMotionEvent[] = {{"_p_XMotionEvent", 0, "XMotionEvent *", 0},{"_p_XMotionEvent"},{0}}; static swig_type_info _swigt__p_XButtonEvent[] = {{"_p_XButtonEvent", 0, "XButtonEvent *", 0},{"_p_XButtonEvent"},{0}}; static swig_type_info _swigt__p_XSelectionEvent[] = {{"_p_XSelectionEvent", 0, "XSelectionEvent *", 0},{"_p_XSelectionEvent"},{0}}; -static swig_type_info _swigt__p_otk__TimerQueueManager[] = {{"_p_otk__TimerQueueManager", 0, "otk::TimerQueueManager *", 0},{"_p_otk__TimerQueueManager"},{0}}; static swig_type_info *swig_types_initial[] = { _swigt__p_otk__Point,

@@ -8417,7 +8397,6 @@ _swigt__p_p_unsigned_long,

_swigt__p_XMotionEvent, _swigt__p_XButtonEvent, _swigt__p_XSelectionEvent, -_swigt__p_otk__TimerQueueManager, 0 };
M src/screen.ccsrc/screen.cc

@@ -75,8 +75,7 @@ XDefineCursor(**otk::display, _info->rootWindow(),

openbox->cursors().session); // initialize the shit that is used for all drawing on the screen - _image_control = new otk::ImageControl(openbox->timerManager(), - _info, true); + _image_control = new otk::ImageControl(_info, true); _image_control->installRootColormap(); _root_cmap_installed = True;