Panda3D
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Protected Attributes | Static Protected Attributes

glxGraphicsPipe Class Reference

This graphics pipe represents the interface for creating OpenGL graphics windows on an X-based (e.g. More...

#include "glxGraphicsPipe.h"

Inheritance diagram for glxGraphicsPipe:
x11GraphicsPipe GraphicsPipe TypedReferenceCount TypedObject ReferenceCount MemoryBase MemoryBase

List of all members.

Public Types

enum  BufferCreationFlags {
  BF_refuse_parasite = 0x0001, BF_require_parasite = 0x0002, BF_refuse_window = 0x0004, BF_require_window = 0x0008,
  BF_can_bind_color = 0x0040, BF_can_bind_every = 0x0080, BF_resizeable = 0x0100, BF_size_track_host = 0x0200,
  BF_rtt_cumulative = 0x0400, BF_fb_props_optional = 0x0800, BF_size_square = 0x1000, BF_size_power_2 = 0x2000
}
enum  OutputTypes { OT_window = 0x0001, OT_fullscreen_window = 0x0002, OT_buffer = 0x0004, OT_texture_buffer = 0x0008 }
enum  PreferredWindowThread { PWT_app, PWT_draw }

Public Member Functions

 glxGraphicsPipe (const string &display=string())
TypedObjectas_typed_object ()
 Returns the object, upcast (if necessary) to a TypedObject pointer.
const TypedObjectas_typed_object () const
 Returns the object, upcast (if necessary) to a TypedObject pointer.
virtual TypeHandle force_init_type ()
int get_best_parent_from_Set (const std::set< int > &) const
GraphicsDeviceget_device () const
 Returns a pointer to device object.
Display * get_display () const
 Returns a pointer to the X display associated with the pipe: the display on which to create the windows.
int get_display_height () const
 Returns the height of the entire display, if it is known.
DisplayInformationget_display_information ()
 Gets the pipe's DisplayInformation.
int get_display_width () const
 Returns the width of the entire display, if it is known.
Cursor get_hidden_cursor ()
 Returns an invisible Cursor suitable for assigning to windows that have the cursor_hidden property set.
XIM get_im () const
 Returns the input method opened for the pipe, or NULL if the input method could not be opened for some reason.
virtual string get_interface_name () const
 Returns the name of the rendering interface associated with this GraphicsPipe.
virtual PreferredWindowThread get_preferred_window_thread () const
 Returns an indication of the thread in which this GraphicsPipe requires its window processing to be performed: typically either the app thread (e.g.
int get_ref_count () const
 Returns the current reference count.
Window get_root () const
 Returns the handle to the root window on the pipe's display.
int get_screen () const
 Returns the X screen number associated with the pipe.
int get_supported_types () const
 Returns the mask of bits that represents the kinds of GraphicsOutput objects this pipe might be able to successfully create.
virtual TypeHandle get_type () const
int get_type_index () const
 Returns the internal index number associated with this object's TypeHandle, a unique number for each different type.
WeakReferenceListget_weak_list () const
 Returns the WeakReferenceList associated with this ReferenceCount object.
bool has_weak_list () const
 Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise.
bool is_exact_type (TypeHandle handle) const
 Returns true if the current object is the indicated type exactly.
bool is_of_type (TypeHandle handle) const
 Returns true if the current object is or derives from the indicated type.
bool is_valid () const
 Returns false if this pipe is known to be invalid, meaning that an attempt to create a GraphicsWindow with the pipe will certainly fail.
void local_object ()
 This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack.
virtual void lookup_cpu_data ()
 Looks up the detailed CPU information and stores it in _display_information, if supported by the OS.
void operator delete (void *ptr, void *)
void operator delete (void *ptr)
void operator delete (void *ptr, void *)
void operator delete (void *ptr)
void operator delete[] (void *ptr)
void operator delete[] (void *, void *)
void operator delete[] (void *ptr)
void operator delete[] (void *, void *)
void * operator new (size_t size)
void * operator new (size_t size)
void * operator new (size_t size, void *ptr)
void * operator new (size_t size, void *ptr)
void * operator new[] (size_t size)
void * operator new[] (size_t size)
void * operator new[] (size_t size, void *ptr)
void * operator new[] (size_t size, void *ptr)
virtual PT (GraphicsDevice) make_device(void *scrn
void ref () const
 Explicitly increments the reference count.
bool supports_type (int flags) const
 A convenience function to ask if a particular type or types of GraphicsObjects are supported.
bool test_ref_count_integrity () const
 Does some easy checks to make sure that the reference count isn't completely bogus.
bool test_ref_count_nonzero () const
 Does some easy checks to make sure that the reference count isn't zero, or completely bogus.
virtual bool unref () const
 Explicitly decrements the reference count.
void weak_ref (WeakPointerToVoid *ptv)
 Adds the indicated PointerToVoid as a weak reference to this object.
void weak_unref (WeakPointerToVoid *ptv)
 Removes the indicated PointerToVoid as a weak reference to this object.

Static Public Member Functions

static int disable_x_error_messages ()
 Globally disables the printing of error messages that are raised by the X11 system, for instance in order to test whether a particular X11 operation will succeed.
static int enable_x_error_messages ()
 Reenables the printing of error messages after a previous call to disable_x_error_messages().
static TypeHandle get_class_type ()
static int get_x_error_count ()
 Returns the number of times an error indication has been raised by the X11 system since application start, including errors raised while error messages were disabled.
static void init_type ()
 This function is declared non-inline to work around a compiler bug in g++ 2.96.
static PT (GraphicsPipe) pipe_constructor()

Public Attributes

Atom _net_wm_state
Atom _net_wm_state_above
Atom _net_wm_state_add
Atom _net_wm_state_below
Atom _net_wm_state_fullscreen
Atom _net_wm_state_remove
Atom _net_wm_window_type
Atom _net_wm_window_type_fullscreen
Atom _net_wm_window_type_splash
Atom _wm_delete_window

Static Public Attributes

static LightReMutex _x_mutex

Protected Member Functions

virtual void close_gsg (GraphicsStateGuardian *gsg)
 This will be called in the draw thread (the same thread in which the GSG was created via make_gsg, above) to close the indicated GSG and free its associated graphics objects just before it is destructed.
bool do_test_ref_count_integrity () const
 Does some easy checks to make sure that the reference count isn't completely bogus.
bool do_test_ref_count_nonzero () const
 Returns true if the reference count is nonzero, false otherwise.
virtual PT (GraphicsOutput) make_output(const string &name

Protected Attributes

Display * _display
int _display_height
DisplayInformation_display_information
int _display_width
Cursor _hidden_cursor
XIM _im
bool _is_valid
LightMutex _lock
Window _root
int _screen
int _supported_types
virtual const
FrameBufferProperties const
WindowProperties int
GraphicsEngine
engine
virtual const
FrameBufferProperties
fb_prop
virtual const
FrameBufferProperties const
WindowProperties int 
flags
virtual const
FrameBufferProperties const
WindowProperties int
GraphicsEngine
GraphicsStateGuardian
gsg
virtual const
FrameBufferProperties const
WindowProperties int
GraphicsEngine
GraphicsStateGuardian
GraphicsOutput
host
virtual const
FrameBufferProperties const
WindowProperties int
GraphicsEngine
GraphicsStateGuardian
GraphicsOutput int bool & 
precertify
virtual const
FrameBufferProperties const
WindowProperties int
GraphicsEngine
GraphicsStateGuardian
GraphicsOutput int 
retry
virtual const
FrameBufferProperties const
WindowProperties
win_prop

Static Protected Attributes

static const int strip_properties []

Detailed Description

This graphics pipe represents the interface for creating OpenGL graphics windows on an X-based (e.g.

Unix) client.

Definition at line 87 of file glxGraphicsPipe.h.


Member Function Documentation

TypedObject * TypedObject::as_typed_object ( ) [inline, inherited]

Returns the object, upcast (if necessary) to a TypedObject pointer.

Definition at line 99 of file typedObject.I.

const TypedObject * TypedObject::as_typed_object ( ) const [inline, inherited]

Returns the object, upcast (if necessary) to a TypedObject pointer.

Definition at line 110 of file typedObject.I.

void GraphicsPipe::close_gsg ( GraphicsStateGuardian gsg) [protected, virtual, inherited]

This will be called in the draw thread (the same thread in which the GSG was created via make_gsg, above) to close the indicated GSG and free its associated graphics objects just before it is destructed.

This method exists to provide a hook for the graphics pipe to do any necessary cleanup, if any.

Definition at line 115 of file graphicsPipe.cxx.

References GraphicsStateGuardian::close_gsg().

int x11GraphicsPipe::disable_x_error_messages ( ) [inline, static, inherited]

Globally disables the printing of error messages that are raised by the X11 system, for instance in order to test whether a particular X11 operation will succeed.

Reenable error messages with a later call to enable_x_error_messages().

The return value is the current value of get_x_error_count().

Definition at line 87 of file x11GraphicsPipe.I.

Referenced by glxGraphicsPixmap::open_buffer().

bool ReferenceCount::do_test_ref_count_integrity ( ) const [protected, inherited]

Does some easy checks to make sure that the reference count isn't completely bogus.

Returns true if ok, false otherwise.

Reimplemented in NodeReferenceCount, CachedTypedWritableReferenceCount, and NodeCachedReferenceCount.

Definition at line 29 of file referenceCount.cxx.

Referenced by ReferenceCount::do_test_ref_count_nonzero(), and ReferenceCount::test_ref_count_integrity().

bool ReferenceCount::do_test_ref_count_nonzero ( ) const [protected, inherited]

Returns true if the reference count is nonzero, false otherwise.

Definition at line 56 of file referenceCount.cxx.

References ReferenceCount::do_test_ref_count_integrity().

Referenced by ReferenceCount::test_ref_count_nonzero().

int x11GraphicsPipe::enable_x_error_messages ( ) [inline, static, inherited]

Reenables the printing of error messages after a previous call to disable_x_error_messages().

The return value is the current value of get_x_error_count().

Definition at line 102 of file x11GraphicsPipe.I.

Referenced by glxGraphicsPixmap::open_buffer().

GraphicsDevice * GraphicsPipe::get_device ( ) const [inline, inherited]

Returns a pointer to device object.

Definition at line 102 of file graphicsPipe.I.

Referenced by wdxGraphicsWindow9::open_window(), and wdxGraphicsWindow8::open_window().

Display * x11GraphicsPipe::get_display ( ) const [inline, inherited]

Returns a pointer to the X display associated with the pipe: the display on which to create the windows.

Definition at line 23 of file x11GraphicsPipe.I.

Referenced by glxGraphicsBuffer::open_buffer(), and glxGraphicsWindow::open_window().

int GraphicsPipe::get_display_height ( ) const [inline, inherited]

Returns the height of the entire display, if it is known.

This may return 0. See the caveats for get_display_width().

Definition at line 92 of file graphicsPipe.I.

Referenced by x11GraphicsWindow::set_properties_now(), and eglGraphicsWindow::set_properties_now().

DisplayInformation * GraphicsPipe::get_display_information ( ) [inherited]

Gets the pipe's DisplayInformation.

Definition at line 147 of file graphicsPipe.cxx.

int GraphicsPipe::get_display_width ( ) const [inline, inherited]

Returns the width of the entire display, if it is known.

This may return 0. This is not a guarantee that windows (particularly fullscreen windows) may not be created larger than this width, but it is intended to provide a hint to the application.

Definition at line 80 of file graphicsPipe.I.

Referenced by x11GraphicsWindow::set_properties_now(), and eglGraphicsWindow::set_properties_now().

Cursor x11GraphicsPipe::get_hidden_cursor ( ) [inline, inherited]

Returns an invisible Cursor suitable for assigning to windows that have the cursor_hidden property set.

Definition at line 67 of file x11GraphicsPipe.I.

Referenced by x11GraphicsWindow::mouse_mode_relative(), x11GraphicsWindow::open_window(), and x11GraphicsWindow::set_properties_now().

XIM x11GraphicsPipe::get_im ( ) const [inline, inherited]

Returns the input method opened for the pipe, or NULL if the input method could not be opened for some reason.

Definition at line 56 of file x11GraphicsPipe.I.

Referenced by x11GraphicsWindow::open_window().

string glxGraphicsPipe::get_interface_name ( ) const [virtual]

Returns the name of the rendering interface associated with this GraphicsPipe.

This is used to present to the user to allow him/her to choose between several possible GraphicsPipes available on a particular platform, so the name should be meaningful and unique for a given platform.

Implements GraphicsPipe.

Definition at line 54 of file glxGraphicsPipe.cxx.

GraphicsPipe::PreferredWindowThread x11GraphicsPipe::get_preferred_window_thread ( ) const [virtual, inherited]

Returns an indication of the thread in which this GraphicsPipe requires its window processing to be performed: typically either the app thread (e.g.

X) or the draw thread (Windows).

Reimplemented from GraphicsPipe.

Definition at line 180 of file x11GraphicsPipe.cxx.

int ReferenceCount::get_ref_count ( ) const [inline, inherited]
Window x11GraphicsPipe::get_root ( ) const [inline, inherited]
int x11GraphicsPipe::get_screen ( ) const [inline, inherited]

Returns the X screen number associated with the pipe.

Definition at line 33 of file x11GraphicsPipe.I.

Referenced by glxGraphicsPixmap::open_buffer(), glxGraphicsBuffer::open_buffer(), and glxGraphicsWindow::open_window().

int GraphicsPipe::get_supported_types ( ) const [inline, inherited]

Returns the mask of bits that represents the kinds of GraphicsOutput objects this pipe might be able to successfully create.

The return value is the union of bits in GraphicsPipe::OutputTypes that represents the set of GraphicsOutput types.

A 1 bit in a particular position is not a guarantee of success, but a 0 bit is a guarantee of failure.

Definition at line 47 of file graphicsPipe.I.

int TypedObject::get_type_index ( ) const [inline, inherited]

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 52 of file typedObject.I.

References TypeHandle::get_index().

WeakReferenceList * ReferenceCount::get_weak_list ( ) const [inline, inherited]

Returns the WeakReferenceList associated with this ReferenceCount object.

If there has never been a WeakReferenceList associated with this object, creates one now.

Definition at line 307 of file referenceCount.I.

Referenced by ReferenceCount::weak_ref().

int x11GraphicsPipe::get_x_error_count ( ) [inline, static, inherited]

Returns the number of times an error indication has been raised by the X11 system since application start, including errors raised while error messages were disabled.

Definition at line 116 of file x11GraphicsPipe.I.

bool ReferenceCount::has_weak_list ( ) const [inline, inherited]

Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise.

In general, this will be true if there was ever a WeakPointerTo created for this object (even if there is not any for it now).

Definition at line 294 of file referenceCount.I.

Referenced by ReferenceCount::weak_unref().

static void glxGraphicsPipe::init_type ( ) [inline, static]

This function is declared non-inline to work around a compiler bug in g++ 2.96.

Making it inline seems to cause problems in the optimizer.

Reimplemented from x11GraphicsPipe.

Definition at line 110 of file glxGraphicsPipe.h.

bool TypedObject::is_exact_type ( TypeHandle  handle) const [inline, inherited]
bool TypedObject::is_of_type ( TypeHandle  handle) const [inline, inherited]

Returns true if the current object is or derives from the indicated type.

Definition at line 63 of file typedObject.I.

References TypeHandle::is_derived_from().

Referenced by EggSliderData::add_back_pointer(), EggJointData::add_back_pointer(), CIntervalManager::add_c_interval(), XFileNode::add_child(), CollisionTraverser::add_collider(), CollisionHandlerPhysical::add_collider(), EggXfmSAnim::add_data(), CharacterJointBundle::add_node(), NonlinearImager::add_screen(), EggGroupNode::apply_first_attribute(), EggGroupNode::apply_last_attribute(), DeferredNodeProperty::apply_to_node(), RecorderController::begin_playback(), NodePath::clear_clip_plane(), EggGroupNode::clear_connected_shading(), NodePath::clear_light(), EggBase::convert_paths(), NodePath::decode_from_bam_stream(), VrpnClient::disconnect_device(), PhysicsManager::do_physics(), GraphicsStateGuardian::fetch_specified_part(), EggRenderState::fill_state(), AnimBundleNode::find_anim_bundle(), EggGroupNode::find_coordsys_entry(), XFile::find_data_object(), Character::find_joint(), EggGroupNode::find_materials(), Character::find_slider(), XFile::find_template(), EggGroupNode::find_textures(), EggMaterialCollection::find_used_materials(), EggTextureCollection::find_used_textures(), EggGroupNode::force_filenames(), EggJointData::force_initial_rest_frame(), WindowFramework::get_aspect_2d(), EggPoolUniquifier::get_category(), EggGroupUniquifier::get_category(), EggGroupNode::get_connected_shading(), PandaFramework::get_mouse(), FactoryParams::get_param_of_type(), EggGroupNode::has_absolute_pathnames(), NodePath::has_clip_plane(), NodePath::has_clip_plane_off(), NodePath::has_light(), PandaFramework::hide_collision_solids(), x11GraphicsWindow::open_window(), eglGraphicsWindow::open_window(), EggNode::parse_egg(), CharacterMaker::part_to_node(), EggGroupNode::post_apply_flat_attribute(), EggBinner::prepare_node(), PortalClipper::prepare_portal(), NodePath::project_texture(), EggMatrixTablePointer::quantize_channels(), ParametricCurveCollection::r_add_curves(), SceneGraphReducer::r_collect_vertex_data(), EggGroupNode::r_load_externals(), EggGroupNode::rebuild_vertex_pools(), EggGroupNode::recompute_polygon_normals(), EggGroupNode::remove_invalid_primitives(), EggGroupNode::remove_unused_vertices(), EggLoader::reparent_decals(), EggMaterialCollection::replace_materials(), EggTextureCollection::replace_textures(), EggGroupNode::resolve_filenames(), EggGroupNode::reverse_vertex_ordering(), NodePath::set_clip_plane(), NodePath::set_clip_plane_off(), NodePath::set_light(), ProjectionScreen::set_projector(), NonlinearImager::set_source_camera(), EggXfmSAnim::set_value(), NonlinearImager::set_viewer_camera(), PandaFramework::show_collision_solids(), BamCache::store(), XFileToEggConverter::strip_nodes(), EggGroupNode::strip_normals(), DataGraphTraverser::traverse(), DataGraphTraverser::traverse_below(), EggGroupNode::triangulate_polygons(), EggGroupNode::unify_attributes(), EggNameUniquifier::uniquify(), NodeCullCallbackData::upcall(), PhysicsCollisionHandler::validate_target(), EggXfmSAnim::write(), EggGroup::write(), EggToDXFLayer::write_3d_face(), and EggToDXFLayer::write_entities().

bool GraphicsPipe::is_valid ( ) const [inline, inherited]

Returns false if this pipe is known to be invalid, meaning that an attempt to create a GraphicsWindow with the pipe will certainly fail.

Returns true if the pipe is probably valid (is this case, an attempt to create a GraphicsWindow should succeed, but might still fail).

Use the GraphicsEngine class to create a GraphicsWindow on a particular pipe.

Definition at line 30 of file graphicsPipe.I.

void ReferenceCount::local_object ( ) [inline, inherited]

This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack.

This allows the object to be passed to functions that will increment and decrement the object's reference count temporarily, and it will prevent the object from being deleted (inappropriately), when the reference count returns to zero. It actually achieves this by setting a large positive value in the reference count field.

Definition at line 276 of file referenceCount.I.

Referenced by PGTop::cull_callback(), BoundingSphere::extend_by_hexahedron(), AsyncTaskManager::find_task(), AsyncTaskManager::find_tasks(), and AsyncTaskManager::find_tasks_matching().

void GraphicsPipe::lookup_cpu_data ( ) [virtual, inherited]

Looks up the detailed CPU information and stores it in _display_information, if supported by the OS.

This may take a second or two.

Reimplemented in WinGraphicsPipe.

Definition at line 159 of file graphicsPipe.cxx.

void ReferenceCount::ref ( ) const [inline, inherited]

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.

Definition at line 179 of file referenceCount.I.

References ReferenceCount::test_ref_count_integrity().

Referenced by CachedTypedWritableReferenceCount::cache_ref(), TypedWritable::decode_raw_from_bam_stream(), NodeCachedReferenceCount::node_ref(), NodeReferenceCount::node_ref(), BamCacheRecord::set_data(), CullableObject::set_draw_callback(), and ModelRoot::set_reference().

bool GraphicsPipe::supports_type ( int  flags) const [inline, inherited]

A convenience function to ask if a particular type or types of GraphicsObjects are supported.

The parameter is a union of one or more bits defined in GrpahicsPipe::OutputTypes.

Returns true if all of the requested types are listed in the supported_types mask, false if any one of them is not. This is not a guarantee that the indicated output type will successfully be created when it is attempted.

Definition at line 66 of file graphicsPipe.I.

bool ReferenceCount::test_ref_count_integrity ( ) const [inline, inherited]
bool ReferenceCount::test_ref_count_nonzero ( ) const [inline, inherited]

Does some easy checks to make sure that the reference count isn't zero, or completely bogus.

Returns true if ok, false otherwise.

Definition at line 252 of file referenceCount.I.

References ReferenceCount::do_test_ref_count_nonzero().

Referenced by CopyOnWritePointer::test_ref_count_nonzero().

bool ReferenceCount::unref ( ) const [inline, virtual, inherited]

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.) 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 true if the new reference count is nonzero, false if it is zero.

Reimplemented in GeomVertexArrayFormat, GeomVertexFormat, InternalName, RenderAttrib, RenderEffects, RenderState, and TransformState.

Definition at line 214 of file referenceCount.I.

References ReferenceCount::test_ref_count_integrity().

Referenced by CachedTypedWritableReferenceCount::cache_unref(), TypedWritable::decode_raw_from_bam_stream(), RenderEffect::finalize(), NodeCachedReferenceCount::node_unref(), NodeReferenceCount::node_unref(), TransformState::unref(), RenderState::unref(), RenderEffects::unref(), RenderAttrib::unref(), InternalName::unref(), GeomVertexFormat::unref(), and GeomVertexArrayFormat::unref().

void ReferenceCount::weak_ref ( WeakPointerToVoid ptv) [inline, inherited]

Adds the indicated PointerToVoid as a weak reference to this object.

Definition at line 321 of file referenceCount.I.

References WeakReferenceList::add_reference(), and ReferenceCount::get_weak_list().

void ReferenceCount::weak_unref ( WeakPointerToVoid ptv) [inline, inherited]

Removes the indicated PointerToVoid as a weak reference to this object.

It must have previously been added via a call to weak_ref().

Definition at line 334 of file referenceCount.I.

References WeakReferenceList::clear_reference(), and ReferenceCount::has_weak_list().


The documentation for this class was generated from the following files:
 All Classes Functions Variables Enumerations