X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FBaseDisplay.cc;h=3ee81fb065b957c4c65ec1818a201b506c4a80fc;hb=bbbe226ccc7086721ba5e652fa89e6e8190adb56;hp=15c0c7e6da42498cca9846e32da45c9b866518f8;hpb=6486b6457693414862fdc34ea07457ed5cbf0a0d;p=chaz%2Fopenbox diff --git a/src/BaseDisplay.cc b/src/BaseDisplay.cc index 15c0c7e6..3ee81fb0 100644 --- a/src/BaseDisplay.cc +++ b/src/BaseDisplay.cc @@ -104,8 +104,9 @@ static int handleXErrors(Display *d, XErrorEvent *e) { char errtxt[128]; XGetErrorText(d, e->error_code, errtxt, 128); - fprintf(stderr, i18n->getMessage(BaseDisplaySet, BaseDisplayXError, - "%s: X error: %s(%d) opcodes %d/%d\n resource 0x%lx\n"), + fprintf(stderr, i18n(BaseDisplaySet, BaseDisplayXError, + "%s: X error: %s(%d) opcodes %d/%d\n resource 0x%lx\n" + ), base_display->getApplicationName(), errtxt, e->error_code, e->request_code, e->minor_code, e->resourceid); #endif // DEBUG @@ -120,11 +121,11 @@ static int handleXErrors(Display *d, XErrorEvent *e) { // signal handler to allow for proper and gentle shutdown #ifndef HAVE_SIGACTION -static RETSIGTYPE signalhandler(int sig) { +static RETSIGTYPE signalhandler(int sig) #else // HAVE_SIGACTION -static void signalhandler(int sig) { +static void signalhandler(int sig) #endif // HAVE_SIGACTION - +{ static int re_enter = 0; switch (sig) { @@ -150,22 +151,22 @@ static void signalhandler(int sig) { return; } - fprintf(stderr, i18n->getMessage(BaseDisplaySet, BaseDisplaySignalCaught, - "%s: signal %d caught\n"), - base_display->getApplicationName(), sig); + fprintf(stderr, i18n(BaseDisplaySet, BaseDisplaySignalCaught, + "%s: signal %d caught\n"), + base_display->getApplicationName(), sig); if (! base_display->isStartup() && ! re_enter) { internal_error = True; re_enter = 1; - fprintf(stderr, i18n->getMessage(BaseDisplaySet, BaseDisplayShuttingDown, - "shutting down\n")); + fprintf(stderr, i18n(BaseDisplaySet, BaseDisplayShuttingDown, + "shutting down\n")); base_display->shutdown(); } if (sig != SIGTERM && sig != SIGINT) { - fprintf(stderr, i18n->getMessage(BaseDisplaySet, BaseDisplayAborting, - "aborting... dumping core\n")); + fprintf(stderr, i18n(BaseDisplaySet, BaseDisplayAborting, + "aborting... dumping core\n")); abort(); } @@ -234,18 +235,17 @@ BaseDisplay::BaseDisplay(const char *app_name, char *dpy_name) { #endif // HAVE_SIGACTION if (! (display = XOpenDisplay(dpy_name))) { - fprintf(stderr, i18n->getMessage(BaseDisplaySet, BaseDisplayXConnectFail, - "BaseDisplay::BaseDisplay: connection to X server failed.\n")); + fprintf(stderr, i18n(BaseDisplaySet, BaseDisplayXConnectFail, + "BaseDisplay::BaseDisplay: connection to X server failed.\n")); ::exit(2); } else if (fcntl(ConnectionNumber(display), F_SETFD, 1) == -1) { fprintf(stderr, - i18n->getMessage(BaseDisplaySet, BaseDisplayCloseOnExecFail, - "BaseDisplay::BaseDisplay: couldn't mark display connection " - "as close-on-exec\n")); + i18n(BaseDisplaySet, BaseDisplayCloseOnExecFail, + "BaseDisplay::BaseDisplay: couldn't mark display connection " + "as close-on-exec\n")); ::exit(2); } - number_of_screens = ScreenCount(display); display_name = XDisplayName(dpy_name); #ifdef SHAPE @@ -337,9 +337,9 @@ BaseDisplay::BaseDisplay(const char *app_name, char *dpy_name) { XSetErrorHandler((XErrorHandler) handleXErrors); - screenInfoList.reserve(ScreenCount(display)); - for (int i = 0; i < number_of_screens; i++) - screenInfoList.push_back(new ScreenInfo(*this, i)); + screenInfoList.reserve(numberOfScreens()); + for (unsigned int s = 0; s < numberOfScreens(); s++) + screenInfoList.push_back(new ScreenInfo(*this, s)); #ifndef NOCLOBBER NumLockMask = ScrollLockMask = 0; @@ -357,14 +357,14 @@ BaseDisplay::BaseDisplay(const char *app_name, char *dpy_name) { // since it doesn't need to be. const KeyCode num_lock_code = XKeysymToKeycode(display, XK_Num_Lock); const KeyCode scroll_lock_code = XKeysymToKeycode(display, XK_Scroll_Lock); - + for (size_t cnt = 0; cnt < size; ++cnt) { if (! modmap->modifiermap[cnt]) continue; if (num_lock_code == modmap->modifiermap[cnt]) - NumLockMask = mask_table[cnt / modmap->max_keypermod]; + NumLockMask = mask_table[cnt / modmap->max_keypermod]; if (scroll_lock_code == modmap->modifiermap[cnt]) - ScrollLockMask = mask_table[cnt / modmap->max_keypermod]; + ScrollLockMask = mask_table[cnt / modmap->max_keypermod]; } } @@ -377,7 +377,7 @@ BaseDisplay::BaseDisplay(const char *app_name, char *dpy_name) { MaskList[6] = LockMask | ScrollLockMask; MaskList[7] = LockMask | NumLockMask | ScrollLockMask; MaskListLength = sizeof(MaskList) / sizeof(MaskList[0]); - + if (modmap) XFreeModifiermap(const_cast(modmap)); #else NumLockMask = Mod2Mask; @@ -390,7 +390,7 @@ BaseDisplay::~BaseDisplay(void) { std::for_each(screenInfoList.begin(), screenInfoList.end(), PointerAssassin()); // we don't create the BTimers, we don't delete them - + if (application_name != NULL) delete [] application_name; @@ -410,13 +410,13 @@ void BaseDisplay::eventLoop(void) { if (last_bad_window != None && e.xany.window == last_bad_window) { #ifdef DEBUG - fprintf(stderr, i18n->getMessage(BaseDisplaySet, - BaseDisplayBadWindowRemove, - "BaseDisplay::eventLoop(): removing bad window " - "from event queue\n")); + fprintf(stderr, i18n(BaseDisplaySet, + BaseDisplayBadWindowRemove, + "BaseDisplay::eventLoop(): removing bad window " + "from event queue\n")); #endif // DEBUG } else { - last_bad_window = None; + last_bad_window = None; process_event(&e); } } else { @@ -463,10 +463,10 @@ void BaseDisplay::eventLoop(void) { gettimeofday(&now, 0); TimerList::iterator it; - for (it = timerList.begin(); it != timerList.end(); ) { + for (it = timerList.begin(); it != timerList.end(); ++it) { BTimer *timer = *it; - ++it; // the timer may be removed from the list, so move ahead now ASSERT(timer != NULL); + tm.tv_sec = timer->getStartTime().tv_sec + timer->getTimeout().tv_sec; tm.tv_usec = timer->getStartTime().tv_usec + @@ -479,12 +479,16 @@ void BaseDisplay::eventLoop(void) { timer->fireTimeout(); // restart the current timer so that the start time is updated - if (! timer->doOnce()) + if (! timer->doOnce()) { + // reorder + removeTimer(timer); + addTimer(timer); timer->start(); - else { + } else timer->stop(); -// delete timer; // USE THIS? - } + it = timerList.begin(); // we no longer have any idea if the iterator is + // valid, but what was at the front() is no + // longer. } } } @@ -512,14 +516,11 @@ void BaseDisplay::grab(void) { void BaseDisplay::ungrab(void) { if (! --server_grabs) XUngrabServer(display); - - if (server_grabs < 0) server_grabs = 0; } void BaseDisplay::addTimer(BTimer *timer) { ASSERT(timer != (BTimer *) 0); - printf("ADDING TIMER\n"); TimerList::iterator it; for (it = timerList.begin(); it != timerList.end(); ++it) { @@ -535,7 +536,7 @@ void BaseDisplay::addTimer(BTimer *timer) { void BaseDisplay::removeTimer(BTimer *timer) { - printf("REMOVING TIMER\n"); + ASSERT(timer != (BTimer *) 0); timerList.remove(timer); } @@ -545,10 +546,10 @@ void BaseDisplay::removeTimer(BTimer *timer) { * the keyboard lock keys, so that they do not cancel out the event. */ void BaseDisplay::grabButton(unsigned int button, unsigned int modifiers, - Window grab_window, Bool owner_events, - unsigned int event_mask, int pointer_mode, - int keybaord_mode, Window confine_to, - Cursor cursor) const + Window grab_window, Bool owner_events, + unsigned int event_mask, int pointer_mode, + int keybaord_mode, Window confine_to, + Cursor cursor) const { #ifndef NOCLOBBER for (size_t cnt = 0; cnt < MaskListLength; ++cnt) @@ -556,9 +557,9 @@ void BaseDisplay::grabButton(unsigned int button, unsigned int modifiers, owner_events, event_mask, pointer_mode, keybaord_mode, confine_to, cursor); #else // NOCLOBBER - XGrabButton(display, button, modifiers, grab_window, - owner_events, event_mask, pointer_mode, keybaord_mode, - confine_to, cursor); + XGrabButton(display, button, modifiers, grab_window, + owner_events, event_mask, pointer_mode, keybaord_mode, + confine_to, cursor); #endif // NOCLOBBER } @@ -567,18 +568,18 @@ void BaseDisplay::grabButton(unsigned int button, unsigned int modifiers, * keyboard lock keys. */ void BaseDisplay::ungrabButton(unsigned int button, unsigned int modifiers, - Window grab_window) const { + Window grab_window) const { #ifndef NOCLOBBER for (size_t cnt = 0; cnt < MaskListLength; ++cnt) XUngrabButton(display, button, modifiers | MaskList[cnt], grab_window); #else // NOCLOBBER - XUngrabButton(display, button, modifiers, grab_window); + XUngrabButton(display, button, modifiers, grab_window); #endif // NOCLOBBER } ScreenInfo::ScreenInfo(BaseDisplay &d, int num) : basedisplay(d), - screen_number(num) +screen_number(num) { root_window = RootWindow(basedisplay.getXDisplay(), screen_number); @@ -615,7 +616,7 @@ ScreenInfo::ScreenInfo(BaseDisplay &d, int num) : basedisplay(d), if (visual) { colormap = XCreateColormap(basedisplay.getXDisplay(), root_window, - visual, AllocNone); + visual, AllocNone); } else { visual = DefaultVisual(basedisplay.getXDisplay(), screen_number); colormap = DefaultColormap(basedisplay.getXDisplay(), screen_number);