]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Some changes of handling mechanism of the SALOME_Event objects
authorsmh <smh@opencascade.com>
Wed, 14 Apr 2004 10:58:16 +0000 (10:58 +0000)
committersmh <smh@opencascade.com>
Wed, 14 Apr 2004 10:58:16 +0000 (10:58 +0000)
src/Event/SALOME_Event.cxx
src/Event/SALOME_Event.hxx
src/SALOMEGUI/QAD_Desktop.cxx

index 6bceae464cec5ce647e2a48c5d9d78a7f02de596..7de746341a653a8e9d2c182a1801291461e2ff77 100644 (file)
 #include <qapplication.h>
 #include <qthread.h>
 
+#ifdef _DEBUG_
+static int MYDEBUG = 0;
+#else
+static int MYDEBUG = 0;
+#endif
+
 //===========================================================
 /*!
  *  SALOME_Event::SALOME_Event
  *  Constructor
  */
 //===========================================================
-SALOME_Event::SALOME_Event( int salomeEventType, bool wait, bool autoRelease )
-: myType( salomeEventType ), 
+SALOME_Event::SALOME_Event( int salomeEventType, bool wait, bool autoRelease )
+  myType( salomeEventType ), 
   myWait( wait ),
   myAutoRelease( autoRelease )
 {
-  MESSAGE( "SALOME_Event::SALOME_Event(): myType = "<<myType<<", myWait = "<<myWait );
-  if ( wait ) {
+  if(MYDEBUG) MESSAGE( "SALOME_Event::SALOME_Event(): this = "<<this<<", myWait = "<<myWait );
+  if ( myWait ) {
     // Prepare the semaphore 
     mySemaphore = new QSemaphore( 2 );
     mySemaphore->operator+=( 2 );
@@ -61,7 +67,7 @@ SALOME_Event::SALOME_Event( int salomeEventType, bool wait, bool autoRelease )
 //===========================================================
 SALOME_Event::~SALOME_Event()
 {
-  MESSAGE( "SALOME_Event::~SALOME_Event(): myType = "<<myType<<", myWait = "<<myWait );
+  if(MYDEBUG) MESSAGE( "SALOME_Event::~SALOME_Event(): this = "<<this<<", myWait = "<<myWait );
   if ( myWait ) {
     if ( mySemaphore->available() < mySemaphore->total() )
       mySemaphore->operator-=( mySemaphore->total() - mySemaphore->available() );
@@ -77,14 +83,14 @@ SALOME_Event::~SALOME_Event()
 //===========================================================
 void SALOME_Event::process()
 {
-  MESSAGE( "SALOME_Event::process(): myType = "<<myType<<",myWait = "<<myWait );
+  if(MYDEBUG) MESSAGE( "SALOME_Event::process(): this = "<<this<<", myWait = "<<myWait );
   QThread::postEvent( qApp, new QCustomEvent( SALOME_EVENT, (void*)this ) );
   if ( myWait ) {
-    MESSAGE( "SALOME_Event::process(): available = " << mySemaphore->available() );
+    if(MYDEBUG) MESSAGE( "SALOME_Event::process(): available = " << mySemaphore->available() );
     if ( !mySemaphore->available() )
       mySemaphore->operator+=( 1 );
 
-    MESSAGE( "SALOME_Event::process() COMPLETED: myType = "<<myType<<",myWait = "<<myWait );
+    if(MYDEBUG) MESSAGE( "SALOME_Event::process() COMPLETED: this = "<<this<<", myWait = "<<myWait );
   }
   if ( myAutoRelease )
     release();
@@ -98,20 +104,20 @@ void SALOME_Event::process()
 //===========================================================
 void SALOME_Event::processed()
 {
-  MESSAGE( "SALOME_Event::processed(): myType = "<<myType<<",myWait = "<<myWait );
+  if(MYDEBUG) MESSAGE( "SALOME_Event::processed(): this = "<<this<<", myWait = "<<myWait );
   if ( myWait ) {
-    MESSAGE( "SALOME_Event::processed(): available = " << mySemaphore->available() );
+    if(MYDEBUG) MESSAGE( "SALOME_Event::processed(): available = " << mySemaphore->available() );
     if ( !mySemaphore->available() ) {
       // process() takes control over mySemaphore after the next line is executed
       mySemaphore->operator-=( 1 );
 
-      MESSAGE( "SALOME_Event::processed(): semaphore DECREMENTED" );
+      if(MYDEBUG) MESSAGE( "SALOME_Event::processed(): semaphore DECREMENTED" );
 
       // Current thread will block here until process() completes
       mySemaphore->operator+=( mySemaphore->total() );
     }
   }
-  MESSAGE( "SALOME_Event::processed() COMPLETED: myType = "<<myType<<",myWait = "<<myWait );
+  if(MYDEBUG) MESSAGE( "SALOME_Event::processed() COMPLETED: this = "<<this<<", myWait = "<<myWait );
 }
 
 //===========================================================
@@ -122,12 +128,12 @@ void SALOME_Event::processed()
 //===========================================================
 void SALOME_Event::release()
 {
-  MESSAGE( "SALOME_Event::release(): myType = "<<myType<<",myWait = "<<myWait );
+  if(MYDEBUG) MESSAGE( "SALOME_Event::release(): this = "<<this<<", myWait = "<<myWait );
   if ( myWait ) {
-    MESSAGE( "SALOME_Event::release(): available = " << mySemaphore->available() );
+    if(MYDEBUG) MESSAGE( "SALOME_Event::release(): available = " << mySemaphore->available() );
     mySemaphore->operator-=( mySemaphore->total() - mySemaphore->available() );
   }
-  MESSAGE( "SALOME_Event::release() COMPLETED: myType = "<<myType<<",myWait = "<<myWait );
+  if(MYDEBUG) MESSAGE( "SALOME_Event::release() COMPLETED: this = "<<this<<", myWait = "<<myWait );
 }
 
 
index 342af9c2dae105fbe468d8d82db5d668f9fa2ae1..477f1d48961e6e31073d80a0b4a02f5919510c37 100644 (file)
@@ -79,11 +79,13 @@ class QSemaphore;
 class SALOME_Event
 {
 public:
-  SALOME_Event( int salomeEventType, bool wait, bool autoRelease = false );
+  SALOME_Event( int salomeEventType = -1, bool wait = true, bool autoRelease = false );
   virtual ~SALOME_Event();
 
   int getType() const { return myType; }
 
+  virtual bool Execute() { return false; }
+
   void process();
   void processed();
 
@@ -96,4 +98,10 @@ private:
   QSemaphore* mySemaphore;
 };
 
+
+inline void ProcessVoidEvent(SALOME_Event* theEvent){
+  theEvent->process();
+  theEvent->release();
+}
+
 #endif
index ab72ecc6f88808b7c9e9c65cdc009d9155c286eb..cbaf05cd5288140df6f53b60adaa674ce3894448 100644 (file)
@@ -475,6 +475,9 @@ void QAD_Desktop::processEvent( SALOME_Event* theEvent )
   if ( !theEvent )
     return;
 
+  if(theEvent->Execute())
+    return;
+
   for ( ComponentMap::iterator it = myComponents.begin(); it != myComponents.end(); it++ ) {
     if ( it.data()->CanProcessEvent( theEvent ) && it.data()->ProcessEvent( theEvent ) )
       break;