Index: tests/SystemQueue-tests.cc
===================================================================
--- tests/SystemQueue-tests.cc	(revision 12764)
+++ tests/SystemQueue-tests.cc	(revision 12765)
@@ -102,4 +102,14 @@
         
         checkmark = true;
+    }
+
+    void Leave()
+    {
+        // let's do something before leaving..
+        this->LongRunner();
+        checkmark = false;
+        
+        cout << "### Leaving SysQ ### "<< endl;
+        SystemQueue::instance().leave();
     }
 
@@ -223,4 +233,45 @@
 
 /**
+ *  leaves the SystemQueue from inside a scheduled event (in contrast to cancel)
+ * 
+ *  NOTE: due to the SystemQueue singleton design, explicit cleanup is necessary!
+ * 
+ *  [ NOTE: the old System Queue does not support this. ]
+ */
+TEST_F(SystemQueueTest, LeaveFromInsideEvent)
+{
+    SystemQueue& sysq = SystemQueue::instance();
+    
+    // start
+    sysq.run();
+    
+    // scheduleCall
+    sysq.scheduleCall(
+        boost::bind(&SystemQueueTest::Leave, this)
+    );
+
+    // schedule another which must NOT be performed
+    sysq.scheduleCall(
+        boost::bind(&SystemQueueTest::Check, this)
+    );
+    
+    // sleep until the SystemQueue thread has finished
+    sysq.join();
+    
+    EXPECT_FALSE( sysq.isRunning() );
+    
+    // ensure Check() was not perfomed
+    EXPECT_FALSE( sysq.isEmpty() );
+    EXPECT_FALSE( checkmark );
+    
+    // CLEANUP
+    sysq.cancel();
+    
+    EXPECT_FALSE( sysq.isRunning() );
+    EXPECT_TRUE( sysq.isEmpty() );
+}
+
+
+/**
  *  schedule a call and test whether it is actually performed by the SystemQueue
  */
