annotate Gui/wm/ws.c @ 9593:e9a2af584986

Add the new -vf option wich is the same as vop in reverse order. Syntax is we decided, so you can give the nomes or not with both vop and vf. vf take precedence over vop.
author albeu
date Sat, 15 Mar 2003 18:01:02 +0000
parents c7f5df43b937
children 2f9e8ff57e9e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
2 // --------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
3 // AutoSpace Window System for Linux/Win32 v0.85
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
4 // Writed by pontscho/fresh!mindworkz
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
5 // --------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
6
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
7 #include <X11/Xlib.h>
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
8 #include <X11/Xproto.h>
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
9 #include <X11/Xutil.h>
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
10 #include <X11/keysym.h>
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
11 #include <X11/Xatom.h>
2081
efcab819ac24 gcc3 warning fixed
arpi
parents: 2045
diff changeset
12
efcab819ac24 gcc3 warning fixed
arpi
parents: 2045
diff changeset
13 #include <stdio.h>
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
14 #include <stdlib.h>
2081
efcab819ac24 gcc3 warning fixed
arpi
parents: 2045
diff changeset
15 #include <string.h>
efcab819ac24 gcc3 warning fixed
arpi
parents: 2045
diff changeset
16 #include <unistd.h>
efcab819ac24 gcc3 warning fixed
arpi
parents: 2045
diff changeset
17 #include <errno.h>
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
18
2733
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
19 #include <inttypes.h>
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
20
4818
3473ca9ef158 new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents: 4566
diff changeset
21 #include "../../config.h"
8864
b8c271750450 - sync with x11_common
pontscho
parents: 8478
diff changeset
22 #include "../../libvo/x11_common.h"
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
23 #include "ws.h"
6967
0fa27966ac47 add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents: 6794
diff changeset
24 #include "wsxdnd.h"
2733
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
25 #include "../../postproc/rgb2rgb.h"
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
26 #include "../../mp_msg.h"
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
27 #include "../../mplayer.h"
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
28
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
29 #include <X11/extensions/XShm.h>
2476
a6c5a537f30a a few warning fixes (missing #include's)
pl
parents: 2081
diff changeset
30 #ifdef HAVE_XSHAPE
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
31 #include <X11/extensions/shape.h>
2476
a6c5a537f30a a few warning fixes (missing #include's)
pl
parents: 2081
diff changeset
32 #endif
a6c5a537f30a a few warning fixes (missing #include's)
pl
parents: 2081
diff changeset
33
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
34 #include <sys/ipc.h>
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
35 #include <sys/shm.h>
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
36
8864
b8c271750450 - sync with x11_common
pontscho
parents: 8478
diff changeset
37 #undef ENABLE_DPMS
8478
7988573021e8 disable DPMS handling
pontscho
parents: 8150
diff changeset
38
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
39 typedef struct
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
40 {
3054
9507f90d8254 add half dvd support for gui
pontscho
parents: 2981
diff changeset
41 unsigned long flags;
9507f90d8254 add half dvd support for gui
pontscho
parents: 2981
diff changeset
42 unsigned long functions;
9507f90d8254 add half dvd support for gui
pontscho
parents: 2981
diff changeset
43 unsigned long decorations;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
44 long input_mode;
3054
9507f90d8254 add half dvd support for gui
pontscho
parents: 2981
diff changeset
45 unsigned long status;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
46 } MotifWmHints;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
47
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
48 Atom wsMotifHints;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
49
4465
b013d01d9968 small bugfixes, and kill other warning
pontscho
parents: 4411
diff changeset
50 int wsMaxX = 0; // Screen width.
b013d01d9968 small bugfixes, and kill other warning
pontscho
parents: 4411
diff changeset
51 int wsMaxY = 0; // Screen height.
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
52
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
53 Display * wsDisplay;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
54 int wsScreen;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
55 Window wsRootWin;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
56 XEvent wsEvent;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
57 int wsWindowDepth;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
58 GC wsHGC;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
59 MotifWmHints wsMotifWmHints;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
60 Atom wsTextProperlyAtom = None;
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
61 int wsLayer = 0;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
62
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
63 int wsDepthOnScreen = 0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
64 int wsRedMask = 0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
65 int wsGreenMask = 0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
66 int wsBlueMask = 0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
67 int wsOutMask = 0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
68
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
69 int wsTrue = True;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
70
8949
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
71 #define wsWLCount 5
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
72 wsTWindow * wsWindowList[wsWLCount] = { NULL,NULL,NULL,NULL,NULL };
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
73
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
74 unsigned long wsKeyTable[512];
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
75
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
76 int wsUseXShm = 1;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
77 int wsUseXShape = 1;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
78
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
79 int XShmGetEventBase( Display* );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
80 inline int wsSearch( Window win );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
81
7206
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
82 // ---
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
83
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
84 #define PACK_RGB16(r,g,b,pixel) pixel=(b>>3);\
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
85 pixel<<=6;\
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
86 pixel|=(g>>2);\
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
87 pixel<<=5;\
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
88 pixel|=(r>>3)
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
89
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
90 #define PACK_RGB15(r,g,b,pixel) pixel=(b>>3);\
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
91 pixel<<=5;\
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
92 pixel|=(g>>3);\
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
93 pixel<<=5;\
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
94 pixel|=(r>>3)
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
95
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
96 typedef void(*wsTConvFunc)( const unsigned char * in_pixels, unsigned char * out_pixels, unsigned num_pixels );
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
97 wsTConvFunc wsConvFunc = NULL;
7706
90044efe01ee - better dxr3 support
pontscho
parents: 7572
diff changeset
98
90044efe01ee - better dxr3 support
pontscho
parents: 7572
diff changeset
99 void rgb32torgb32( const unsigned char * src, unsigned char * dst,unsigned int src_size )
7206
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
100 { memcpy( dst,src,src_size ); }
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
101
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
102 // ---
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
103
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
104 #define MWM_HINTS_FUNCTIONS (1L << 0)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
105 #define MWM_HINTS_DECORATIONS (1L << 1)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
106 #define MWM_HINTS_INPUT_MODE (1L << 2)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
107 #define MWM_HINTS_STATUS (1L << 3)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
108
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
109 #define MWM_FUNC_ALL (1L << 0)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
110 #define MWM_FUNC_RESIZE (1L << 1)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
111 #define MWM_FUNC_MOVE (1L << 2)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
112 #define MWM_FUNC_MINIMIZE (1L << 3)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
113 #define MWM_FUNC_MAXIMIZE (1L << 4)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
114 #define MWM_FUNC_CLOSE (1L << 5)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
115
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
116 #define MWM_DECOR_ALL (1L << 0)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
117 #define MWM_DECOR_BORDER (1L << 1)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
118 #define MWM_DECOR_RESIZEH (1L << 2)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
119 #define MWM_DECOR_TITLE (1L << 3)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
120 #define MWM_DECOR_MENU (1L << 4)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
121 #define MWM_DECOR_MINIMIZE (1L << 5)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
122 #define MWM_DECOR_MAXIMIZE (1L << 6)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
123
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
124 #define MWM_INPUT_MODELESS 0
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
125 #define MWM_INPUT_PRIMARY_APPLICATION_MODAL 1
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
126 #define MWM_INPUT_SYSTEM_MODAL 2
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
127 #define MWM_INPUT_FULL_APPLICATION_MODAL 3
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
128 #define MWM_INPUT_APPLICATION_MODAL MWM_INPUT_PRIMARY_APPLICATION_MODAL
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
129
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
130 #define MWM_TEAROFF_WINDOW (1L<<0)
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
131
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
132 void wsWindowDecoration( wsTWindow * win,long d )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
133 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
134 wsMotifHints=XInternAtom( wsDisplay,"_MOTIF_WM_HINTS",0 );
3054
9507f90d8254 add half dvd support for gui
pontscho
parents: 2981
diff changeset
135 if ( wsMotifHints == None ) return;
9507f90d8254 add half dvd support for gui
pontscho
parents: 2981
diff changeset
136
9507f90d8254 add half dvd support for gui
pontscho
parents: 2981
diff changeset
137 memset( &wsMotifWmHints,0,sizeof( MotifWmHints ) );
5031
8e43137d59d8 rewrite MWM hint handling
pontscho
parents: 4818
diff changeset
138 wsMotifWmHints.flags=MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
8e43137d59d8 rewrite MWM hint handling
pontscho
parents: 4818
diff changeset
139 if ( d )
8e43137d59d8 rewrite MWM hint handling
pontscho
parents: 4818
diff changeset
140 {
8e43137d59d8 rewrite MWM hint handling
pontscho
parents: 4818
diff changeset
141 wsMotifWmHints.functions=MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE | MWM_FUNC_RESIZE;
8e43137d59d8 rewrite MWM hint handling
pontscho
parents: 4818
diff changeset
142 wsMotifWmHints.decorations=MWM_DECOR_ALL;
8e43137d59d8 rewrite MWM hint handling
pontscho
parents: 4818
diff changeset
143 }
3054
9507f90d8254 add half dvd support for gui
pontscho
parents: 2981
diff changeset
144 XChangeProperty( wsDisplay,win->WindowID,wsMotifHints,wsMotifHints,32,
9507f90d8254 add half dvd support for gui
pontscho
parents: 2981
diff changeset
145 PropModeReplace,(unsigned char *)&wsMotifWmHints,5 );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
146 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
147
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
148 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
149 // Init X Window System.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
150 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
151
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
152 int wsIOErrorHandler( Display * dpy )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
153 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
154 fprintf( stderr,"[ws] io error in display.\n" );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
155 exit( 0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
156 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
157
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
158 int wsErrorHandler( Display * dpy,XErrorEvent * Event )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
159 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
160 char type[128];
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
161 XGetErrorText( wsDisplay,Event->error_code,type,128 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
162 fprintf(stderr,"[ws] Error in display.\n");
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
163 fprintf(stderr,"[ws] Error code: %d ( %s )\n",Event->error_code,type );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
164 fprintf(stderr,"[ws] Request code: %d\n",Event->request_code );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
165 fprintf(stderr,"[ws] Minor code: %d\n",Event->minor_code );
7801
48b7d7fd7075 - wsErrorHandler was crashing on solaris with a null pointer access in printf;
jkeil
parents: 7751
diff changeset
166 fprintf(stderr,"[ws] Modules: %s\n",current_module?current_module:"(NULL)" );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
167 exit( 0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
168 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
169
1723
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1709
diff changeset
170 void wsXInit( void* mDisplay )
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
171 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
172 int eventbase;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
173 int errorbase;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
174
1723
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1709
diff changeset
175 if(mDisplay){
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1709
diff changeset
176 wsDisplay=mDisplay;
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1709
diff changeset
177 } else {
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1709
diff changeset
178 char * DisplayName = ":0.0";
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
179 if ( getenv( "DISPLAY" ) ) DisplayName=getenv( "DISPLAY" );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
180 wsDisplay=XOpenDisplay( DisplayName );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
181 if ( !wsDisplay )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
182 {
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
183 mp_msg( MSGT_GPLAYER,MSGL_FATAL,"[ws] couldn't open the display !\n" );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
184 exit( 0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
185 }
1723
5e4214a7540e GUI stuff. now seeking works, and xmga renders to video window
arpi
parents: 1709
diff changeset
186 }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
187
6967
0fa27966ac47 add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents: 6794
diff changeset
188 /* enable DND atoms */
0fa27966ac47 add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents: 6794
diff changeset
189 wsXDNDInitialize();
0fa27966ac47 add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents: 6794
diff changeset
190
1838
4984bd55518e add lgb's localhost detect
pontscho
parents: 1823
diff changeset
191 { /* on remote display XShm will be disabled - LGB */
4984bd55518e add lgb's localhost detect
pontscho
parents: 1823
diff changeset
192 char *dispname=DisplayString(wsDisplay);
4984bd55518e add lgb's localhost detect
pontscho
parents: 1823
diff changeset
193 int localdisp=1;
4984bd55518e add lgb's localhost detect
pontscho
parents: 1823
diff changeset
194 if (dispname&&*dispname!=':') {
4984bd55518e add lgb's localhost detect
pontscho
parents: 1823
diff changeset
195 localdisp=0;
4984bd55518e add lgb's localhost detect
pontscho
parents: 1823
diff changeset
196 wsUseXShm=0;
4984bd55518e add lgb's localhost detect
pontscho
parents: 1823
diff changeset
197 }
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
198 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[ws] Display name: %s => %s display.\n",dispname,localdisp?"local":"REMOTE");
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
199 if (!localdisp) mp_msg( MSGT_GPLAYER,MSGL_STATUS,"[ws] Remote display, disabling XMITSHM\n");
1838
4984bd55518e add lgb's localhost detect
pontscho
parents: 1823
diff changeset
200 }
8864
b8c271750450 - sync with x11_common
pontscho
parents: 8478
diff changeset
201
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
202 if ( !XShmQueryExtension( wsDisplay ) )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
203 {
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
204 mp_msg( MSGT_GPLAYER,MSGL_ERR,"[ws] sorry, your system is not supported X shared memory extension.\n" );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
205 wsUseXShm=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
206 }
1699
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
207 #ifdef HAVE_XSHAPE
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
208 if ( !XShapeQueryExtension( wsDisplay,&eventbase,&errorbase ) )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
209 {
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
210 mp_msg( MSGT_GPLAYER,MSGL_ERR,"[ws] sorry, your system is not supported XShape extension.\n" );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
211 wsUseXShape=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
212 }
1699
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
213 #else
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
214 wsUseXShape=0;
1699
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
215 #endif
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
216
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
217 XSynchronize( wsDisplay,True );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
218
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
219 wsScreen=DefaultScreen( wsDisplay );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
220 wsRootWin=RootWindow( wsDisplay,wsScreen );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
221 wsMaxX=DisplayWidth( wsDisplay,wsScreen );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
222 wsMaxY=DisplayHeight( wsDisplay,wsScreen );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
223
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
224 wsGetDepthOnScreen();
1699
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
225 #ifdef DEBUG
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
226 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
227 int minor,major,shp;
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
228 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[ws] Screen depth: %d\n",wsDepthOnScreen );
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
229 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[ws] size: %dx%d\n",wsMaxX,wsMaxY );
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
230 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[ws] red mask: 0x%x\n",wsRedMask );
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
231 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[ws] green mask: 0x%x\n",wsGreenMask );
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
232 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[ws] blue mask: 0x%x\n",wsBlueMask );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
233 if ( wsUseXShm )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
234 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
235 XShmQueryVersion( wsDisplay,&major,&minor,&shp );
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
236 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[ws] XShm version is %d.%d\n",major,minor );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
237 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
238 #ifdef HAVE_XSHAPE
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
239 if ( wsUseXShape )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
240 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
241 XShapeQueryVersion( wsDisplay,&major,&minor );
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
242 mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[ws] XShape version is %d.%d\n",major,minor );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
243 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
244 #endif
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
245 }
1699
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
246 #endif
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
247 wsOutMask=wsGetOutMask();
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
248 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[ws] Initialized converter: " );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
249 switch ( wsOutMask )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
250 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
251 case wsRGB32:
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
252 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"rgb32 to rgb32\n" );
7206
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
253 wsConvFunc=rgb32torgb32;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
254 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
255 case wsBGR32:
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
256 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"rgb32 to bgr32\n" );
2782
b52d3e6ff4ab app michale's rgb32tobgr32
pontscho
parents: 2733
diff changeset
257 wsConvFunc=rgb32tobgr32;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
258 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
259 case wsRGB24:
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
260 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"rgb32 to rgb24\n" );
2733
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
261 wsConvFunc=rgb32to24;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
262 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
263 case wsBGR24:
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
264 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"rgb32 to bgr24\n" );
7206
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
265 wsConvFunc=rgb32tobgr24;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
266 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
267 case wsRGB16:
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
268 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"rgb32 to rgb16\n" );
2733
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
269 wsConvFunc=rgb32to16;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
270 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
271 case wsBGR16:
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
272 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"rgb32 to bgr16\n" );
7206
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
273 wsConvFunc=rgb32tobgr16;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
274 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
275 case wsRGB15:
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
276 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"rgb32 to rgb15\n" );
2733
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
277 wsConvFunc=rgb32to15;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
278 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
279 case wsBGR15:
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
280 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"rgb32 to bgr15\n" );
7206
09722d199d83 remove obsoleted files
pontscho
parents: 6967
diff changeset
281 wsConvFunc=rgb32tobgr15;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
282 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
283 }
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
284 XSetErrorHandler( wsErrorHandler );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
285 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
286
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
287 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
288 // Create window.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
289 // X,Y : window position
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
290 // wX,wY : size of window
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
291 // bW : border width
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
292 // cV : visible mouse cursor on window
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
293 // D : visible frame, title, etc.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
294 // sR : screen ratio
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
295 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
296
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
297 XClassHint wsClassHint;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
298 XTextProperty wsTextProperty;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
299 Window LeaderWindow;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
300
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
301 void wsCreateWindow( wsTWindow * win,int X,int Y,int wX,int hY,int bW,int cV,unsigned char D,char * label )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
302 {
7802
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
303 int depth;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
304
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
305 win->Property=D;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
306 if ( D & wsShowFrame ) win->Decorations=1;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
307 wsHGC=DefaultGC( wsDisplay,wsScreen );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
308 // The window position and size.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
309 switch ( X )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
310 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
311 case -1: win->X=( wsMaxX / 2 ) - ( wX / 2 ); break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
312 case -2: win->X=wsMaxX - wX - 1; break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
313 default: win->X=X; break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
314 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
315 switch ( Y )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
316 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
317 case -1: win->Y=( wsMaxY / 2 ) - ( hY / 2 ); break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
318 case -2: win->Y=wsMaxY - hY - 1; break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
319 default: win->Y=Y; break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
320 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
321 win->Width=wX;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
322 win->Height=hY;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
323 win->OldX=win->X;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
324 win->OldY=win->Y;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
325 win->OldWidth=win->Width;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
326 win->OldHeight=win->Height;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
327
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
328 // Border size for window.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
329 win->BorderWidth=bW;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
330 // Hide Mouse Cursor
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
331 win->wsCursor=None;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
332 win->wsMouseEventType=cV;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
333 win->wsCursorData[0]=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
334 win->wsCursorPixmap=XCreateBitmapFromData( wsDisplay,wsRootWin,win->wsCursorData,1,1 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
335 if ( !(cV & wsShowMouseCursor) ) win->wsCursor=XCreatePixmapCursor( wsDisplay,win->wsCursorPixmap,win->wsCursorPixmap,&win->wsColor,&win->wsColor,0,0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
336
7802
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
337 depth = vo_find_depth_from_visuals( wsDisplay,wsScreen,NULL );
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
338 if ( depth < 15 )
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
339 {
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
340 mp_msg( MSGT_GPLAYER,MSGL_FATAL,"[ws] sorry, this color depth is not enough.\n" );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
341 exit( 0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
342 }
7802
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
343 XMatchVisualInfo( wsDisplay,wsScreen,depth,TrueColor,&win->VisualInfo );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
344
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
345 // ---
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
346 win->AtomLeaderClient=XInternAtom( wsDisplay,"WM_CLIENT_LEADER",False );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
347 win->AtomDeleteWindow=XInternAtom( wsDisplay,"WM_DELETE_WINDOW",False );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
348 win->AtomTakeFocus=XInternAtom( wsDisplay,"WM_TAKE_FOCUS",False );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
349 win->AtomRolle=XInternAtom( wsDisplay,"WM_WINDOW_ROLE",False );
2851
b64fa5d25142 add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents: 2782
diff changeset
350 win->AtomWMSizeHint=XInternAtom( wsDisplay,"WM_SIZE_HINT",False );
b64fa5d25142 add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents: 2782
diff changeset
351 win->AtomWMNormalHint=XInternAtom( wsDisplay,"WM_NORMAL_HINT",False );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
352 win->AtomProtocols=XInternAtom( wsDisplay,"WM_PROTOCOLS",False );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
353 win->AtomsProtocols[0]=win->AtomDeleteWindow;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
354 win->AtomsProtocols[1]=win->AtomTakeFocus;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
355 win->AtomsProtocols[2]=win->AtomRolle;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
356 // ---
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
357
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
358 win->WindowAttrib.background_pixel=BlackPixel( wsDisplay,wsScreen );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
359 win->WindowAttrib.border_pixel=WhitePixel( wsDisplay,wsScreen );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
360 win->WindowAttrib.colormap=XCreateColormap( wsDisplay,wsRootWin,win->VisualInfo.visual,AllocNone );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
361 win->WindowAttrib.event_mask=StructureNotifyMask | FocusChangeMask |
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
362 ExposureMask | PropertyChangeMask |
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
363 EnterWindowMask | LeaveWindowMask |
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
364 VisibilityChangeMask |
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
365 KeyPressMask | KeyReleaseMask;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
366 if ( ( cV & wsHandleMouseButton ) ) win->WindowAttrib.event_mask|=ButtonPressMask | ButtonReleaseMask;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
367 if ( ( cV & wsHandleMouseMove ) ) win->WindowAttrib.event_mask|=PointerMotionMask;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
368 win->WindowAttrib.cursor=win->wsCursor;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
369 win->WindowAttrib.override_redirect=False;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
370 if ( D & wsOverredirect ) win->WindowAttrib.override_redirect=True;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
371
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
372 win->WindowMask=CWBackPixel | CWBorderPixel |
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
373 CWColormap | CWEventMask | CWCursor |
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
374 CWOverrideRedirect;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
375
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
376 win->WindowID=XCreateWindow( wsDisplay,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
377 (win->Parent != 0?win->Parent:wsRootWin),
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
378 win->X,win->Y,win->Width,win->Height,win->BorderWidth,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
379 win->VisualInfo.depth,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
380 InputOutput,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
381 win->VisualInfo.visual,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
382 win->WindowMask,&win->WindowAttrib );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
383
4411
a97f908988ed small changes
pontscho
parents: 3055
diff changeset
384 wsClassHint.res_name="MPlayer";
a97f908988ed small changes
pontscho
parents: 3055
diff changeset
385
2029
41ed89701ece fix fucking icewm fullscreen bug.
pontscho
parents: 1860
diff changeset
386 wsClassHint.res_class="MPlayer";
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
387 XSetClassHint( wsDisplay,win->WindowID,&wsClassHint );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
388
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
389 win->SizeHint.flags=PPosition | PSize | PResizeInc | PWinGravity;// | PBaseSize;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
390 win->SizeHint.x=win->X;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
391 win->SizeHint.y=win->Y;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
392 win->SizeHint.width=win->Width;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
393 win->SizeHint.height=win->Height;
5986
d34622ebaf45 window resize bug fixed
pontscho
parents: 5919
diff changeset
394
1860
c65abbc91c5c fix mwm bug's. faszom (C), and remove mixer.*
pontscho
parents: 1858
diff changeset
395 if ( D & wsMinSize )
c65abbc91c5c fix mwm bug's. faszom (C), and remove mixer.*
pontscho
parents: 1858
diff changeset
396 {
c65abbc91c5c fix mwm bug's. faszom (C), and remove mixer.*
pontscho
parents: 1858
diff changeset
397 win->SizeHint.flags|=PMinSize;
c65abbc91c5c fix mwm bug's. faszom (C), and remove mixer.*
pontscho
parents: 1858
diff changeset
398 win->SizeHint.min_width=win->Width;
c65abbc91c5c fix mwm bug's. faszom (C), and remove mixer.*
pontscho
parents: 1858
diff changeset
399 win->SizeHint.min_height=win->Height;
c65abbc91c5c fix mwm bug's. faszom (C), and remove mixer.*
pontscho
parents: 1858
diff changeset
400 }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
401 if ( D & wsMaxSize )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
402 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
403 win->SizeHint.flags|=PMaxSize;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
404 win->SizeHint.max_width=win->Width;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
405 win->SizeHint.max_height=win->Height;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
406 }
5986
d34622ebaf45 window resize bug fixed
pontscho
parents: 5919
diff changeset
407
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
408 win->SizeHint.height_inc=1;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
409 win->SizeHint.width_inc=1;
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
410 win->SizeHint.base_width=win->Width;
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
411 win->SizeHint.base_height=win->Height;
2851
b64fa5d25142 add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents: 2782
diff changeset
412 win->SizeHint.win_gravity=StaticGravity;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
413 XSetWMNormalHints( wsDisplay,win->WindowID,&win->SizeHint );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
414
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
415 win->WMHints.flags=InputHint | StateHint;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
416 win->WMHints.input=True;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
417 win->WMHints.initial_state=NormalState;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
418 XSetWMHints( wsDisplay,win->WindowID,&win->WMHints );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
419
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
420 wsWindowDecoration( win,win->Decorations );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
421 XStoreName( wsDisplay,win->WindowID,label );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
422 XmbSetWMProperties( wsDisplay,win->WindowID,label,label,NULL,0,NULL,NULL,NULL );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
423
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
424 XSetWMProtocols( wsDisplay,win->WindowID,win->AtomsProtocols,3 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
425 XChangeProperty( wsDisplay,win->WindowID,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
426 win->AtomLeaderClient,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
427 XA_WINDOW,32,PropModeReplace,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
428 (unsigned char *)&LeaderWindow,1 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
429
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
430 wsTextProperty.value=label;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
431 wsTextProperty.encoding=XA_STRING;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
432 wsTextProperty.format=8;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
433 wsTextProperty.nitems=strlen( label );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
434 XSetWMIconName( wsDisplay,win->WindowID,&wsTextProperty );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
435
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
436 win->wGC=XCreateGC( wsDisplay,win->WindowID,
1814
9c674dc76ff3 add wsSetForegroundRGB
pontscho
parents: 1810
diff changeset
437 GCForeground | GCBackground,
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
438 &win->wGCV );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
439
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
440 win->Visible=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
441 win->Focused=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
442 win->Mapped=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
443 win->Rolled=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
444 if ( D & wsShowWindow ) XMapWindow( wsDisplay,win->WindowID );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
445
1858
88a88d0a3f94 fix skin changing, xv fullscreen redraw bug, etc.
pontscho
parents: 1853
diff changeset
446 wsCreateImage( win,win->Width,win->Height );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
447 // --- End of creating --------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
448
8949
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
449 {
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
450 int i;
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
451 for ( i=0;i < wsWLCount;i++ )
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
452 if ( wsWindowList[i] == NULL ) break;
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
453 if ( i == wsWLCount )
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
454 { printf( "!!! tul sok nyitott ablak van.\n" ); exit( 1 ); }
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
455 wsWindowList[i]=win;
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
456 }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
457
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
458 XFlush( wsDisplay );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
459 XSync( wsDisplay,False );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
460
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
461 win->ReDraw=NULL;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
462 win->ReSize=NULL;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
463 win->Idle=NULL;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
464 win->MouseHandler=NULL;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
465 win->KeyHandler=NULL;
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
466 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[ws] window is created. ( %s ).\n",label );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
467 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
468
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
469 void wsDestroyWindow( wsTWindow * win )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
470 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
471 int l;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
472 l=wsSearch( win->WindowID );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
473 wsWindowList[l]=NULL;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
474 if ( win->wsCursor != None )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
475 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
476 XFreeCursor( wsDisplay,win->wsCursor );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
477 win->wsCursor=None;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
478 }
8949
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
479 XFreeGC( wsDisplay,win->wGC );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
480 XUnmapWindow( wsDisplay,win->WindowID );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
481 wsDestroyImage( win );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
482 XDestroyWindow( wsDisplay,win->WindowID );
8949
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
483 #if 0
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
484 win->ReDraw=NULL;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
485 win->ReSize=NULL;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
486 win->Idle=NULL;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
487 win->MouseHandler=NULL;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
488 win->KeyHandler=NULL;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
489 win->Visible=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
490 win->Focused=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
491 win->Mapped=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
492 win->Rolled=0;
8949
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
493 #endif
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
494 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
495
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
496 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
497 // Handle events.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
498 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
499
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
500 inline int wsSearch( Window win )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
501 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
502 int i;
8949
d07ab8e088a9 correct skin changing
pontscho
parents: 8916
diff changeset
503 for ( i=0;i<wsWLCount;i++ ) if ( wsWindowList[i] && wsWindowList[i]->WindowID == win ) return i;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
504 return -1;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
505 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
506
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
507 Bool wsEvents( Display * display,XEvent * Event,XPointer arg )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
508 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
509 unsigned long i = 0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
510 int l;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
511 int x,y;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
512 Window child_window = 0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
513
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
514 l=wsSearch( Event->xany.window );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
515 if ( l == -1 ) return !wsTrue;
1782
dce42eebfda4 win->state fix
pontscho
parents: 1779
diff changeset
516 wsWindowList[l]->State=0;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
517 switch( Event->type )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
518 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
519 case ClientMessage:
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
520 if ( Event->xclient.message_type == wsWindowList[l]->AtomProtocols )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
521 {
7751
27c9c440536f - dvd aspect changing bug - fixed
pontscho
parents: 7706
diff changeset
522 if ( (Atom)Event->xclient.data.l[0] == wsWindowList[l]->AtomDeleteWindow )
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
523 { i=wsWindowClosed; goto expose; }
7751
27c9c440536f - dvd aspect changing bug - fixed
pontscho
parents: 7706
diff changeset
524 if ( (Atom)Event->xclient.data.l[0] == wsWindowList[l]->AtomTakeFocus )
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
525 { i=wsWindowFocusIn; wsWindowList[l]->Focused=wsFocused; goto expose; }
7751
27c9c440536f - dvd aspect changing bug - fixed
pontscho
parents: 7706
diff changeset
526 if ( (Atom)Event->xclient.data.l[0] == wsWindowList[l]->AtomRolle )
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
527 { mp_msg( MSGT_GPLAYER,MSGL_STATUS,"[ws] rolled.\n" ); }
6967
0fa27966ac47 add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents: 6794
diff changeset
528 } else {
0fa27966ac47 add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents: 6794
diff changeset
529 /* try to process DND events */
0fa27966ac47 add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents: 6794
diff changeset
530 wsXDNDProcessClientMessage(wsWindowList[l],&Event->xclient);
0fa27966ac47 add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents: 6794
diff changeset
531 }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
532 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
533
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
534 case MapNotify: i=wsWindowMapped; wsWindowList[l]->Mapped=wsMapped; goto expose;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
535 case UnmapNotify: i=wsWindowUnmapped; wsWindowList[l]->Mapped=wsNone; goto expose;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
536 case FocusIn:
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
537 if ( wsWindowList[l]->Focused == wsFocused ) break;
2851
b64fa5d25142 add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents: 2782
diff changeset
538 i=wsWindowFocusIn;
b64fa5d25142 add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents: 2782
diff changeset
539 wsWindowList[l]->Focused=wsFocused;
b64fa5d25142 add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents: 2782
diff changeset
540 goto expose;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
541 case FocusOut:
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
542 if ( wsWindowList[l]->Focused == wsNone ) break;
2851
b64fa5d25142 add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents: 2782
diff changeset
543 i=wsWindowFocusOut;
b64fa5d25142 add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents: 2782
diff changeset
544 wsWindowList[l]->Focused=wsNone;
b64fa5d25142 add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents: 2782
diff changeset
545 goto expose;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
546 case VisibilityNotify:
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
547 switch( Event->xvisibility.state )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
548 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
549 case VisibilityUnobscured: i=wsWindowVisible; wsWindowList[l]->Visible=wsVisible; goto expose;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
550 case VisibilityFullyObscured: i=wsWindowNotVisible; wsWindowList[l]->Visible=wsNotVisible; goto expose;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
551 case VisibilityPartiallyObscured: i=wsWindowPartialVisible; wsWindowList[l]->Visible=wsPVisible; goto expose;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
552 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
553 expose:
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
554 wsWindowList[l]->State=i;
8058
9246adcf95f0 cosmetic
pontscho
parents: 7892
diff changeset
555 if ( wsWindowList[l]->ReDraw ) wsWindowList[l]->ReDraw();
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
556 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
557
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
558 case Expose:
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
559 wsWindowList[l]->State=wsWindowExpose;
8058
9246adcf95f0 cosmetic
pontscho
parents: 7892
diff changeset
560 if ( ( wsWindowList[l]->ReDraw )&&( !Event->xexpose.count ) ) wsWindowList[l]->ReDraw();
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
561 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
562
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
563 case ConfigureNotify:
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
564 XTranslateCoordinates( wsDisplay,wsWindowList[l]->WindowID,wsRootWin,0,0,&x,&y,&child_window );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
565 if ( ( wsWindowList[l]->X != x )||( wsWindowList[l]->Y != y )||( wsWindowList[l]->Width != Event->xconfigure.width )||( wsWindowList[l]->Height != Event->xconfigure.height ) )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
566 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
567 wsWindowList[l]->X=x; wsWindowList[l]->Y=y;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
568 wsWindowList[l]->Width=Event->xconfigure.width; wsWindowList[l]->Height=Event->xconfigure.height;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
569 if ( wsWindowList[l]->ReSize ) wsWindowList[l]->ReSize( wsWindowList[l]->X,wsWindowList[l]->Y,wsWindowList[l]->Width,wsWindowList[l]->Height );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
570 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
571
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
572 wsWindowList[l]->Rolled=wsNone;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
573 if ( Event->xconfigure.y < 0 )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
574 { i=wsWindowRolled; wsWindowList[l]->Rolled=wsRolled; goto expose; }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
575
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
576 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
577
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
578 case KeyPress: i=wsKeyPressed; goto keypressed;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
579 case KeyRelease: i=wsKeyReleased;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
580 keypressed:
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
581 wsWindowList[l]->Alt=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
582 wsWindowList[l]->Shift=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
583 wsWindowList[l]->NumLock=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
584 wsWindowList[l]->Control=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
585 wsWindowList[l]->CapsLock=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
586 if ( Event->xkey.state & Mod1Mask ) wsWindowList[l]->Alt=1;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
587 if ( Event->xkey.state & Mod2Mask ) wsWindowList[l]->NumLock=1;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
588 if ( Event->xkey.state & ControlMask ) wsWindowList[l]->Control=1;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
589 if ( Event->xkey.state & ShiftMask ) wsWindowList[l]->Shift=1;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
590 if ( Event->xkey.state & LockMask ) wsWindowList[l]->CapsLock=1;
6089
39c2bfe5c267 small fixes
pontscho
parents: 6034
diff changeset
591 #if 0
6183
a4bbda72ce86 fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents: 6159
diff changeset
592 {
a4bbda72ce86 fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents: 6159
diff changeset
593 KeySym keySym;
a4bbda72ce86 fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents: 6159
diff changeset
594 keySym=XKeycodeToKeysym( wsDisplay,Event->xkey.keycode,0 );
a4bbda72ce86 fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents: 6159
diff changeset
595 if ( keySym != NoSymbol )
a4bbda72ce86 fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents: 6159
diff changeset
596 {
a4bbda72ce86 fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents: 6159
diff changeset
597 keySym=( (keySym&0xff00) != 0?( (keySym&0x00ff) + 256 ):( keySym ) );
a4bbda72ce86 fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents: 6159
diff changeset
598 wsKeyTable[ keySym ]=i;
a4bbda72ce86 fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents: 6159
diff changeset
599 if ( wsWindowList[l]->KeyHandler )
a4bbda72ce86 fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents: 6159
diff changeset
600 wsWindowList[l]->KeyHandler( Event->xkey.state,i,keySym );
a4bbda72ce86 fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents: 6159
diff changeset
601 }
a4bbda72ce86 fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents: 6159
diff changeset
602 }
6089
39c2bfe5c267 small fixes
pontscho
parents: 6034
diff changeset
603 #else
39c2bfe5c267 small fixes
pontscho
parents: 6034
diff changeset
604 {
39c2bfe5c267 small fixes
pontscho
parents: 6034
diff changeset
605 int key;
39c2bfe5c267 small fixes
pontscho
parents: 6034
diff changeset
606 char buf[100];
39c2bfe5c267 small fixes
pontscho
parents: 6034
diff changeset
607 KeySym keySym;
39c2bfe5c267 small fixes
pontscho
parents: 6034
diff changeset
608 static XComposeStatus stat;
39c2bfe5c267 small fixes
pontscho
parents: 6034
diff changeset
609
39c2bfe5c267 small fixes
pontscho
parents: 6034
diff changeset
610 XLookupString( &Event->xkey,buf,sizeof(buf),&keySym,&stat );
39c2bfe5c267 small fixes
pontscho
parents: 6034
diff changeset
611 key=( (keySym&0xff00) != 0?( (keySym&0x00ff) + 256 ):( keySym ) );
39c2bfe5c267 small fixes
pontscho
parents: 6034
diff changeset
612 wsKeyTable[ key ]=i;
6183
a4bbda72ce86 fix two small bug and add multimedia keyboard support ( i tested with Acer AirKey V only )
pontscho
parents: 6159
diff changeset
613 if ( wsWindowList[l]->KeyHandler ) wsWindowList[l]->KeyHandler( Event->xkey.keycode,i,key );
6089
39c2bfe5c267 small fixes
pontscho
parents: 6034
diff changeset
614 }
39c2bfe5c267 small fixes
pontscho
parents: 6034
diff changeset
615 #endif
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
616 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
617
8916
e3bce0159317 motion fix from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
pontscho
parents: 8864
diff changeset
618 case MotionNotify:
e3bce0159317 motion fix from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
pontscho
parents: 8864
diff changeset
619 i=wsMoveMouse;
e3bce0159317 motion fix from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
pontscho
parents: 8864
diff changeset
620 {
e3bce0159317 motion fix from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
pontscho
parents: 8864
diff changeset
621 /* pump all motion events from the display queue:
e3bce0159317 motion fix from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
pontscho
parents: 8864
diff changeset
622 this way it works faster when moving the window */
8973
0a665389cf2b - add playbar
pontscho
parents: 8949
diff changeset
623 static XEvent e;
0a665389cf2b - add playbar
pontscho
parents: 8949
diff changeset
624 if ( Event->xmotion.state )
0a665389cf2b - add playbar
pontscho
parents: 8949
diff changeset
625 {
0a665389cf2b - add playbar
pontscho
parents: 8949
diff changeset
626 while(XCheckTypedWindowEvent(display,Event->xany.window,MotionNotify,&e)){
8916
e3bce0159317 motion fix from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
pontscho
parents: 8864
diff changeset
627 /* FIXME: need to make sure we didn't release/press the button in between...*/
e3bce0159317 motion fix from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
pontscho
parents: 8864
diff changeset
628 /* FIXME: do we need some timeout here to make sure we don't spend too much time
e3bce0159317 motion fix from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
pontscho
parents: 8864
diff changeset
629 removing events from the queue? */
e3bce0159317 motion fix from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
pontscho
parents: 8864
diff changeset
630 Event = &e;
8973
0a665389cf2b - add playbar
pontscho
parents: 8949
diff changeset
631 }
8916
e3bce0159317 motion fix from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
pontscho
parents: 8864
diff changeset
632 }
e3bce0159317 motion fix from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
pontscho
parents: 8864
diff changeset
633 }
e3bce0159317 motion fix from Gregory Kovriga <gkovriga@techunix.technion.ac.il>
pontscho
parents: 8864
diff changeset
634 goto buttonreleased;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
635 case ButtonRelease: i=Event->xbutton.button + 128; goto buttonreleased;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
636 case ButtonPress: i=Event->xbutton.button; goto buttonreleased;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
637 case EnterNotify: i=wsEnterWindow; goto buttonreleased;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
638 case LeaveNotify: i=wsLeaveWindow;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
639 buttonreleased:
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
640 if ( wsWindowList[l]->MouseHandler )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
641 wsWindowList[l]->MouseHandler( i,Event->xbutton.x,Event->xbutton.y,Event->xmotion.x_root,Event->xmotion.y_root );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
642 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
643
6967
0fa27966ac47 add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents: 6794
diff changeset
644 case SelectionNotify:
0fa27966ac47 add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents: 6794
diff changeset
645 /* Handle DandD */
0fa27966ac47 add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents: 6794
diff changeset
646 wsXDNDProcessSelection(wsWindowList[l],Event);
0fa27966ac47 add xdnd support (from Gregory Kovriga <gkovriga@techunix.technion.ac.il>) and fix -subdelay bug
pontscho
parents: 6794
diff changeset
647 break;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
648 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
649 XFlush( wsDisplay );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
650 XSync( wsDisplay,False );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
651 return !wsTrue;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
652 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
653
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
654 Bool wsDummyEvents( Display * display,XEvent * Event,XPointer arg )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
655 { return True; }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
656
4818
3473ca9ef158 new gui interface, and gtk moved into mplayer process. fork ... bleh :)
pontscho
parents: 4566
diff changeset
657 void wsHandleEvents( void ){
1709
a4e0211455d8 GUI integration, step 1
arpi
parents: 1701
diff changeset
658 // handle pending events
a4e0211455d8 GUI integration, step 1
arpi
parents: 1701
diff changeset
659 while ( XPending(wsDisplay) ){
a4e0211455d8 GUI integration, step 1
arpi
parents: 1701
diff changeset
660 XNextEvent( wsDisplay,&wsEvent );
a4e0211455d8 GUI integration, step 1
arpi
parents: 1701
diff changeset
661 // printf("### X event: %d [%d]\n",wsEvent.type,delay);
a4e0211455d8 GUI integration, step 1
arpi
parents: 1701
diff changeset
662 wsEvents( wsDisplay,&wsEvent,NULL );
a4e0211455d8 GUI integration, step 1
arpi
parents: 1701
diff changeset
663 }
a4e0211455d8 GUI integration, step 1
arpi
parents: 1701
diff changeset
664 }
a4e0211455d8 GUI integration, step 1
arpi
parents: 1701
diff changeset
665
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
666 void wsMainLoop( void )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
667 {
1699
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
668 int delay=20;
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
669 mp_msg( MSGT_GPLAYER,MSGL_STATUS,"[ws] init threads: %d\n",XInitThreads() );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
670 XSynchronize( wsDisplay,False );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
671 XLockDisplay( wsDisplay );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
672 // XIfEvent( wsDisplay,&wsEvent,wsEvents,NULL );
1699
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
673
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
674 #if 1
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
675
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
676 while(wsTrue){
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
677 // handle pending events
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
678 while ( XPending(wsDisplay) ){
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
679 XNextEvent( wsDisplay,&wsEvent );
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
680 wsEvents( wsDisplay,&wsEvent,NULL );
1701
7955814db4c7 removed delay debug printf, better 'active delay'
arpi
parents: 1699
diff changeset
681 delay=0;
1699
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
682 }
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
683 usleep(delay*1000); // FIXME!
1701
7955814db4c7 removed delay debug printf, better 'active delay'
arpi
parents: 1699
diff changeset
684 if(delay<10*20) delay+=20; // pump up delay up to 0.2 sec (low activity)
1699
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
685 }
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
686
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
687 #else
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
688
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
689 while( wsTrue )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
690 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
691 XIfEvent( wsDisplay,&wsEvent,wsDummyEvents,NULL );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
692 wsEvents( wsDisplay,&wsEvent,NULL );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
693 }
1699
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
694 #endif
7ddc63b84f1f DGA2 ifdefs, new mainloop/timer stuff
arpi
parents: 1693
diff changeset
695
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
696 XUnlockDisplay( wsDisplay );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
697 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
698
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
699 // ----------------------------------------------------------------------------------------------
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
700 // Move window to selected layer
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
701 // ----------------------------------------------------------------------------------------------
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
702
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
703 #define WIN_LAYER_ONBOTTOM 2
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
704 #define WIN_LAYER_NORMAL 4
8150
851e974e6eaa updating
pontscho
parents: 8058
diff changeset
705 #define WIN_LAYER_ONTOP 10
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
706
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
707 void wsSetLayer( Display * wsDisplay, Window win, int layer )
8864
b8c271750450 - sync with x11_common
pontscho
parents: 8478
diff changeset
708 { vo_x11_setlayer( wsDisplay,win,layer ); }
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
709
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
710 // ----------------------------------------------------------------------------------------------
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
711 // Switch to fullscreen.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
712 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
713 void wsFullScreen( wsTWindow * win )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
714 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
715 int decoration = 0;
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
716
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
717 if ( win->isFullScreen )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
718 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
719 win->X=win->OldX;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
720 win->Y=win->OldY;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
721 win->Width=win->OldWidth;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
722 win->Height=win->OldHeight;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
723 win->isFullScreen=False;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
724 decoration=win->Decorations;
8478
7988573021e8 disable DPMS handling
pontscho
parents: 8150
diff changeset
725 #ifdef ENABLE_DPMS
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
726 wsScreenSaverOn( wsDisplay );
8478
7988573021e8 disable DPMS handling
pontscho
parents: 8150
diff changeset
727 #endif
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
728 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
729 else
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
730 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
731 win->OldX=win->X; win->OldY=win->Y;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
732 win->OldWidth=win->Width; win->OldHeight=win->Height;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
733 win->X=0; win->Y=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
734 win->Width=wsMaxX; win->Height=wsMaxY;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
735 win->isFullScreen=True;
8478
7988573021e8 disable DPMS handling
pontscho
parents: 8150
diff changeset
736 #ifdef ENABLE_DPMS
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
737 wsScreenSaverOff( wsDisplay );
8478
7988573021e8 disable DPMS handling
pontscho
parents: 8150
diff changeset
738 #endif
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
739 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
740
9317
c7f5df43b937 - support command line parameter -fstype, eg. -fstype layer=12,above,fullscreen
filon
parents: 8973
diff changeset
741 vo_x11_decoration( wsDisplay,win->WindowID,decoration );
c7f5df43b937 - support command line parameter -fstype, eg. -fstype layer=12,above,fullscreen
filon
parents: 8973
diff changeset
742 vo_x11_sizehint( win->X,win->Y,win->Width,win->Height,0 );
8864
b8c271750450 - sync with x11_common
pontscho
parents: 8478
diff changeset
743 vo_x11_setlayer( wsDisplay,win->WindowID,win->isFullScreen );
9317
c7f5df43b937 - support command line parameter -fstype, eg. -fstype layer=12,above,fullscreen
filon
parents: 8973
diff changeset
744 if ( vo_wm_type == 0 && !(vo_fsmode&16) )
c7f5df43b937 - support command line parameter -fstype, eg. -fstype layer=12,above,fullscreen
filon
parents: 8973
diff changeset
745 XWithdrawWindow( wsDisplay,win->WindowID,wsScreen );
c7f5df43b937 - support command line parameter -fstype, eg. -fstype layer=12,above,fullscreen
filon
parents: 8973
diff changeset
746 XMoveResizeWindow( wsDisplay,win->WindowID,win->X,win->Y,win->Width,win->Height );
5910
20c335d98ab3 fix fullscreen bug es ilyen libvo not initialized bug with gui igy
pontscho
parents: 5031
diff changeset
747 XMapRaised( wsDisplay,win->WindowID );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
748 XRaiseWindow( wsDisplay,win->WindowID );
8864
b8c271750450 - sync with x11_common
pontscho
parents: 8478
diff changeset
749 XFlush( wsDisplay );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
750 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
751
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
752 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
753 // Redraw screen.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
754 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
755 void wsPostRedisplay( wsTWindow * win )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
756 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
757 if ( win->ReDraw )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
758 {
6794
77980ab4e296 - add preferences support (first try)
pontscho
parents: 6651
diff changeset
759 win->State=wsWindowExpose;
8058
9246adcf95f0 cosmetic
pontscho
parents: 7892
diff changeset
760 win->ReDraw();
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
761 XFlush( wsDisplay );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
762 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
763 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
764
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
765 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
766 // Do Exit.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
767 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
768 void wsDoExit( void )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
769 { wsTrue=False; wsResizeWindow( wsWindowList[0],32,32 ); }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
770
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
771 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
772 // Put 'Image' to window.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
773 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
774 void wsConvert( wsTWindow * win,unsigned char * Image,unsigned int Size )
2733
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
775 { if ( wsConvFunc ) wsConvFunc( Image,win->ImageData,win->xImage->width * win->xImage->height * 4 ); }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
776
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
777 void wsPutImage( wsTWindow * win )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
778 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
779 if ( wsUseXShm )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
780 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
781 XShmPutImage( wsDisplay,win->WindowID,win->wGC,win->xImage,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
782 0,0,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
783 ( win->Width - win->xImage->width ) / 2,( win->Height - win->xImage->height ) / 2,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
784 win->xImage->width,win->xImage->height,0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
785 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
786 else
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
787 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
788 XPutImage( wsDisplay,win->WindowID,win->wGC,win->xImage,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
789 0,0,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
790 ( win->Width - win->xImage->width ) / 2,( win->Height - win->xImage->height ) / 2,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
791 win->xImage->width,win->xImage->height );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
792 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
793 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
794
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
795 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
796 // Move window to x, y.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
797 // ----------------------------------------------------------------------------------------------
2854
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
798 void wsMoveWindow( wsTWindow * win,int b,int x, int y )
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
799 {
2854
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
800 if ( b )
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
801 {
2854
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
802 switch ( x )
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
803 {
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
804 case -1: win->X=( wsMaxX / 2 ) - ( win->Width / 2 ); break;
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
805 case -2: win->X=wsMaxX - win->Width; break;
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
806 default: win->X=x; break;
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
807 }
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
808 switch ( y )
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
809 {
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
810 case -1: win->Y=( wsMaxY / 2 ) - ( win->Height / 2 ); break;
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
811 case -2: win->Y=wsMaxY - win->Height; break;
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
812 default: win->Y=y; break;
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
813 }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
814 }
2854
fd44ecf77f8d move bug meg fileload bug fixed asszem.
pontscho
parents: 2851
diff changeset
815 else { win->X=x; win->Y=y; }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
816
2851
b64fa5d25142 add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents: 2782
diff changeset
817 win->SizeHint.flags=PPosition | PWinGravity;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
818 win->SizeHint.x=win->X;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
819 win->SizeHint.y=win->Y;
2851
b64fa5d25142 add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents: 2782
diff changeset
820 win->SizeHint.win_gravity=StaticGravity;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
821 XSetWMNormalHints( wsDisplay,win->WindowID,&win->SizeHint );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
822
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
823 XMoveWindow( wsDisplay,win->WindowID,win->X,win->Y );
1810
d44b0ce32791 fix move&resize
pontscho
parents: 1782
diff changeset
824 if ( win->ReSize ) win->ReSize( win->X,win->Y,win->Width,win->Height );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
825 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
826
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
827 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
828 // Resize window to sx, sy.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
829 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
830 void wsResizeWindow( wsTWindow * win,int sx, int sy )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
831 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
832 win->Width=sx;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
833 win->Height=sy;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
834
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
835 win->SizeHint.flags=PPosition | PSize | PWinGravity;// | PBaseSize;
5986
d34622ebaf45 window resize bug fixed
pontscho
parents: 5919
diff changeset
836 win->SizeHint.x=win->X;
d34622ebaf45 window resize bug fixed
pontscho
parents: 5919
diff changeset
837 win->SizeHint.y=win->Y;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
838 win->SizeHint.width=win->Width;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
839 win->SizeHint.height=win->Height;
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
840
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
841 if ( win->Property & wsMinSize )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
842 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
843 win->SizeHint.flags|=PMinSize;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
844 win->SizeHint.min_width=win->Width;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
845 win->SizeHint.min_height=win->Height;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
846 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
847 if ( win->Property & wsMaxSize )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
848 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
849 win->SizeHint.flags|=PMaxSize;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
850 win->SizeHint.max_width=win->Width;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
851 win->SizeHint.max_height=win->Height;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
852 }
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
853
2851
b64fa5d25142 add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents: 2782
diff changeset
854 win->SizeHint.win_gravity=StaticGravity;
5986
d34622ebaf45 window resize bug fixed
pontscho
parents: 5919
diff changeset
855 win->SizeHint.base_width=sx; win->SizeHint.base_height=sy;
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
856
9317
c7f5df43b937 - support command line parameter -fstype, eg. -fstype layer=12,above,fullscreen
filon
parents: 8973
diff changeset
857 if ( vo_wm_type == 0 ) XUnmapWindow( wsDisplay,win->WindowID );
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
858
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
859 XSetWMNormalHints( wsDisplay,win->WindowID,&win->SizeHint );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
860 XResizeWindow( wsDisplay,win->WindowID,sx,sy );
5986
d34622ebaf45 window resize bug fixed
pontscho
parents: 5919
diff changeset
861 XMapRaised( wsDisplay,win->WindowID );
1810
d44b0ce32791 fix move&resize
pontscho
parents: 1782
diff changeset
862 if ( win->ReSize ) win->ReSize( win->X,win->Y,win->Width,win->Height );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
863 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
864
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
865 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
866 // Iconify window.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
867 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
868 void wsIconify( wsTWindow win )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
869 { XIconifyWindow( wsDisplay,win.WindowID,0 ); }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
870
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
871 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
872 // Move top the window.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
873 // ----------------------------------------------------------------------------------------------
6146
b9651eb9749e fix some gtk bug...
pontscho
parents: 6089
diff changeset
874 void wsMoveTopWindow( Display * wsDisplay,Window win )
2851
b64fa5d25142 add roleld mouse support and some small bugfix. neked jol a testedbe.
pontscho
parents: 2782
diff changeset
875 {
8864
b8c271750450 - sync with x11_common
pontscho
parents: 8478
diff changeset
876 // XUnmapWindow( wsDisplay,win );
b8c271750450 - sync with x11_common
pontscho
parents: 8478
diff changeset
877 // XMapWindow( wsDisplay,win );
b8c271750450 - sync with x11_common
pontscho
parents: 8478
diff changeset
878 XMapRaised( wsDisplay,win );
b8c271750450 - sync with x11_common
pontscho
parents: 8478
diff changeset
879 XRaiseWindow( wsDisplay,win );
2045
deb4aff05c44 fix other bugs
pontscho
parents: 2030
diff changeset
880 }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
881
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
882 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
883 // Set window background to 'color'.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
884 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
885 void wsSetBackground( wsTWindow * win,int color )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
886 { XSetWindowBackground( wsDisplay,win->WindowID,color ); }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
887
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
888 void wsSetBackgroundRGB( wsTWindow * win,int r,int g,int b )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
889 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
890 int color = 0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
891 switch ( wsOutMask )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
892 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
893 case wsRGB32:
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
894 case wsRGB24: color=( r << 16 ) + ( g << 8 ) + b; break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
895 case wsBGR32:
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
896 case wsBGR24: color=( b << 16 ) + ( g << 8 ) + r; break;
2733
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
897 case wsRGB16: PACK_RGB16( b,g,r,color ); break;
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
898 case wsBGR16: PACK_RGB16( r,g,b,color ); break;
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
899 case wsRGB15: PACK_RGB15( b,g,r,color ); break;
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
900 case wsBGR15: PACK_RGB15( r,g,b,color ); break;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
901 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
902 XSetWindowBackground( wsDisplay,win->WindowID,color );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
903 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
904
1814
9c674dc76ff3 add wsSetForegroundRGB
pontscho
parents: 1810
diff changeset
905 void wsSetForegroundRGB( wsTWindow * win,int r,int g,int b )
9c674dc76ff3 add wsSetForegroundRGB
pontscho
parents: 1810
diff changeset
906 {
9c674dc76ff3 add wsSetForegroundRGB
pontscho
parents: 1810
diff changeset
907 int color = 0;
9c674dc76ff3 add wsSetForegroundRGB
pontscho
parents: 1810
diff changeset
908 switch ( wsOutMask )
9c674dc76ff3 add wsSetForegroundRGB
pontscho
parents: 1810
diff changeset
909 {
9c674dc76ff3 add wsSetForegroundRGB
pontscho
parents: 1810
diff changeset
910 case wsRGB32:
9c674dc76ff3 add wsSetForegroundRGB
pontscho
parents: 1810
diff changeset
911 case wsRGB24: color=( r << 16 ) + ( g << 8 ) + b; break;
9c674dc76ff3 add wsSetForegroundRGB
pontscho
parents: 1810
diff changeset
912 case wsBGR32:
9c674dc76ff3 add wsSetForegroundRGB
pontscho
parents: 1810
diff changeset
913 case wsBGR24: color=( b << 16 ) + ( g << 8 ) + r; break;
2733
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
914 case wsRGB16: PACK_RGB16( b,g,r,color ); break;
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
915 case wsBGR16: PACK_RGB16( r,g,b,color ); break;
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
916 case wsRGB15: PACK_RGB15( b,g,r,color ); break;
4dddb055d2cd add prostproc/rgb2rgb
pontscho
parents: 2476
diff changeset
917 case wsBGR15: PACK_RGB15( r,g,b,color ); break;
1814
9c674dc76ff3 add wsSetForegroundRGB
pontscho
parents: 1810
diff changeset
918 }
9c674dc76ff3 add wsSetForegroundRGB
pontscho
parents: 1810
diff changeset
919 XSetForeground( wsDisplay,win->wGC,color );
9c674dc76ff3 add wsSetForegroundRGB
pontscho
parents: 1810
diff changeset
920 }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
921
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
922 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
923 // Draw string at x,y with fc ( foreground color ) and bc ( background color ).
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
924 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
925 void wsDrawString( wsTWindow win,int x,int y,char * str,int fc,int bc )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
926 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
927 XSetForeground( wsDisplay,win.wGC,bc );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
928 XFillRectangle( wsDisplay,win.WindowID,win.wGC,x,y,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
929 XTextWidth( win.Font,str,strlen( str ) ) + 20,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
930 win.FontHeight + 2 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
931 XSetForeground( wsDisplay,win.wGC,fc );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
932 XDrawString( wsDisplay,win.WindowID,win.wGC,x + 10,y + 13,str,strlen( str ) );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
933 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
934
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
935 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
936 // Calculation string width.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
937 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
938 int wsTextWidth( wsTWindow win,char * str )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
939 { return XTextWidth( win.Font,str,strlen( str ) ) + 20; }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
940
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
941 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
942 // Show / hide mouse cursor.
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
943 // ----------------------------------------------------------------------------------------------
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
944 void wsVisibleMouse( wsTWindow * win,int m )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
945 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
946 switch ( m )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
947 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
948 case wsShowMouseCursor:
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
949 if ( win->wsCursor != None )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
950 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
951 XFreeCursor( wsDisplay,win->wsCursor );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
952 win->wsCursor=None;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
953 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
954 XDefineCursor( wsDisplay,win->WindowID,0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
955 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
956 case wsHideMouseCursor:
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
957 win->wsCursor=XCreatePixmapCursor( wsDisplay,win->wsCursorPixmap,win->wsCursorPixmap,&win->wsColor,&win->wsColor,0,0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
958 XDefineCursor( wsDisplay,win->WindowID,win->wsCursor );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
959 break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
960 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
961 XFlush( wsDisplay );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
962 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
963
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
964 int wsGetDepthOnScreen( void )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
965 {
7802
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
966 int depth;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
967 XImage * mXImage;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
968 Visual * visual;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
969
7802
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
970 if( (depth = vo_find_depth_from_visuals( wsDisplay,wsScreen,&visual )) > 0 )
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
971 {
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
972 mXImage = XCreateImage( wsDisplay,visual,depth,ZPixmap,0,NULL,
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
973 1,1,32,0 );
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
974 wsDepthOnScreen = mXImage->bits_per_pixel;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
975 wsRedMask=mXImage->red_mask;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
976 wsGreenMask=mXImage->green_mask;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
977 wsBlueMask=mXImage->blue_mask;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
978 XDestroyImage( mXImage );
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
979 }
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
980 else
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
981 {
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
982 int bpp,ibpp;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
983 XWindowAttributes attribs;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
984
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
985 mXImage=XGetImage( wsDisplay,wsRootWin,0,0,1,1,AllPlanes,ZPixmap );
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
986 bpp=mXImage->bits_per_pixel;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
987
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
988 XGetWindowAttributes( wsDisplay,wsRootWin,&attribs );
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
989 ibpp=attribs.depth;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
990 mXImage=XGetImage( wsDisplay,wsRootWin,0,0,1,1,AllPlanes,ZPixmap );
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
991 bpp=mXImage->bits_per_pixel;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
992 if ( ( ibpp + 7 ) / 8 != ( bpp + 7 ) / 8 ) ibpp=bpp;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
993 wsDepthOnScreen=ibpp;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
994 wsRedMask=mXImage->red_mask;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
995 wsGreenMask=mXImage->green_mask;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
996 wsBlueMask=mXImage->blue_mask;
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
997 XDestroyImage( mXImage );
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
998 }
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
999 return wsDepthOnScreen;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1000 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1001
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1002 void wsXDone( void )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1003 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1004 XCloseDisplay( wsDisplay );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1005 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1006
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1007 void wsVisibleWindow( wsTWindow * win,int show )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1008 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1009 switch( show )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1010 {
5997
b5fb9a927bf3 add WM detection, and wm specific fullscreen code. (???)
pontscho
parents: 5986
diff changeset
1011 case wsShowWindow: XMapRaised( wsDisplay,win->WindowID ); break;
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1012 case wsHideWindow: XUnmapWindow( wsDisplay,win->WindowID ); break;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1013 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1014 XFlush( wsDisplay );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1015 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1016
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1017 void wsDestroyImage( wsTWindow * win )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1018 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1019 if ( win->xImage )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1020 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1021 XDestroyImage( win->xImage );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1022 if ( wsUseXShm )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1023 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1024 XShmDetach( wsDisplay,&win->Shminfo );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1025 shmdt( win->Shminfo.shmaddr );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1026 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1027 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1028 win->xImage=NULL;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1029 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1030
1858
88a88d0a3f94 fix skin changing, xv fullscreen redraw bug, etc.
pontscho
parents: 1853
diff changeset
1031 void wsCreateImage( wsTWindow * win,int Width,int Height )
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1032 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1033 int CompletionType = -1;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1034 if ( wsUseXShm )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1035 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1036 CompletionType=XShmGetEventBase( wsDisplay ) + ShmCompletion;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1037 win->xImage=XShmCreateImage( wsDisplay,win->VisualInfo.visual,
7802
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
1038 win->VisualInfo.depth,ZPixmap,NULL,&win->Shminfo,Width,Height );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1039 if ( win->xImage == NULL )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1040 {
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
1041 mp_msg( MSGT_GPLAYER,MSGL_FATAL,"[ws] shared memory extension error.\n" );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1042 exit( 0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1043 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1044 win->Shminfo.shmid=shmget( IPC_PRIVATE,win->xImage->bytes_per_line * win->xImage->height,IPC_CREAT|0777 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1045 if ( win->Shminfo.shmid < 0 )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1046 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1047 XDestroyImage( win->xImage );
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
1048 mp_msg( MSGT_GPLAYER,MSGL_FATAL,"[ws] shared memory extension error.\n" );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1049 exit( 0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1050 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1051 win->Shminfo.shmaddr=(char *)shmat( win->Shminfo.shmid,0,0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1052
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1053 if ( win->Shminfo.shmaddr == ((char *) -1) )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1054 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1055 XDestroyImage( win->xImage );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1056 if ( win->Shminfo.shmaddr != ((char *) -1) ) shmdt( win->Shminfo.shmaddr );
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
1057 mp_msg( MSGT_GPLAYER,MSGL_FATAL,"[ws] shared memory extension error.\n" );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1058 exit( 0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1059 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1060 win->xImage->data=win->Shminfo.shmaddr;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1061 win->Shminfo.readOnly=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1062 XShmAttach( wsDisplay,&win->Shminfo );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1063 shmctl( win->Shminfo.shmid,IPC_RMID,0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1064 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1065 else
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1066 {
7802
037982e833a7 Choose a good visual from the list of supported visuals on the X11 server,
jkeil
parents: 7801
diff changeset
1067 win->xImage=XCreateImage( wsDisplay,win->VisualInfo.visual,win->VisualInfo.depth,
1858
88a88d0a3f94 fix skin changing, xv fullscreen redraw bug, etc.
pontscho
parents: 1853
diff changeset
1068 ZPixmap,0,0,Width,Height,
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1069 (wsDepthOnScreen == 3) ? 32 : wsDepthOnScreen,
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1070 0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1071 if ( ( win->xImage->data=malloc( win->xImage->bytes_per_line * win->xImage->height ) ) == NULL )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1072 {
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
1073 mp_msg( MSGT_GPLAYER,MSGL_FATAL,"[ws] sorry, not enough memory for draw buffer.\n" );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1074 exit( 0 );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1075 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1076 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1077 win->ImageData=(unsigned char *)win->xImage->data;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1078 win->ImageDataw=(unsigned short int *)win->xImage->data;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1079 win->ImageDatadw=(unsigned int *)win->xImage->data;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1080 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1081
1858
88a88d0a3f94 fix skin changing, xv fullscreen redraw bug, etc.
pontscho
parents: 1853
diff changeset
1082 void wsResizeImage( wsTWindow * win,int Width,int Height )
88a88d0a3f94 fix skin changing, xv fullscreen redraw bug, etc.
pontscho
parents: 1853
diff changeset
1083 { wsDestroyImage( win ); wsCreateImage( win,Width,Height ); }
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1084
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1085 int wsGetOutMask( void )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1086 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1087 if ( ( wsDepthOnScreen == 32 )&&( wsRedMask == 0xff0000 )&&( wsGreenMask == 0x00ff00 )&&( wsBlueMask == 0x0000ff ) ) return wsRGB32;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1088 if ( ( wsDepthOnScreen == 32 )&&( wsRedMask == 0x0000ff )&&( wsGreenMask == 0x00ff00 )&&( wsBlueMask == 0xff0000 ) ) return wsBGR32;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1089 if ( ( wsDepthOnScreen == 24 )&&( wsRedMask == 0xff0000 )&&( wsGreenMask == 0x00ff00 )&&( wsBlueMask == 0x0000ff ) ) return wsRGB24;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1090 if ( ( wsDepthOnScreen == 24 )&&( wsRedMask == 0x0000ff )&&( wsGreenMask == 0x00ff00 )&&( wsBlueMask == 0xff0000 ) ) return wsBGR24;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1091 if ( ( wsDepthOnScreen == 16 )&&( wsRedMask == 0xf800 )&&( wsGreenMask == 0x7e0 )&&( wsBlueMask == 0x1f ) ) return wsRGB16;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1092 if ( ( wsDepthOnScreen == 16 )&&( wsRedMask == 0x1f )&&( wsGreenMask == 0x7e0 )&&( wsBlueMask == 0xf800 ) ) return wsBGR16;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1093 if ( ( wsDepthOnScreen == 15 )&&( wsRedMask == 0x7c00 )&&( wsGreenMask == 0x3e0 )&&( wsBlueMask == 0x1f ) ) return wsRGB15;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1094 if ( ( wsDepthOnScreen == 15 )&&( wsRedMask == 0x1f )&&( wsGreenMask == 0x3e0 )&&( wsBlueMask == 0x7c00 ) ) return wsBGR15;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1095 return 0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1096 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1097
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1098 void wsSetTitle( wsTWindow * win,char * name )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1099 { XStoreName( wsDisplay,win->WindowID,name ); }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1100
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1101 void wsSetMousePosition( wsTWindow * win,int x, int y )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1102 { XWarpPointer( wsDisplay,wsRootWin,win->WindowID,0,0,0,0,x,y ); }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1103
8478
7988573021e8 disable DPMS handling
pontscho
parents: 8150
diff changeset
1104 #ifdef ENABLE_DPMS
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1105 static int dpms_disabled=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1106 static int timeout_save=0;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1107
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1108 void wsScreenSaverOn( Display *mDisplay )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1109 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1110 int nothing;
4566
3b1721b9e211 fix dpsm compile bug in gui
pontscho
parents: 4465
diff changeset
1111 #ifdef HAVE_XDPMS
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1112 if ( dpms_disabled )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1113 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1114 if ( DPMSQueryExtension( mDisplay,&nothing,&nothing ) )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1115 {
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
1116 if ( !DPMSEnable( mDisplay ) ) mp_msg( MSGT_GPLAYER,MSGL_ERR,"DPMS not available ?\n" ); // restoring power saving settings
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1117 else
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1118 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1119 // DPMS does not seem to be enabled unless we call DPMSInfo
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1120 BOOL onoff;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1121 CARD16 state;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1122 DPMSInfo( mDisplay,&state,&onoff );
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
1123 if ( onoff ) mp_msg( MSGT_GPLAYER,MSGL_STATUS,"Successfully enabled DPMS.\n" );
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
1124 else mp_msg( MSGT_GPLAYER,MSGL_STATUS,"Could not enable DPMS.\n" );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1125 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1126 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1127 }
4566
3b1721b9e211 fix dpsm compile bug in gui
pontscho
parents: 4465
diff changeset
1128 #endif
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1129 if ( timeout_save )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1130 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1131 int dummy, interval, prefer_blank, allow_exp;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1132 XGetScreenSaver( mDisplay,&dummy,&interval,&prefer_blank,&allow_exp );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1133 XSetScreenSaver( mDisplay,timeout_save,interval,prefer_blank,allow_exp );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1134 XGetScreenSaver( mDisplay,&timeout_save,&interval,&prefer_blank,&allow_exp );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1135 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1136 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1137
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1138 void wsScreenSaverOff( Display * mDisplay )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1139 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1140 int interval,prefer_blank,allow_exp,nothing;
4566
3b1721b9e211 fix dpsm compile bug in gui
pontscho
parents: 4465
diff changeset
1141 #ifdef HAVE_XDPMS
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1142 if ( DPMSQueryExtension( mDisplay,&nothing,&nothing ) )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1143 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1144 BOOL onoff;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1145 CARD16 state;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1146 DPMSInfo( mDisplay,&state,&onoff );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1147 if ( onoff )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1148 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1149 Status stat;
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
1150 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"Disabling DPMS.\n" );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1151 dpms_disabled=1;
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1152 stat=DPMSDisable( mDisplay ); // monitor powersave off
5919
60cf2bca993f some bug fix
pontscho
parents: 5910
diff changeset
1153 mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"stat: %d.\n",stat );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1154 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1155 }
4566
3b1721b9e211 fix dpsm compile bug in gui
pontscho
parents: 4465
diff changeset
1156 #endif
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1157 XGetScreenSaver( mDisplay,&timeout_save,&interval,&prefer_blank,&allow_exp );
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1158 if ( timeout_save ) XSetScreenSaver( mDisplay,0,interval,prefer_blank,allow_exp ); // turning off screensaver
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1159 }
8478
7988573021e8 disable DPMS handling
pontscho
parents: 8150
diff changeset
1160 #endif
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1161
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1162 void wsSetShape( wsTWindow * win,char * data )
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1163 {
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1164 #ifdef HAVE_XSHAPE
1852
58dd326fcc4a fix xshape, mixer, fullscreen, etc
pontscho
parents: 1850
diff changeset
1165 if ( !wsUseXShape ) return;
58dd326fcc4a fix xshape, mixer, fullscreen, etc
pontscho
parents: 1850
diff changeset
1166 if ( data )
58dd326fcc4a fix xshape, mixer, fullscreen, etc
pontscho
parents: 1850
diff changeset
1167 {
58dd326fcc4a fix xshape, mixer, fullscreen, etc
pontscho
parents: 1850
diff changeset
1168 win->Mask=XCreateBitmapFromData( wsDisplay,win->WindowID,data,win->Width,win->Height );
58dd326fcc4a fix xshape, mixer, fullscreen, etc
pontscho
parents: 1850
diff changeset
1169 XShapeCombineMask( wsDisplay,win->WindowID,ShapeBounding,0,0,win->Mask,ShapeSet );
58dd326fcc4a fix xshape, mixer, fullscreen, etc
pontscho
parents: 1850
diff changeset
1170 XFreePixmap( wsDisplay,win->Mask );
58dd326fcc4a fix xshape, mixer, fullscreen, etc
pontscho
parents: 1850
diff changeset
1171 }
58dd326fcc4a fix xshape, mixer, fullscreen, etc
pontscho
parents: 1850
diff changeset
1172 else XShapeCombineMask( wsDisplay,win->WindowID,ShapeBounding,0,0,None,ShapeSet );
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1173 #endif
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1174 }
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1175
6651
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1176 void wsSetIcon( Display * dsp,Window win,Pixmap icon,Pixmap mask )
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1177 {
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1178 XWMHints * wm;
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1179 long data[2];
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1180 Atom iconatom;
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1181
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1182 wm=XGetWMHints( dsp,win );
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1183 if ( !wm ) wm=XAllocWMHints();
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1184
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1185 wm->icon_pixmap=icon;
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1186 wm->icon_mask=mask;
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1187 wm->flags|=IconPixmapHint | IconMaskHint;
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1188
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1189 XSetWMHints( dsp,win,wm );
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1190
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1191 data[0]=icon;
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1192 data[1]=mask;
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1193 iconatom=XInternAtom( dsp,"KWM_WIN_ICON",0 );
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1194 XChangeProperty( dsp,win,iconatom,iconatom,32,PropModeReplace,(unsigned char *)data,2 );
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1195
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1196 XFree( wm );
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1197 }
8f49c75a2824 - add icon (nice, but very ugly hakk:)
pontscho
parents: 6622
diff changeset
1198
1693
d237c5d4b216 GUI version n-1
arpi
parents:
diff changeset
1199 #include "wsmkeys.h"