Inheritance diagram for GraphicsEngine::RenderThread:
Public Member Functions | |
RenderThread (const string &name, GraphicsEngine *engine) | |
virtual void | thread_main () |
The main loop for a particular render thread. | |
const string & | get_name () const |
Returns the name of the thread. | |
bool | start (ThreadPriority priority, bool global, bool joinable) |
Starts the thread executing. | |
void | join () |
Blocks the calling process until the thread terminates. | |
virtual void | output (ostream &out) const |
virtual TypeHandle | get_type () const |
virtual TypeHandle | force_init_type () |
int | get_type_index () const |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. | |
bool | is_of_type (TypeHandle handle) const |
Returns true if the current object is or derives from the indicated type. | |
bool | is_exact_type (TypeHandle handle) const |
Returns true if the current object is the indicated type exactly. | |
int | get_ref_count () const |
Returns the current reference count. | |
int | ref () const |
Explicitly increments the reference count. | |
int | unref () const |
Explicitly decrements the reference count. | |
void | test_ref_count_integrity () const |
Does some easy checks to make sure that the reference count isn't completely bogus. | |
void | add_gsg (GraphicsStateGuardian *gsg) |
Adds a new GSG to the _gsg list, if it is not already there. | |
void | add_window (Windows &wlist, GraphicsWindow *window) |
Adds a new window to the indicated list, which should be a member of the WindowRenderer. | |
void | remove_window (GraphicsWindow *window) |
Immediately removes the indicated window from all lists. | |
void | do_frame (GraphicsEngine *engine) |
Executes one stage of the pipeline for the current thread: calls cull on all windows that are on the cull list for this thread, draw on all the windows on the draw list, etc. | |
void | do_flip (GraphicsEngine *engine) |
Flips the windows as appropriate for the current thread. | |
void | do_release (GraphicsEngine *engine) |
Releases the rendering contexts for all windows on the _draw list. | |
void | do_close (GraphicsEngine *engine) |
Closes all the windows on the _window list. | |
void | do_pending (GraphicsEngine *engine) |
Actually closes any windows that were recently removed from the WindowRenderer. | |
bool | any_done_gsgs () const |
Returns true if any of the GSG's on this thread's draw list are done (they have no outstanding pointers other than this one), or false if all of them are still good. | |
Static Public Member Functions | |
void | prepare_for_exit () |
Should be called by the main thread just before exiting the program, this blocks until any remaining thread cleanup has finished. | |
Thread * | get_current_thread () |
Returns a pointer to the currently-executing Thread object, or NULL if the main thread (or some system thread other than one started from the Panda interface) is currently executing. | |
bool | is_threading_supported () |
Returns true if a real threading library is available that supports threads, or false if no threading library is available (and Thread::start() will always fail). | |
void | sleep (double seconds) |
Suspends the current thread for at least the indicated amount of time. | |
TypeHandle | get_class_type () |
void | init_type () |
Public Attributes | |
GraphicsEngine * | _engine |
Mutex | _cv_mutex |
ConditionVar | _cv |
ThreadState | _thread_state |
Windows | _cull |
Windows | _cdraw |
Windows | _draw |
Windows | _window |
Windows | _pending_release |
Windows | _pending_close |
GSGs | _gsgs |
Mutex | _wl_lock |
|
Definition at line 1375 of file graphicsEngine.cxx. |
|
Adds a new GSG to the _gsg list, if it is not already there.
Definition at line 1087 of file graphicsEngine.cxx. References GraphicsWindow::release_gsg(), and win. |
|
Adds a new window to the indicated list, which should be a member of the WindowRenderer.
Definition at line 1103 of file graphicsEngine.cxx. |
|
Returns true if any of the GSG's on this thread's draw list are done (they have no outstanding pointers other than this one), or false if all of them are still good.
Definition at line 1355 of file graphicsEngine.cxx. |
|
Closes all the windows on the _window list.
Definition at line 1265 of file graphicsEngine.cxx. |
|
Flips the windows as appropriate for the current thread.
Definition at line 1230 of file graphicsEngine.cxx. |
|
Executes one stage of the pipeline for the current thread: calls cull on all windows that are on the cull list for this thread, draw on all the windows on the draw list, etc.
Definition at line 1192 of file graphicsEngine.cxx. |
|
Actually closes any windows that were recently removed from the WindowRenderer.
Definition at line 1305 of file graphicsEngine.cxx. Referenced by GraphicsEngine::setup_scene(). |
|
Releases the rendering contexts for all windows on the _draw list.
Definition at line 1247 of file graphicsEngine.cxx. |
|
|
Reimplemented from TypedReferenceCount. |
|
Returns a pointer to the currently-executing Thread object, or NULL if the main thread (or some system thread other than one started from the Panda interface) is currently executing.
|
|
Returns the name of the thread.
Definition at line 83 of file thread.I. References Thread::_impl, Thread::_started, INLINE, nassertr, and ThreadDummyImpl::start(). Referenced by ThreadWithData::ThreadWithData(), and Thread::~Thread(). |
|
Returns the current reference count.
Definition at line 183 of file referenceCount.I. Referenced by RenderState::determine_bin_index(), RenderEffects::determine_show_bounds(), FontPool::ns_garbage_collect(), TexturePool::ns_garbage_collect(), MaterialPool::ns_get_material(), and TexturePool::ns_release_texture(). |
|
|
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. This is equivalent to get_type().get_index(). Definition at line 71 of file typedObject.I. References TypeHandle::get_name(), TypedObject::get_type(), and INLINE. |
|
Reimplemented from TypedReferenceCount. |
|
Returns true if the current object is the indicated type exactly.
Definition at line 101 of file typedObject.I. Referenced by PT(), and CollisionNode::xform(). |
|
|
Returns true if a real threading library is available that supports threads, or false if no threading library is available (and Thread::start() will always fail).
|
|
Blocks the calling process until the thread terminates. If the thread has already terminated, this returns immediately. Definition at line 155 of file thread.I. References INLINE, and ThreadDummyImpl::sleep(). |
|
Definition at line 45 of file thread.cxx. |
|
Should be called by the main thread just before exiting the program, this blocks until any remaining thread cleanup has finished.
|
|
Explicitly increments the reference count. User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is the new reference count. Definition at line 225 of file referenceCount.I. Referenced by ClientDevice::ClientDevice(), EggGroupNode::find_textures(), EggGroupNode::r_apply_texmats(), EggGroupNode::r_flatten_transforms(), and EggGroupNode::reverse_vertex_ordering(). |
|
Immediately removes the indicated window from all lists. If the window is currently open and is already on the _window list, moves it to the _pending_close list for later closure. Definition at line 1123 of file graphicsEngine.cxx. References GraphicsEngine::WindowRenderer::_gsgs. Referenced by GraphicsEngine::setup_scene(). |
|
Suspends the current thread for at least the indicated amount of time. It might be suspended for longer. |
|
Starts the thread executing. It is only valid to call this once. The thread will begin executing its thread_main() function, and will terminate when thread_main() returns. priority is intended as a hint to the relative importance of this thread, and global should be set true if the thread will perform a lot of blocking I/O, or false otherwise (see the NSPR documentation on global vs. local threads for more on this). Both of these parameters may be ignored by the thread implementation. joinable should be set true if you intend to call join() to wait for the thread to terminate, or false if you don't care and you will never call join(). The return value is true if the thread is successfully started, false otherwise. Definition at line 136 of file thread.I. References INLINE, and ThreadDummyImpl::is_threading_supported(). |
|
Does some easy checks to make sure that the reference count isn't completely bogus.
Definition at line 328 of file referenceCount.I. References INLINE. Referenced by EggNode::determine_bin(), and ReferenceCount::~ReferenceCount(). |
|
The main loop for a particular render thread. The thread will process whatever cull or draw windows it has assigned to it. Implements Thread. Definition at line 1396 of file graphicsEngine.cxx. |
|
Explicitly decrements the reference count. Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic; plus, we don't have a virtual destructor anyway.) However, see the helper function unref_delete(). User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically. This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it. The return value is the new reference count. Definition at line 293 of file referenceCount.I. References INLINE. Referenced by RenderState::determine_bin_index(), and RenderEffects::determine_show_bounds(). |
|
Definition at line 150 of file graphicsEngine.h. |
|
Definition at line 149 of file graphicsEngine.h. |
|
Definition at line 174 of file graphicsEngine.h. |
|
Definition at line 173 of file graphicsEngine.h. Referenced by GraphicsEngine::cull_and_draw_together(). |
|
Definition at line 151 of file graphicsEngine.h. |
|
Definition at line 172 of file graphicsEngine.h. |
|
Definition at line 155 of file graphicsEngine.h. Referenced by GraphicsEngine::WindowRenderer::remove_window(). |
|
Definition at line 154 of file graphicsEngine.h. |
|
Definition at line 153 of file graphicsEngine.h. |
|
Definition at line 175 of file graphicsEngine.h. |
|
Definition at line 152 of file graphicsEngine.h. |
|
Definition at line 156 of file graphicsEngine.h. |