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

eglGraphicsPipe Class Reference

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

#include "eglGraphicsPipe.h"

Inheritance diagram for eglGraphicsPipe:
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

 eglGraphicsPipe (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 *, void *)
void operator delete[] (void *ptr)
void operator delete[] (void *, void *)
void operator delete[] (void *ptr)
void * operator new (size_t size)
void * operator new (size_t size, void *ptr)
void * operator new (size_t size)
void * operator new (size_t size, void *ptr)
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)
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 TypeHandle get_class_type ()
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

int _display_height
DisplayInformation_display_information
int _display_width
bool _is_valid
LightMutex _lock
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 []

Friends

class eglGraphicsBuffer
class eglGraphicsPixmap
class eglGraphicsWindow

Detailed Description

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

Unix) client.

Definition at line 62 of file eglGraphicsPipe.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().

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().

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 * eglGraphicsPipe::get_display ( ) const [inline]

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 eglGraphicsPipe.I.

Referenced by eglGraphicsBuffer::open_buffer(), and eglGraphicsWindow::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 eglGraphicsPipe::get_hidden_cursor ( ) [inline]

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

Definition at line 67 of file eglGraphicsPipe.I.

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

XIM eglGraphicsPipe::get_im ( ) const [inline]

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 eglGraphicsPipe.I.

Referenced by eglGraphicsWindow::open_window().

string eglGraphicsPipe::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 168 of file eglGraphicsPipe.cxx.

GraphicsPipe::PreferredWindowThread eglGraphicsPipe::get_preferred_window_thread ( ) const [virtual]

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 193 of file eglGraphicsPipe.cxx.

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

Returns the handle to the root window on the pipe's display.

Definition at line 44 of file eglGraphicsPipe.I.

Referenced by eglGraphicsPixmap::open_buffer(), and eglGraphicsWindow::open_window().

int eglGraphicsPipe::get_screen ( ) const [inline]

Returns the X screen number associated with the pipe.

Definition at line 33 of file eglGraphicsPipe.I.

Referenced by eglGraphicsPixmap::open_buffer(), eglGraphicsBuffer::open_buffer(), and eglGraphicsWindow::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().

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 eglGraphicsPipe::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 GraphicsPipe.

Definition at line 135 of file eglGraphicsPipe.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