rpms/arts/devel qtmcop-notifications-on-demand.patch,NONE,1.1
Rex Dieter (rdieter)
fedora-extras-commits at redhat.com
Tue May 15 17:35:40 UTC 2007
Author: rdieter
Update of /cvs/pkgs/rpms/arts/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv4374
Added Files:
qtmcop-notifications-on-demand.patch
Log Message:
import patch
qtmcop-notifications-on-demand.patch:
--- NEW FILE qtmcop-notifications-on-demand.patch ---
Index: mcop/notification.h
===================================================================
--- mcop/notification.h (revision 664999)
+++ mcop/notification.h (working copy)
@@ -72,10 +72,7 @@
{
return instance;
}
- inline void send(Notification wm)
- {
- todo.push(wm);
- }
+ void send(Notification wm);
inline bool pending()
{
return !todo.empty();
Index: mcop/iomanager.cc
===================================================================
--- mcop/iomanager.cc (revision 664999)
+++ mcop/iomanager.cc (working copy)
@@ -409,9 +409,15 @@
void StdIOManager::addTimer(int milliseconds, TimeNotify *notify)
{
- timeList.push_back(new TimeWatcher(milliseconds,notify));
- timeListChanged = true;
- Dispatcher::wakeUp();
+ if (milliseconds == -1 && notify == 0) {
+ // HACK: in order to not add a virtual function to IOManager we're calling addTimer with
+ // magic values. This call tells the ioManager that notifications are pending and
+ // NotificationManager::run() should get called soon.
+ } else {
+ timeList.push_back(new TimeWatcher(milliseconds,notify));
+ timeListChanged = true;
+ Dispatcher::wakeUp();
+ }
}
void StdIOManager::removeTimer(TimeNotify *notify)
Index: mcop/notification.cc
===================================================================
--- mcop/notification.cc (revision 664999)
+++ mcop/notification.cc (working copy)
@@ -22,6 +22,7 @@
#include "notification.h"
#include "debug.h"
+#include "dispatcher.h"
using namespace Arts;
@@ -41,6 +42,17 @@
instance = 0;
}
+void NotificationManager::send(Notification wm)
+{
+ if (todo.empty()) {
+ // HACK: in order to not add a virtual function to IOManager we're calling addTimer with
+ // magic values. This call tells the ioManager that notifications are pending and
+ // NotificationManager::run() should get called soon.
+ Arts::Dispatcher::the()->ioManager()->addTimer(-1, 0);
+ }
+ todo.push(wm);
+}
+
bool NotificationManager::run()
{
if(todo.empty()) return false;
Index: qtmcop/qiomanager.cc
===================================================================
--- qtmcop/qiomanager.cc (revision 664999)
+++ qtmcop/qiomanager.cc (working copy)
@@ -102,30 +102,13 @@
class HandleNotifications : public TimeNotify {
public:
- HandleNotifications()
- {
- Arts::Dispatcher::the()->ioManager()->addTimer(50, this);
- }
void notifyTime()
{
+ Arts::Dispatcher::the()->ioManager()->removeTimer(this);
NotificationManager::the()->run();
+ delete this;
}
- virtual ~HandleNotifications()
- {
- Arts::Dispatcher::the()->ioManager()->removeTimer(this);
- }
};
-
-class HandleNotificationsStartup :public StartupClass
-{
-public:
- void startup() { h = new HandleNotifications(); }
- void shutdown() { delete h; }
-private:
- HandleNotifications *h;
-};
-static HandleNotificationsStartup handleNotifications;
-
}
/*
@@ -237,6 +220,14 @@
void QIOManager::addTimer(int milliseconds, TimeNotify *notify)
{
+ if (milliseconds == -1 && notify == 0)
+ {
+ // HACK: in order to not add a virtual function to IOManager we're calling addTimer with
+ // magic values. This call tells the ioManager that notifications are pending and
+ // NotificationManager::run() should get called soon.
+ notify = new HandleNotifications();
+ milliseconds = 0;
+ }
timeList.push_back(new QTimeWatch(milliseconds,notify));
}
More information about the fedora-extras-commits
mailing list