aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/BaseDisplay.cc10
-rw-r--r--src/BaseDisplay.hh83
2 files changed, 48 insertions, 45 deletions
diff --git a/src/BaseDisplay.cc b/src/BaseDisplay.cc
index 2b5a194..d214906 100644
--- a/src/BaseDisplay.cc
+++ b/src/BaseDisplay.cc
@@ -22,7 +22,7 @@
22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23// DEALINGS IN THE SOFTWARE. 23// DEALINGS IN THE SOFTWARE.
24 24
25// $Id: BaseDisplay.cc,v 1.15 2002/07/19 21:16:53 fluxgen Exp $ 25// $Id: BaseDisplay.cc,v 1.16 2002/08/04 15:09:30 fluxgen Exp $
26 26
27// use GNU extensions 27// use GNU extensions
28#ifndef _GNU_SOURCE 28#ifndef _GNU_SOURCE
@@ -136,7 +136,7 @@ static void signalhandler(int sig) {
136 static int re_enter = 0; 136 static int re_enter = 0;
137 137
138 switch (sig) { 138 switch (sig) {
139 case SIGCHLD: 139 case SIGCHLD: // we don't want the child process to kill us
140 int status; 140 int status;
141 waitpid(-1, &status, WNOHANG | WUNTRACED); 141 waitpid(-1, &status, WNOHANG | WUNTRACED);
142 142
@@ -192,18 +192,18 @@ static void signalhandler(int sig) {
192 192
193// convenience functions 193// convenience functions
194#ifndef __EMX__ 194#ifndef __EMX__
195void bexec(const char *command, char* displaystring) { 195void bexec(const char *command, char *displaystring) {
196 if (! fork()) { 196 if (! fork()) {
197 setsid(); 197 setsid();
198 putenv(displaystring); 198 putenv(displaystring);
199 execl("/bin/sh", "/bin/sh", "-c", command, NULL); 199 execl("/bin/sh", "/bin/sh", "-c", command, 0);
200 exit(0); 200 exit(0);
201 } 201 }
202} 202}
203#endif // !__EMX__ 203#endif // !__EMX__
204 204
205 205
206BaseDisplay::BaseDisplay(char *app_name, char *dpy_name):FbAtoms(0), 206BaseDisplay::BaseDisplay(const char *app_name, const char *dpy_name):FbAtoms(0),
207m_startup(true), m_shutdown(false), 207m_startup(true), m_shutdown(false),
208m_display_name(XDisplayName(dpy_name)), m_app_name(app_name), 208m_display_name(XDisplayName(dpy_name)), m_app_name(app_name),
209m_server_grabs(0) 209m_server_grabs(0)
diff --git a/src/BaseDisplay.hh b/src/BaseDisplay.hh
index 46d8a66..8b9b186 100644
--- a/src/BaseDisplay.hh
+++ b/src/BaseDisplay.hh
@@ -22,7 +22,7 @@
22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 22// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23// DEALINGS IN THE SOFTWARE. 23// DEALINGS IN THE SOFTWARE.
24 24
25// $Id: BaseDisplay.hh,v 1.22 2002/07/19 21:14:11 fluxgen Exp $ 25// $Id: BaseDisplay.hh,v 1.23 2002/08/04 15:09:30 fluxgen Exp $
26 26
27#ifndef BASEDISPLAY_HH 27#ifndef BASEDISPLAY_HH
28#define BASEDISPLAY_HH 28#define BASEDISPLAY_HH
@@ -46,15 +46,18 @@ class ScreenInfo;
46#define PropBlackboxHintsElements (5) 46#define PropBlackboxHintsElements (5)
47#define PropBlackboxAttributesElements (8) 47#define PropBlackboxAttributesElements (8)
48 48
49void bexec(const char *command, char* displaystring); 49/// obsolete
50void bexec(const char *command, char *displaystring);
50 51
51class BaseDisplay:private NotCopyable, public FbAtoms 52class BaseDisplay:private NotCopyable, public FbAtoms
52{ 53{
53
54public: 54public:
55 BaseDisplay(char *, char * = 0); 55 BaseDisplay(const char *app_name, const char *display_name = 0);
56 virtual ~BaseDisplay(void); 56 virtual ~BaseDisplay();
57 57 /**
58 obsolete
59 @see FluxboxWindow
60 */
58 enum Attrib { 61 enum Attrib {
59 ATTRIB_SHADED = 0x01, 62 ATTRIB_SHADED = 0x01,
60 ATTRIB_MAXHORIZ = 0x02, 63 ATTRIB_MAXHORIZ = 0x02,
@@ -79,31 +82,31 @@ public:
79 82
80 inline ScreenInfo *getScreenInfo(int s) { return screenInfoList[s]; } 83 inline ScreenInfo *getScreenInfo(int s) { return screenInfoList[s]; }
81 84
82 inline bool hasShapeExtensions(void) const { return shape.extensions; } 85 inline bool hasShapeExtensions() const { return shape.extensions; }
83 inline bool doShutdown(void) const { return m_shutdown; } 86 inline bool doShutdown() const { return m_shutdown; }
84 inline bool isStartup(void) const { return m_startup; } 87 inline bool isStartup() const { return m_startup; }
85 88
86 inline const Cursor &getSessionCursor(void) const { return cursor.session; } 89 inline const Cursor &getSessionCursor() const { return cursor.session; }
87 inline const Cursor &getMoveCursor(void) const { return cursor.move; } 90 inline const Cursor &getMoveCursor() const { return cursor.move; }
88 inline const Cursor &getLowerLeftAngleCursor(void) const { return cursor.ll_angle; } 91 inline const Cursor &getLowerLeftAngleCursor() const { return cursor.ll_angle; }
89 inline const Cursor &getLowerRightAngleCursor(void) const { return cursor.lr_angle; } 92 inline const Cursor &getLowerRightAngleCursor() const { return cursor.lr_angle; }
90 93
91 inline Display *getXDisplay(void) { return m_display; } 94 inline Display *getXDisplay() { return m_display; }
92 95
93 inline const char *getXDisplayName(void) const { return const_cast<const char *>(m_display_name); } 96 inline const char *getXDisplayName() const { return m_display_name; }
94 inline const char *getApplicationName(void) const { return const_cast<const char *>(m_app_name); } 97 inline const char *getApplicationName() const { return m_app_name; }
95 98
96 inline int getNumberOfScreens(void) const { return number_of_screens; } 99 inline int getNumberOfScreens() const { return number_of_screens; }
97 inline int getShapeEventBase(void) const { return shape.event_basep; } 100 inline int getShapeEventBase() const { return shape.event_basep; }
98 101
99 inline void shutdown(void) { m_shutdown = true; } 102 inline void shutdown() { m_shutdown = true; }
100 inline void run(void) { m_startup = m_shutdown = false; } 103 inline void run() { m_startup = m_shutdown = false; }
101 104
102 bool validateWindow(Window); 105 bool validateWindow(Window);
103 106
104 void grab(void); 107 void grab();
105 void ungrab(void); 108 void ungrab();
106 void eventLoop(void); 109 void eventLoop();
107 110
108 // another pure virtual... this is used to handle signals that BaseDisplay 111 // another pure virtual... this is used to handle signals that BaseDisplay
109 // doesn't understand itself 112 // doesn't understand itself
@@ -120,6 +123,9 @@ public:
120 BaseDisplay &m_bd; 123 BaseDisplay &m_bd;
121 }; 124 };
122 125
126protected:
127 virtual void process_event(XEvent *) = 0;
128
123private: 129private:
124 struct cursor { 130 struct cursor {
125 Cursor session, move, ll_angle, lr_angle; 131 Cursor session, move, ll_angle, lr_angle;
@@ -136,37 +142,34 @@ private:
136 typedef std::vector<ScreenInfo *> ScreenInfoList; 142 typedef std::vector<ScreenInfo *> ScreenInfoList;
137 ScreenInfoList screenInfoList; 143 ScreenInfoList screenInfoList;
138 144
139 char *m_display_name, *m_app_name; 145 const char *m_display_name, *m_app_name;
140 int number_of_screens, m_server_grabs, colors_per_channel; 146 int number_of_screens, m_server_grabs, colors_per_channel;
141 147
142protected:
143 virtual void process_event(XEvent *) = 0;
144
145}; 148};
146 149
147 150
148class ScreenInfo { 151class ScreenInfo {
149public: 152public:
150 ScreenInfo(BaseDisplay *, int); 153 ScreenInfo(BaseDisplay *bdisp, int screen_num);
151 ~ScreenInfo(void); 154 ~ScreenInfo();
152 155
153 inline BaseDisplay *getBaseDisplay(void) { return basedisplay; } 156 inline BaseDisplay *getBaseDisplay() { return basedisplay; }
154 157
155 inline Visual *getVisual(void) { return visual; } 158 inline Visual *getVisual() { return visual; }
156 inline const Window &getRootWindow(void) const { return root_window; } 159 inline const Window &getRootWindow() const { return root_window; }
157 inline const Colormap &colormap(void) const { return m_colormap; } 160 inline const Colormap &colormap() const { return m_colormap; }
158 161
159 inline int getDepth(void) const { return depth; } 162 inline int getDepth() const { return depth; }
160 inline int getScreenNumber(void) const { return screen_number; } 163 inline int getScreenNumber() const { return screen_number; }
161 164
162 inline unsigned int getWidth(void) const { return width; } 165 inline unsigned int getWidth() const { return width; }
163 inline unsigned int getHeight(void) const { return height; } 166 inline unsigned int getHeight() const { return height; }
164 167
165#ifdef XINERAMA 168#ifdef XINERAMA
166 inline bool hasXinerama(void) const { return m_hasXinerama; } 169 inline bool hasXinerama() const { return m_hasXinerama; }
167 inline int getNumHeads(void) const { return xineramaNumHeads; } 170 inline int getNumHeads() const { return xineramaNumHeads; }
168 unsigned int getHead(int x, int y) const; 171 unsigned int getHead(int x, int y) const;
169 unsigned int getCurrHead(void) const; 172 unsigned int getCurrHead() const;
170 unsigned int getHeadWidth(unsigned int head) const; 173 unsigned int getHeadWidth(unsigned int head) const;
171 unsigned int getHeadHeight(unsigned int head) const; 174 unsigned int getHeadHeight(unsigned int head) const;
172 int getHeadX(unsigned int head) const; 175 int getHeadX(unsigned int head) const;