--- a/Quail-redux.pro Sat Dec 28 15:44:41 2013 +0000
+++ b/Quail-redux.pro Sat Feb 01 07:28:46 2014 +0000
@@ -83,6 +83,8 @@
#LIBS += -L"$(QTDIR)/lib"
+ #DEFINES += QT_NO_DEBUG_OUTPUT --- a/src/QuailEventLoop.cpp Sat Dec 28 15:44:41 2013 +0000
+++ b/src/QuailEventLoop.cpp Sat Feb 01 07:28:46 2014 +0000
@@ -35,21 +35,118 @@
QQuailInputNotifier *notifier;
static gboolean qQuailSourceRemove(guint handle);
static guint nextSourceId = 0;
-static QMap<guint, QQuailSourceInfo*> m_sources;
+static QMap<guint, quail_source_info*> m_sources; //static QuailEventDispatcherMarkTwo *mainEvent = 0;
-//static QThread *quailThread = new QThread();
+//QThread *quail_event_thread = 0; +static quail_application* quail_app = 0; +quail_application::quail_application(int &argc, char **argv) + : QApplication(argc, argv) +// quail_event_thread = new QThread(this); +// quail_event_thread->start(); +quail_application::quail_timeout_add(guint interval, GSourceFunc func, gpointer data) + qDebug() << "quail_application::quail_timeout_add" << interval; + quail_source_info *info = new quail_source_info; + info->handle = nextSourceId++; + info->timer = new QQuailTimer(info->handle, func, data); + info->timer->setInterval(interval); + //QThread* test_thread = new QThread; + //info->timer->moveToThread(test_thread); + //connect(test_thread, SIGNAL(started()), info->timer, SLOT(startTimer())); + qDebug() << "quail_application::quail_timeout_add.1"; + //m_sources.insert(info->handle, info); + //info->timer->startTimer(); + info->timer->startTimer(); + //test_thread->start(); + //info->timer->moveToThread(quail_event_thread); + qDebug() << "quail_application::quail_timeout_add.2"; + qDebug() << "quail_application::quail_timeout_add.end"; +quail_application::quail_timeout_remove(guint handle) + qDebug() << "quail_application::quail_timeout_remove"; + qQuailSourceRemove(handle); +quail_application::quail_input_add(int fd, + PurpleInputCondition cond, + PurpleInputFunction func, + qDebug() << "quail_application::quail_input_add"; + quail_source_info *info = new quail_source_info; + info->handle = nextSourceId++; + info->notifier = new QQuailInputNotifier(fd, cond, func, userData); + m_sources.insert(info->handle, info); + qDebug() << "quail_application::quail_input_add.end::" << info->handle; + qDebug() << "quail_application::quail_input_add.end::" << m_sources.size(); +quail_application::quail_source_remove(guint handle) + quail_source_info *info; + info = m_sources.take(handle); + if (info->timer != NULL) { + } else if (info->notifier != NULL) { +quail_application::quail_input_get_error(int /*fd*/, int */*error*/) + qDebug() << "quail_application::quail_input_get_error"; +quail_application::quail_timeout_add_seconds(guint interval, + return this->quail_timeout_add(interval * 1000,function, data); QQuailTimer::QQuailTimer(guint sourceId, GSourceFunc func, gpointer data)
- : QTimer(), sourceId(sourceId), func(func), userData(data)
+ , m_timer(new QTimer(this)) //qDebug() << "QQuailTimer::QQuailTimer.1";
- connect(this, SIGNAL(timeout()),
+ connect(m_timer, SIGNAL(timeout()), this, SLOT(update())); @@ -88,7 +185,7 @@
readNotifier = new QSocketNotifier(fd, QSocketNotifier::Read);
connect(readNotifier, SIGNAL(activated(int)),
- this, SLOT(ioInvoke(int)));
+ this, SLOT(ioInvoke(int)), Qt::DirectConnection); @@ -98,7 +195,7 @@
writeNotifier = new QSocketNotifier(fd, QSocketNotifier::Write);
connect(writeNotifier, SIGNAL(activated(int)),
- this, SLOT(ioInvoke(int)));
+ this, SLOT(ioInvoke(int)), Qt::DirectConnection); @@ -135,12 +232,7 @@
qQuailTimeoutAdd(guint interval, GSourceFunc func, gpointer data)
qDebug() << "qQuailTimeoutAdd" << interval;
- QQuailSourceInfo *info = new QQuailSourceInfo;
- info->handle = nextSourceId++;
- info->timer = new QQuailTimer(info->handle, func, data);
- m_sources.insert(info->handle, info);
- info->timer->start(interval);
+ return quail_app->quail_timeout_add(interval, func, data); @@ -148,7 +240,6 @@
qDebug() << "QQuailInputNotifier::qQuailTimeoutRemove";
qQuailSourceRemove(handle);
@@ -159,41 +250,19 @@
qDebug() << "QQuailInputNotifier::qQuailInputAdd";
- QQuailSourceInfo *info = new QQuailSourceInfo;
- info->handle = nextSourceId++;
- info->notifier = new QQuailInputNotifier(fd, cond, func, userData);
- m_sources.insert(info->handle, info);
- qDebug() << "QQuailInputNotifier::qQuailInputAdd.end::" << info->handle;
- qDebug() << "QQuailInputNotifier::qQuailInputAdd.end::" << m_sources.size();
+ return quail_app->quail_input_add(fd, cond, func, userData); qQuailSourceRemove(guint handle)
- QQuailSourceInfo *info;
- info = m_sources.take(handle);
- if (info->timer != NULL) {
- } else if (info->notifier != NULL) {
+ return quail_app->quail_source_remove(handle); qQuailInputGetError(int /*fd*/, int */*error*/)
- qDebug() << "QQuailInputNotifier::qQuailInputGetError";
+ qDebug() << "qQuailInputGetError"; @@ -202,7 +271,7 @@
- return qQuailTimeoutAdd(interval * 1000,function, data);
+ return quail_app->quail_timeout_add(interval * 1000,function, data); --- a/src/QuailEventLoop.h Sat Dec 28 15:44:41 2013 +0000
+++ b/src/QuailEventLoop.h Sat Feb 01 07:28:46 2014 +0000
@@ -24,18 +24,47 @@
#include <libpurple/eventloop.h>
#include <QSocketNotifier>
-class QQuailTimer : public QTimer
+class quail_application : public QApplication + quail_application(int &argc, char **argv); + guint quail_timeout_add(guint interval, GSourceFunc func, gpointer data); + gboolean quail_timeout_remove(guint handle); + guint quail_input_add(int fd, + PurpleInputCondition cond, + PurpleInputFunction func, + gboolean quail_source_remove(guint handle); + int quail_input_get_error(int /*fd*/, int */*error*/); + guint quail_timeout_add_seconds(guint interval, +class QQuailTimer : public QObject QQuailTimer(guint sourceId, GSourceFunc func, gpointer data);
+ void setInterval(int msec) + { m_timer->setInterval(msec); } + void startTimer() { m_timer->start(); } + void stopTimer() { m_timer->stop(); } --- a/src/QuailMainWindow.cpp Sat Dec 28 15:44:41 2013 +0000
+++ b/src/QuailMainWindow.cpp Sat Feb 01 07:28:46 2014 +0000
@@ -35,6 +35,7 @@
#include <QStackedWidget>
#include <QSystemTrayIcon>
@@ -58,7 +59,7 @@
#include "QuailPrefsDialog.h"
#include "QuailRequest.h"
-static QQuailMainWindow *mainWin = 0;
+static QQuailMainWindow *main_win = 0; /**************************************************************************
@@ -138,7 +139,7 @@
qDebug() << "QQuailMainWindow";
setWindowIcon(QIcon(":/data/images/logo.png"));
QString configPath(QDir::home().path() + "/.quail");
purple_util_set_user_dir(configPath.toStdString().c_str());
@@ -584,5 +585,5 @@
--- a/src/QuailWinGlibEventLoop.cpp Sat Dec 28 15:44:41 2013 +0000
+++ b/src/QuailWinGlibEventLoop.cpp Sat Feb 01 07:28:46 2014 +0000
@@ -217,7 +217,7 @@
QuailEventDispatcherWinGlib *d;
-static gboolean postEventSourcePrepare(GSource *s, gint *timeout)
+static gboolean postEventSourcePrepare(GSource *s, gint */*timeout*/) qDebug() << "QuailEventDispatcherWinGlib::postEventSourcePrepare";
// QThreadData *data = QThreadData::current();
--- a/src/main.cpp Sat Dec 28 15:44:41 2013 +0000
+++ b/src/main.cpp Sat Feb 01 07:28:46 2014 +0000
@@ -22,7 +22,7 @@
-#if defined(Q_OS_CYGWIN)
#include "QuailWinGlibEventLoop.h"
#include "QuailEventLoop.h"
@@ -30,12 +30,12 @@
int main(int argc, char *argv[])
-#if defined(Q_OS_CYGWIN)
- QuailEventDispatcherWinGlib quailEventLoop;
+ //QuailEventDispatcherWinGlib quailEventLoop; //QuailEventDispatcherMarkTwo mainEvent;
- QApplication a(argc, argv);
+ quail_application a(argc, argv);