23 template<
class CycleDataType>
26 int stage,
Thread *current_thread) :
28 _current_thread(current_thread),
31 _pointer = _cycler->read_stage_unlocked(_stage);
37 template<
class CycleDataType>
40 _cycler(copy._cycler),
41 _current_thread(copy._current_thread),
42 _pointer(copy._pointer),
50 template<
class CycleDataType>
53 nassertv(_current_thread == copy._current_thread);
55 _cycler = copy._cycler;
56 _pointer = copy._pointer;
63 template<
class CycleDataType>
71 template<
class CycleDataType>
81 template<
class CycleDataType>
83 operator
const CycleDataType * ()
const {
91 template<
class CycleDataType>
94 return _current_thread;
97 #else // !DO_PIPELINING 103 template<
class CycleDataType>
107 _pointer = cycler.
cheat();
113 template<
class CycleDataType>
116 _pointer(copy._pointer)
123 template<
class CycleDataType>
126 _pointer = copy._pointer;
132 template<
class CycleDataType>
140 template<
class CycleDataType>
150 template<
class CycleDataType>
152 operator
const CycleDataType * ()
const {
160 template<
class CycleDataType>
163 return Thread::get_current_thread();
166 #endif // DO_PIPELINING This class maintains different copies of a page of data between stages of the graphics pipeline (or a...
CycleDataType * cheat() const
Returns a pointer without counting it.
const CycleDataType * operator ->() const
This provides an indirect member access to the actual CycleData data.
This class is similar to CycleDataReader, except it allows reading from a particular stage of the pip...
A thread; that is, a lightweight process.
Thread * get_current_thread() const
Returns the Thread pointer of the currently-executing thread, as passed to the constructor of this ob...