Index: fact/tools/Edd/Edd.cc
===================================================================
--- fact/tools/Edd/Edd.cc	(revision 11189)
+++ fact/tools/Edd/Edd.cc	(revision 11360)
@@ -111,14 +111,12 @@
   
 // Update event buffer
-void EventScope::Update(QString Name, int Time, QByteArray Data, QString Format, QString) {
-  
-  if (Name != this->Name) return;
+void EventScope::Update(const QString &, int Time, const QByteArray &Data, const QString &Format, const QString &, int) {
 
   // Check if service available
   if (!SetStatus(this, Name, Time, Format)) return;
   if (Data.size() < (int) sizeof(RunHeader)) return;
-  
-  // Disconnect while processing to avoid queing of events
-  disconnect(Handler, SIGNAL(YEP(QString, int, QByteArray, QString, QString)), this, SLOT(Update(QString, int, QByteArray, QString, QString)));
+
+  // Ignore further data while processing this one
+  Handler->Ignore(Name, true);
   
   // Clear temporary file and write event data to this file
@@ -132,7 +130,9 @@
   // Open temporary raw data file
   OpenRawFile(File.fileName());
- 
-  // Reconnect after processing
-  connect(Handler, SIGNAL(YEP(QString, int, QByteArray, QString, QString)), SLOT(Update(QString, int, QByteArray, QString, QString)));
+
+
+  // Process all pending events, then allow data again
+  QApplication::processEvents();
+  Handler->Ignore(Name, false);
 }
 
@@ -191,5 +191,5 @@
   
   // Display first event
-  NewEventNum(0);
+  NewEventNum(DAQPage->Channel->value());
 }
 
@@ -316,12 +316,7 @@
 void EventScope::SetActive(bool State) {
 
-  if (State && !Active) {
-	Handler->Subscribe(DRSBoard+"/EventData");
-	connect(Handler, SIGNAL(YEP(QString, int, QByteArray, QString, QString)), SLOT(Update(QString, int, QByteArray, QString, QString)));
-  }
-  if (!State && Active) {
-	Handler->Unsubscribe(DRSBoard+"/EventData");
-	disconnect(Handler, SIGNAL(YEP(QString, int, QByteArray, QString, QString)), this, SLOT(Update(QString, int, QByteArray, QString, QString)));
-  }
+  if (State && !Active) Handler->Subscribe(DRSBoard+"/EventData", this, -1);
+  if (!State && Active) Handler->Unsubscribe(DRSBoard+"/EventData", this);
+
   Active = State;
 }
@@ -929,7 +924,4 @@
   connect(Timer, SIGNAL(timeout()), this, SLOT(CheckAlarm()));
   Timer->start(5000);
-
-  // Force update of all widgets constructed (in thread for GUI responsiveness) 
-  QtConcurrent::run(Handler, &EddDim::ForceEmit);
 }  
     
Index: fact/tools/Edd/Edd.h
===================================================================
--- fact/tools/Edd/Edd.h	(revision 11189)
+++ fact/tools/Edd/Edd.h	(revision 11360)
@@ -11,5 +11,5 @@
 
 // Event oscilloscope
-class EventScope: public EddBasePlot, public PixelMap {
+class EventScope: public EddBasePlot, public PixelMap, public EddWidget {
   Q_OBJECT
 
@@ -34,5 +34,6 @@
     EventScope(class TP_DAQ *, QWidget * = NULL);
     ~EventScope();
-	
+
+	void Update(const QString &, int, const QByteArray &, const QString &, const QString &, int=-1);
 	void UpdateFirst(int, int, int);
 	void AddTrace(int, int, int);
@@ -43,5 +44,4 @@
 
   private slots:
-	void Update(QString, int, QByteArray, QString, QString);
 	void PlotTraces();
 	void DeleteCurve(QwtPlotCurve *);
