diff --git a/WINGs/WINGs/WINGsP.h.in b/WINGs/WINGs/WINGsP.h.in index 2c36b269..a0020989 100644 --- a/WINGs/WINGs/WINGsP.h.in +++ b/WINGs/WINGs/WINGsP.h.in @@ -378,10 +378,6 @@ void W_InitNotificationCenter(void); void W_ReleaseNotificationCenter(void); -void W_FlushASAPNotificationQueue(void); - -void W_FlushIdleNotificationQueue(void); - /* ---[ selection.c ]----------------------------------------------------- */ diff --git a/WINGs/WINGs/WUtil.h b/WINGs/WINGs/WUtil.h index 4d7aeb9c..8e17bfaa 100644 --- a/WINGs/WINGs/WUtil.h +++ b/WINGs/WINGs/WUtil.h @@ -695,8 +695,6 @@ void WMRemoveNotificationObserverWithName(void *observer, const char *name, void WMPostNotificationName(const char *name, void *object, void *clientData); -WMNotificationQueue* WMCreateNotificationQueue(void); - /* Property Lists handling */ /* ---[ WINGs/proplist.c ]------------------------------------------------ */ diff --git a/WINGs/handlers.c b/WINGs/handlers.c index c937aaa1..74f4fdd1 100644 --- a/WINGs/handlers.c +++ b/WINGs/handlers.c @@ -274,7 +274,6 @@ Bool W_CheckIdleHandlers(void) WMArrayIterator iter; if (!idleHandler || WMGetArrayItemCount(idleHandler) == 0) { - W_FlushIdleNotificationQueue(); /* make sure an observer in queue didn't added an idle handler */ return (idleHandler != NULL && WMGetArrayItemCount(idleHandler) > 0); } @@ -292,8 +291,6 @@ Bool W_CheckIdleHandlers(void) WMFreeArray(handlerCopy); - W_FlushIdleNotificationQueue(); - /* this is not necesarrily False, because one handler can re-add itself */ return (WMGetArrayItemCount(idleHandler) > 0); } @@ -304,7 +301,6 @@ void W_CheckTimerHandlers(void) struct timeval now; if (!timerHandler) { - W_FlushASAPNotificationQueue(); return; } @@ -331,8 +327,6 @@ void W_CheckTimerHandlers(void) wfree(handler); } } - - W_FlushASAPNotificationQueue(); } /* @@ -384,7 +378,6 @@ Bool W_HandleInputEvents(Bool waitForInput, int inputfd) nfds = 0; if (!extrafd && nfds == 0) { - W_FlushASAPNotificationQueue(); return False; } @@ -461,8 +454,6 @@ Bool W_HandleInputEvents(Bool waitForInput, int inputfd) wfree(fds); - W_FlushASAPNotificationQueue(); - return (count > 0); #else #ifdef HAVE_SELECT @@ -479,7 +470,6 @@ Bool W_HandleInputEvents(Bool waitForInput, int inputfd) nfds = 0; if (inputfd < 0 && nfds == 0) { - W_FlushASAPNotificationQueue(); return False; } @@ -556,8 +546,6 @@ Bool W_HandleInputEvents(Bool waitForInput, int inputfd) WMFreeArray(handlerCopy); } - W_FlushASAPNotificationQueue(); - return (count > 0); #else /* not HAVE_SELECT, not HAVE_POLL */ # error Neither select nor poll. You lose. diff --git a/WINGs/notification.c b/WINGs/notification.c index 7cfaac21..38b92c1a 100644 --- a/WINGs/notification.c +++ b/WINGs/notification.c @@ -17,17 +17,6 @@ typedef struct W_Notification { static WMNotification* WMRetainNotification(WMNotification *notification); -static WMNotificationQueue* WMGetDefaultNotificationQueue(void); -static void WMDequeueNotificationMatching(WMNotificationQueue *queue, - WMNotification *notification, - unsigned mask); -static void WMEnqueueNotification(WMNotificationQueue *queue, - WMNotification *notification, - WMPostingStyle postingStyle); -static void WMEnqueueCoalesceNotification(WMNotificationQueue *queue, - WMNotification *notification, - WMPostingStyle postingStyle, - unsigned coalesceMask); const char *WMGetNotificationName(WMNotification * notification) { @@ -363,133 +352,3 @@ void WMPostNotificationName(const char *name, void *object, void *clientData) WMReleaseNotification(notification); } - -/**************** Notification Queues ****************/ - -typedef struct W_NotificationQueue { - WMArray *asapQueue; - WMArray *idleQueue; - - struct W_NotificationQueue *next; -} NotificationQueue; - -static WMNotificationQueue *notificationQueueList = NULL; - -/* default queue */ -static WMNotificationQueue *notificationQueue = NULL; - -static WMNotificationQueue *WMGetDefaultNotificationQueue(void) -{ - if (!notificationQueue) - notificationQueue = WMCreateNotificationQueue(); - - return notificationQueue; -} - -WMNotificationQueue *WMCreateNotificationQueue(void) -{ - NotificationQueue *queue; - - queue = wmalloc(sizeof(NotificationQueue)); - queue->asapQueue = WMCreateArrayWithDestructor(8, (WMFreeDataProc *) WMReleaseNotification); - queue->idleQueue = WMCreateArrayWithDestructor(8, (WMFreeDataProc *) WMReleaseNotification); - queue->next = notificationQueueList; - - notificationQueueList = queue; - - return queue; -} - -static void WMEnqueueNotification(WMNotificationQueue * queue, WMNotification * notification, WMPostingStyle postingStyle) -{ - WMEnqueueCoalesceNotification(queue, notification, postingStyle, WNCOnName | WNCOnSender); -} - -#define NOTIF ((WMNotification*)cdata) -#define ITEM ((WMNotification*)item) - -static int matchSenderAndName(const void *item, const void *cdata) -{ - return (NOTIF->object == ITEM->object && strcmp(NOTIF->name, ITEM->name) == 0); -} - -static int matchSender(const void *item, const void *cdata) -{ - return (NOTIF->object == ITEM->object); -} - -static int matchName(const void *item, const void *cdata) -{ - return (strcmp(NOTIF->name, ITEM->name) == 0); -} - -#undef NOTIF -#undef ITEM - -static void WMDequeueNotificationMatching(WMNotificationQueue * queue, WMNotification * notification, unsigned mask) -{ - WMMatchDataProc *matchFunc; - - if ((mask & WNCOnName) && (mask & WNCOnSender)) - matchFunc = matchSenderAndName; - else if (mask & WNCOnName) - matchFunc = matchName; - else if (mask & WNCOnSender) - matchFunc = matchSender; - else - return; - - WMRemoveFromArrayMatching(queue->asapQueue, matchFunc, notification); - WMRemoveFromArrayMatching(queue->idleQueue, matchFunc, notification); -} - -static void -WMEnqueueCoalesceNotification(WMNotificationQueue * queue, - WMNotification * notification, WMPostingStyle postingStyle, unsigned coalesceMask) -{ - if (coalesceMask != WNCNone) - WMDequeueNotificationMatching(queue, notification, coalesceMask); - - switch (postingStyle) { - case WMPostNow: - WMPostNotification(notification); - WMReleaseNotification(notification); - break; - - case WMPostASAP: - WMAddToArray(queue->asapQueue, notification); - break; - - case WMPostWhenIdle: - WMAddToArray(queue->idleQueue, notification); - break; - } -} - -void W_FlushASAPNotificationQueue(void) -{ - WMNotificationQueue *queue = notificationQueueList; - - while (queue) { - while (WMGetArrayItemCount(queue->asapQueue)) { - WMPostNotification(WMGetFromArray(queue->asapQueue, 0)); - WMDeleteFromArray(queue->asapQueue, 0); - } - - queue = queue->next; - } -} - -void W_FlushIdleNotificationQueue(void) -{ - WMNotificationQueue *queue = notificationQueueList; - - while (queue) { - while (WMGetArrayItemCount(queue->idleQueue)) { - WMPostNotification(WMGetFromArray(queue->idleQueue, 0)); - WMDeleteFromArray(queue->idleQueue, 0); - } - - queue = queue->next; - } -}