BALL::VIEW::BALLThread Class Reference
#include <BALL/VIEW/KERNEL/threads.h>
List of all members.
Detailed Description
Baseclass for threads in BALL. To use multithreading in BALL, there are several problems arising from the fact, that Qt itself is not threadsafe: 1. Prevent any output to Log, stdout or sterr. If a simulation has to print some informations, use the method output_, which will send an Event to the GUI-thread. 2. Dont call any Qt-methods directly. If you need some interaction with the GUI, send a QEvent to the MainControl. 3. Especially dont call the refresh methods for the Scene or GL-methods. Use updateStructure_() instead. 4. Overload the run method to insert the multithreaded code. 5. Call setMainControl() before running the thread 6. Before running a thread, lock the composites with ModularWidget::lockComposites(). 7. After running a thread, unlock them with ModularWidget::unlockComposites(). If you dont pay attention to these rules, dont wonder if BALLView should freeze or crash!
Constructor & Destructor Documentation
BALL::VIEW::BALLThread::BALLThread |
( |
|
) |
|
Member Function Documentation
Composite* BALL::VIEW::BALLThread::getComposite |
( |
|
) |
[inline] |
void BALL::VIEW::BALLThread::output_ |
( |
const String & |
string, |
|
|
bool |
important = false | |
|
) |
| | [protected] |
Sends the string as outout to Log.info.
virtual void BALL::VIEW::BALLThread::run |
( |
|
) |
[inline, virtual] |
void BALL::VIEW::BALLThread::sendMessage_ |
( |
Message * |
msg |
) |
[protected] |
Send a VIEW Message to the main thread. Create the message on the heap!
void BALL::VIEW::BALLThread::setComposite |
( |
Composite * |
composite |
) |
[inline] |
void BALL::VIEW::BALLThread::setMainControl |
( |
MainControl * |
mf |
) |
[inline] |
void BALL::VIEW::BALLThread::updateStructure_ |
( |
|
) |
[protected] |
void BALL::VIEW::BALLThread::waitForUpdateOfRepresentations_ |
( |
|
) |
[protected] |
Wait until all Representation's are rebuild, by using RepresentationManager::updatePending() and \ RepresentationManager::getUpdateWaitCondition().wait() .
Member Data Documentation