Index: /tests/SystemQueue-tests.cc
===================================================================
--- /tests/SystemQueue-tests.cc	(revision 12756)
+++ /tests/SystemQueue-tests.cc	(revision 12757)
@@ -289,5 +289,6 @@
     SystemQueueTimingTest() :
         SystemQueueTest()  /* super constructor */,
-        sysq( SystemQueue::instance() )
+        sysq( SystemQueue::instance() ),
+        calls(0)
     {
     }
@@ -321,12 +322,14 @@
         
         // info
-        cout << "/// Timing difference: " << diff << " microseconds" << endl;
+        cout << "### Timing difference: " << diff << " microseconds" << endl;
         
         EXPECT_LT( abs(diff), margin );
         
+        calls++;
         checkmark = true;
     }
 
     SystemQueue& sysq;
+    int calls;
 };
 
@@ -443,2 +446,35 @@
 }
 
+
+/**
+ *  Like TimingSingleCall but tests whether the timings change when multiple events are scheduled.
+ */
+TEST_F(SystemQueueTimingTest, TimingMultipleCalls)
+{
+    ptime now = microsec_clock::local_time();
+    
+    sysq.scheduleCall(
+        boost::bind(&SystemQueueTimingTest::TimeCheckingCall, this, 
+                    now, DELAY_TIME*1000 * 2, DELAY_MARGIN),
+        DELAY_TIME * 2
+    );
+
+    sysq.scheduleCall(
+        boost::bind(&SystemQueueTimingTest::TimeCheckingCall, this, 
+                    now, DELAY_TIME*1000 * 3, DELAY_MARGIN),
+        DELAY_TIME * 3
+    );
+
+    sysq.scheduleCall(
+        boost::bind(&SystemQueueTimingTest::TimeCheckingCall, this, 
+                    now, DELAY_TIME*1000, DELAY_MARGIN),
+        DELAY_TIME
+    );
+
+    // main thread is going to sleep..
+    usleep(DELAY_TIME * 3000 + DELAY_MARGIN * 2);
+    wait_for_checkmark(MAX_WAIT);  // XXX wait_until_empty
+    
+    // make sure the measurement function was called at all
+    EXPECT_EQ(3, calls) << "Not every event was performed..";
+}
