From 73fb21862b1daf86d4dd08d514b31c58122e7c9f Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Mon, 26 Sep 2005 17:34:19 +0000 Subject: [PATCH] - try to optimize notify behaviour: notify only when queue is empty --- lib/gdi/grc.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/gdi/grc.cpp b/lib/gdi/grc.cpp index 05aaa6ff..55d266c0 100644 --- a/lib/gdi/grc.cpp +++ b/lib/gdi/grc.cpp @@ -1,5 +1,5 @@ // for debugging use: -#define SYNC_PAINT +// #define SYNC_PAINT #include #ifndef SYNC_PAINT #include @@ -55,6 +55,7 @@ gRC::~gRC() void *gRC::thread() { + int need_notify = 0; #ifndef SYNC_PAINT while (1) #else @@ -66,12 +67,17 @@ void *gRC::thread() if (o.opcode==gOpcode::shutdown) break; if (o.opcode==gOpcode::notify) - { - m_notify_pump.send(1); - } else + need_notify = 1; + else o.dc->exec(&o); o.dc->Release(); queue.dequeue(); + + if ((!queue.size()) && need_notify) + { + need_notify = 0; + m_notify_pump.send(1); + } } #ifndef SYNC_PAINT pthread_exit(0); -- 2.30.2