annotate Gui/wm/ws.c @ 14217:5b5ebf93ec16

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