Difference between revisions of "X11 locking"
From LinuxMCE
Rwilson131 (Talk | contribs) m |
|||
(5 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | [[Category: Programmer's Guide]] | |
== Using X11 locking in Orbiter == | == Using X11 locking in Orbiter == | ||
− | + | In OrbiterLinux there are 2 new functions: | |
− | + | ||
X_LockDisplay() and X_UnlockDisplay(); which should be used | X_LockDisplay() and X_UnlockDisplay(); which should be used | ||
before and after calling X11/SDL functions which update the display, or change the mouse position | before and after calling X11/SDL functions which update the display, or change the mouse position | ||
− | + | Example: | |
− | class_name::some_drawing_function() | + | class_name::some_drawing_function() |
− | { | + | { |
− | + | OrbiterLinux *pOrbiterLinux = dynamic_cast<OrbiterLinux *>(pOrbiter); | |
− | + | // or, better, make a member variable from pOrbiterLinux, | |
− | + | // and initialize it before this function would be called | |
− | + | ||
− | + | // non-critical code | |
− | + | ||
− | + | if (pOrbiterLinux) | |
− | + | pOrbiterLinux->X_LockDisplay(); | |
− | + | ||
− | + | // critical code here | |
− | + | ||
− | + | if (pOrbiterLinux) | |
− | + | pOrbiterLinux->X_UnlockDisplay(); | |
− | + | ||
− | + | // non-critical code | |
− | } | + | } |
The dynamic_cast should return NULL only if you are not compiling the Linux version. | The dynamic_cast should return NULL only if you are not compiling the Linux version. | ||
Line 30: | Line 29: | ||
== Links to documents == | == Links to documents == | ||
http://svn.plutohome.com/pluto/trunk/src/docs/X11_PLUTO.txt | http://svn.plutohome.com/pluto/trunk/src/docs/X11_PLUTO.txt | ||
+ | |||
http://svn.plutohome.com/pluto/trunk/src/docs/X11_NOTES.txt | http://svn.plutohome.com/pluto/trunk/src/docs/X11_NOTES.txt |
Latest revision as of 19:51, 24 February 2008
Using X11 locking in Orbiter
In OrbiterLinux there are 2 new functions: X_LockDisplay() and X_UnlockDisplay(); which should be used before and after calling X11/SDL functions which update the display, or change the mouse position
Example:
class_name::some_drawing_function() { OrbiterLinux *pOrbiterLinux = dynamic_cast<OrbiterLinux *>(pOrbiter); // or, better, make a member variable from pOrbiterLinux, // and initialize it before this function would be called // non-critical code if (pOrbiterLinux) pOrbiterLinux->X_LockDisplay(); // critical code here if (pOrbiterLinux) pOrbiterLinux->X_UnlockDisplay(); // non-critical code }
The dynamic_cast should return NULL only if you are not compiling the Linux version.