2008-01-10 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Thu, 10 Jan 2008 13:38:34 +0000 (13:38 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Thu, 10 Jan 2008 13:38:34 +0000 (13:38 +0000)
* kdpipeiodevice.cpp: New version from Frank Osterfeld.

gpgme/ChangeLog
gpgme/kdpipeiodevice.cpp

index 9f5bbe6..60b4e50 100644 (file)
@@ -1,5 +1,7 @@
 2008-01-10  Marcus Brinkmann  <marcus@g10code.de>
 
+       * kdpipeiodevice.cpp: New version from Frank Osterfeld.
+
        * engine-gpgconf.c (gpgconf_config_load_cb2): Handle the flag
        NO_ARG_DESC.
 
index 9e0179c..dd2503b 100644 (file)
@@ -329,11 +329,14 @@ void KDPipeIODevice::Private::emitReadyRead()
     emit q->readyRead();
 
     if ( !thisPointer )
-       return;
-    qDebug( "KDPipeIODevice::Private::emitReadyRead %p, %d: locking reader (CONSUMER THREAD)", this, counter );
-    synchronized( reader ) {
-        qDebug( "KDPipeIODevice::Private::emitReadyRead %p, %d: locked reader (CONSUMER THREAD)", this, counter );
-        reader->readyReadSentCondition.wakeAll();
+        return;
+    
+    if ( reader ) {
+        qDebug( "KDPipeIODevice::Private::emitReadyRead %p, %d: locking reader (CONSUMER THREAD)", this, counter );
+        synchronized( reader ) {
+            qDebug( "KDPipeIODevice::Private::emitReadyRead %p, %d: locked reader (CONSUMER THREAD)", this, counter );
+            reader->readyReadSentCondition.wakeAll();
+        }
     }
     qDebug( "KDPipeIODevice::Private::emitReadyRead %p leaving %d", this, counter );
 
@@ -704,7 +707,7 @@ void Reader::run() {
  
         while ( !cancel && !error && bufferFull() ) {
             notifyReadyRead();
-            if ( bufferFull() ) {
+            if ( !cancel && bufferFull() ) {
                 qDebug( "%p: Reader::run: buffer is full, going to sleep", this );
                bufferNotFullCondition.wait( &mutex );
            }