libpurple/plugins/keyrings/kwallet.cpp

branch
soc.2008.masterpassword
changeset 34089
3ac90007a6bf
parent 34087
b9798bef2af2
child 34093
c8197603fa20
--- a/libpurple/plugins/keyrings/kwallet.cpp	Fri Dec 16 06:29:00 2011 +0000
+++ b/libpurple/plugins/keyrings/kwallet.cpp	Fri Dec 16 07:38:59 2011 +0000
@@ -82,6 +82,8 @@
 		bool connected;
 		KWallet::Wallet *wallet;
 		static engine *pinstance;
+		gint idle_handle;
+		static bool idle_cb(engine *me);
 
 		void ExecuteRequests();
 };
@@ -132,6 +134,9 @@
 {
 	closing = true;
 
+	if (idle_handle)
+		g_source_remove(idle_handle);
+
 	while (!isEmpty()) {
 		request *req = dequeue();
 		req->abort();
@@ -176,10 +181,19 @@
 	ExecuteRequests();
 }
 
+bool
+KWalletPlugin::engine::idle_cb(KWalletPlugin::engine *me)
+{
+	me->app->processEvents();
+	return true;
+}
+
 void
 KWalletPlugin::engine::ExecuteRequests()
 {
-	app->processEvents();
+	if (idle_handle == 0)
+		idle_handle = g_idle_add((GSourceFunc)idle_cb, this);
+
 	if (connected) {
 		while (!isEmpty()) {
 			request *req = dequeue();

mercurial