Browse Source

support opening multiple remote glx windows

David Rose 24 years ago
parent
commit
07565f943f

+ 31 - 19
panda/src/display/interactiveGraphicsPipe.cxx

@@ -25,37 +25,49 @@
 ////////////////////////////////////////////////////////////////////
 TypeHandle InteractiveGraphicsPipe::_type_handle;
 
-InteractiveGraphicsPipe::InteractiveGraphicsPipe(const PipeSpecifier& spec)
-  : GraphicsPipe(spec) {}
-
-InteractiveGraphicsPipe::InteractiveGraphicsPipe(void) {
-  display_cat.error()
-    << "InteractiveGraphicsPipe should not be created with default constructor" << endl;
+InteractiveGraphicsPipe::
+InteractiveGraphicsPipe(const PipeSpecifier& spec) :
+  GraphicsPipe(spec) 
+{
 }
 
-InteractiveGraphicsPipe::InteractiveGraphicsPipe(const InteractiveGraphicsPipe&) {
-  display_cat.error()
-    << "InteractiveGraphicsPipes should not be copied" << endl;
-}
 
-InteractiveGraphicsPipe& InteractiveGraphicsPipe::operator=(const InteractiveGraphicsPipe&) {
-  display_cat.error()
-  << "InteractiveGraphicsPipes should not be assigned" << endl;
-  return *this;
+InteractiveGraphicsPipe::
+~InteractiveGraphicsPipe() {
 }
 
-InteractiveGraphicsPipe::~InteractiveGraphicsPipe(void) {}
-
-TypeHandle InteractiveGraphicsPipe::get_class_type(void) {
+TypeHandle InteractiveGraphicsPipe::
+get_class_type(void) {
   return _type_handle;
 }
 
-void InteractiveGraphicsPipe::init_type(void) {
+void InteractiveGraphicsPipe::
+init_type(void) {
   GraphicsPipe::init_type();
   register_type(_type_handle, "InteractiveGraphicsPipe",
                 GraphicsPipe::get_class_type());
 }
 
-TypeHandle InteractiveGraphicsPipe::get_type(void) const {
+TypeHandle InteractiveGraphicsPipe::
+get_type(void) const {
   return get_class_type();
 }
+
+InteractiveGraphicsPipe::
+InteractiveGraphicsPipe(void) {
+  display_cat.error()
+    << "InteractiveGraphicsPipe should not be created with default constructor" << endl;
+}
+
+InteractiveGraphicsPipe::
+InteractiveGraphicsPipe(const InteractiveGraphicsPipe&) {
+  display_cat.error()
+    << "InteractiveGraphicsPipes should not be copied" << endl;
+}
+
+InteractiveGraphicsPipe &InteractiveGraphicsPipe::
+operator=(const InteractiveGraphicsPipe&) {
+  display_cat.error()
+  << "InteractiveGraphicsPipes should not be assigned" << endl;
+  return *this;
+}

+ 2 - 3
panda/src/display/interactiveGraphicsPipe.h

@@ -24,10 +24,9 @@
 #include "graphicsPipe.h"
 
 class EXPCL_PANDA InteractiveGraphicsPipe : public GraphicsPipe {
-public:
-
+PUBLISHED:
   InteractiveGraphicsPipe( const PipeSpecifier& );
-  virtual ~InteractiveGraphicsPipe(void) = 0;
+  virtual ~InteractiveGraphicsPipe(void);
 
 public:
 

+ 7 - 3
panda/src/display/pipeSpec.cxx

@@ -39,9 +39,13 @@ std::string PipeSpecifier::get_X_specifier(void) const {
   std::string ret;
 
   if (!_is_file) {
-    if (getenv("DISPLAY")) {
-       ret = getenv("DISPLAY");
-    } else {
+    if (_machine.empty()) {
+      if (getenv("DISPLAY")) {
+        ret = getenv("DISPLAY");
+      }
+    }
+
+    if (ret.empty()) {
       ostringstream ss;
       ss << _machine << ":" << ((_pipe_number<0)?0:_pipe_number) << ".0";
       ret = ss.str();

+ 1 - 1
panda/src/display/pipeSpec.h

@@ -24,7 +24,7 @@
 #include <string>
 
 class EXPCL_PANDA PipeSpecifier {
-public:
+PUBLISHED:
   PipeSpecifier(void);
   PipeSpecifier(const PipeSpecifier&);
   ~PipeSpecifier(void);

+ 2 - 0
panda/src/glxdisplay/Sources.pp

@@ -20,5 +20,7 @@
     glxDisplay.I glxDisplay.h \
     glxGraphicsPipe.h glxGraphicsWindow.I glxGraphicsWindow.h
 
+  #define IGATESCAN glxGraphicsPipe.h
+
 #end lib_target
 

+ 8 - 2
panda/src/glxdisplay/glxDisplay.h

@@ -19,14 +19,20 @@
 #ifndef GLXDISPLAY_H
 #define GLXDISPLAY_H
 
-#include <pandabase.h>
-#include <typedObject.h>
+#include "pandabase.h"
+#include "typedObject.h"
 
 #include <X11/Xlib.h>
 
 class GraphicsPipe;
 class glxGraphicsWindow;
 
+#ifdef CPPPARSER
+// A simple hack so interrogate can parse this file.
+typedef int Display;
+typedef int Window;
+#endif
+
 ////////////////////////////////////////////////////////////////////
 //       Class : glxDisplay
 // Description : This class is a base class of glxGraphicsPipe, and

+ 2 - 0
panda/src/glxdisplay/glxGraphicsPipe.cxx

@@ -15,7 +15,9 @@
 // [email protected] .
 //
 ////////////////////////////////////////////////////////////////////
+
 #include "glxGraphicsPipe.h"
+#include "glxGraphicsWindow.h"
 #include "config_glxdisplay.h"
 
 #include <GL/glx.h>

+ 22 - 30
panda/src/glxdisplay/glxGraphicsPipe.h

@@ -15,45 +15,37 @@
 // [email protected] .
 //
 ////////////////////////////////////////////////////////////////////
+
 #ifndef GLXGRAPHICSPIPE_H
 #define GLXGRAPHICSPIPE_H
-//
-////////////////////////////////////////////////////////////////////
-// Includes
-////////////////////////////////////////////////////////////////////
-#include <pandabase.h>
 
-#include "glxGraphicsWindow.h"
+#include "pandabase.h"
 #include "glxDisplay.h"
-
-#include <interactiveGraphicsPipe.h>
+#include "interactiveGraphicsPipe.h"
 
 ////////////////////////////////////////////////////////////////////
 //       Class : glxGraphicsPipe
 // Description :
 ////////////////////////////////////////////////////////////////////
-class glxGraphicsPipe : public InteractiveGraphicsPipe, public glxDisplay
-{
-    public:
-
-        glxGraphicsPipe( const PipeSpecifier& );
-
-        virtual TypeHandle get_window_type() const;
-
-        virtual glxDisplay *get_glx_display();
-
-    public:
-
-        static GraphicsPipe* make_glxGraphicsPipe(const FactoryParams &params);
-
-        static TypeHandle get_class_type(void);
-        static void init_type(void);
-        virtual TypeHandle get_type(void) const;
-        virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
-
-    private:
-
-        static TypeHandle _type_handle;
+class glxGraphicsPipe : public InteractiveGraphicsPipe, public glxDisplay {
+PUBLISHED:
+  glxGraphicsPipe( const PipeSpecifier& );
+
+  virtual TypeHandle get_window_type() const;
+
+public:  
+  virtual glxDisplay *get_glx_display();
+
+public:
+  static GraphicsPipe *make_glxGraphicsPipe(const FactoryParams &params);
+  
+  static TypeHandle get_class_type(void);
+  static void init_type(void);
+  virtual TypeHandle get_type(void) const;
+  virtual TypeHandle force_init_type() {init_type(); return get_class_type();}
+  
+private:
+  static TypeHandle _type_handle;
 };
 
 #endif

+ 2 - 0
panda/src/wcrdisplay/Sources.pp

@@ -22,6 +22,8 @@
   #define INCLUDED_SOURCES \
     config_wcrdisplay.cxx wcrGraphicsPipe.cxx
 
+  #define IGATESCAN wcrGraphicsPipe.h
+
 #end lib_target
 
 #begin test_bin_target

+ 1 - 1
panda/src/wcrdisplay/wcrGraphicsPipe.cxx

@@ -29,7 +29,7 @@ wcrGraphicsPipe::wcrGraphicsPipe(const PipeSpecifier& spec)
 
 ////////////////////////////////////////////////////////////////////
 //     Function: wcrGraphicsPipe::get_window_type
-//       Access: Public, Virtual
+//       Access: Published, Virtual
 //  Description: Returns the TypeHandle of the kind of window
 //               preferred by this kind of pipe.
 ////////////////////////////////////////////////////////////////////

+ 1 - 1
panda/src/wcrdisplay/wcrGraphicsPipe.h

@@ -35,7 +35,7 @@
 // Description :
 ////////////////////////////////////////////////////////////////////
 class EXPCL_PANDACR wcrGraphicsPipe : public InteractiveGraphicsPipe {
-public:
+PUBLISHED:
   wcrGraphicsPipe(const PipeSpecifier&);
 
   virtual TypeHandle get_window_type() const;