annotate libvo/w32_common.c @ 26730:41794a5fb100

Add a new suboption to -vo xv and -vo xvmc that allows selection of XVideo adaptor to be used (instead of default one, which is #0). This is useful for example if you'd rather like to use the original Overlay renderer of your GPU instead of the texture blitting engine (which is usually default), which is number one cause of nasty video tearing effects.
author ben
date Tue, 13 May 2008 17:52:25 +0000
parents 04f280a9f4f4
children 31a44a9c8687
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22423
8f95e2a3c797 Add support for tracking mouse movements.
reimar
parents: 22416
diff changeset
1 #include <stdio.h>
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
2 #include <limits.h>
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
3 #include <windows.h>
22423
8f95e2a3c797 Add support for tracking mouse movements.
reimar
parents: 22416
diff changeset
4 #include <windowsx.h>
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
5
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 12936
diff changeset
6 #include "osdep/keycodes.h"
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 12936
diff changeset
7 #include "input/input.h"
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 12936
diff changeset
8 #include "input/mouse.h"
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 12936
diff changeset
9 #include "mp_msg.h"
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
10 #include "video_out.h"
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
11 #include "aspect.h"
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
12 #include "w32_common.h"
22823
98eaf29b5dee Code cleanup: don't include a .c file in mplayer.c and fix a few
rathann
parents: 22423
diff changeset
13 #include "mp_fifo.h"
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
14
22423
8f95e2a3c797 Add support for tracking mouse movements.
reimar
parents: 22416
diff changeset
15 extern int enable_mouse_movements;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
16
18081
192e778f1ba1 define MONITOR_DEFAULTTOPRIMARY if necessary, some mingw version seem to miss it
reimar
parents: 18079
diff changeset
17 #ifndef MONITOR_DEFAULTTOPRIMARY
192e778f1ba1 define MONITOR_DEFAULTTOPRIMARY if necessary, some mingw version seem to miss it
reimar
parents: 18079
diff changeset
18 #define MONITOR_DEFAULTTOPRIMARY 1
192e778f1ba1 define MONITOR_DEFAULTTOPRIMARY if necessary, some mingw version seem to miss it
reimar
parents: 18079
diff changeset
19 #endif
192e778f1ba1 define MONITOR_DEFAULTTOPRIMARY if necessary, some mingw version seem to miss it
reimar
parents: 18079
diff changeset
20
25945
491e43b45aa9 Avoid a useless extra pointer variable.
reimar
parents: 25944
diff changeset
21 static const char classname[] = "MPlayer - Media player for Win32";
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
22 int vo_vm = 0;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
23
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
24 // last non-fullscreen extends
25946
04f280a9f4f4 Make some variables static.
reimar
parents: 25945
diff changeset
25 static int prev_width;
04f280a9f4f4 Make some variables static.
reimar
parents: 25945
diff changeset
26 static int prev_height;
04f280a9f4f4 Make some variables static.
reimar
parents: 25945
diff changeset
27 static int prev_x;
04f280a9f4f4 Make some variables static.
reimar
parents: 25945
diff changeset
28 static int prev_y;
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
29
25946
04f280a9f4f4 Make some variables static.
reimar
parents: 25945
diff changeset
30 static uint32_t o_dwidth;
04f280a9f4f4 Make some variables static.
reimar
parents: 25945
diff changeset
31 static uint32_t o_dheight;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
32
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
33 static HINSTANCE hInstance;
21631
2d3fdf94a50c Fix compilation under MinGW with X11 enabled
reimar
parents: 20972
diff changeset
34 #define vo_window vo_w32_window
14142
f0c1ee83b216 Improving gl2 under windows, moving some functionality to gl_common
reimar
parents: 13787
diff changeset
35 HWND vo_window = 0;
17115
dbe315450a32 Fix message handling, process resize events
reimar
parents: 17006
diff changeset
36 static int event_flags;
18116
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
37 static int mon_cnt;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
38
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
39 static HMONITOR (WINAPI* myMonitorFromWindow)(HWND, DWORD);
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
40 static BOOL (WINAPI* myGetMonitorInfo)(HMONITOR, LPMONITORINFO);
18116
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
41 static BOOL (WINAPI* myEnumDisplayMonitors)(HDC, LPCRECT, MONITORENUMPROC, LPARAM);
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
42
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
43 static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
44 RECT r;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
45 POINT p;
25944
8a1c062707ff Do not uselessly erase background, OpenGL will take care of drawing everything.
reimar
parents: 25942
diff changeset
46 if (WinID < 0 || message == WM_PAINT || message == WM_ERASEBKGND ||
8a1c062707ff Do not uselessly erase background, OpenGL will take care of drawing everything.
reimar
parents: 25942
diff changeset
47 message == WM_SIZE) {
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
48 switch (message) {
25944
8a1c062707ff Do not uselessly erase background, OpenGL will take care of drawing everything.
reimar
parents: 25942
diff changeset
49 case WM_ERASEBKGND: // no need to erase background seperately
8a1c062707ff Do not uselessly erase background, OpenGL will take care of drawing everything.
reimar
parents: 25942
diff changeset
50 return 1;
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
51 case WM_PAINT:
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
52 event_flags |= VO_EVENT_EXPOSE;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
53 break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
54 case WM_MOVE:
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
55 p.x = 0;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
56 p.y = 0;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
57 ClientToScreen(vo_window, &p);
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
58 vo_dx = p.x;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
59 vo_dy = p.y;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
60 break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
61 case WM_SIZE:
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
62 event_flags |= VO_EVENT_RESIZE;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
63 GetClientRect(vo_window, &r);
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
64 vo_dwidth = r.right;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
65 vo_dheight = r.bottom;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
66 break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
67 case WM_WINDOWPOSCHANGING:
25918
35698e5aa40c Implement keepaspect for Windows OpenGL vos.
reimar
parents: 25787
diff changeset
68 if (vo_keepaspect && !vo_fs) {
35698e5aa40c Implement keepaspect for Windows OpenGL vos.
reimar
parents: 25787
diff changeset
69 WINDOWPOS *wpos = lParam;
35698e5aa40c Implement keepaspect for Windows OpenGL vos.
reimar
parents: 25787
diff changeset
70 int xborder, yborder;
35698e5aa40c Implement keepaspect for Windows OpenGL vos.
reimar
parents: 25787
diff changeset
71 RECT r2;
35698e5aa40c Implement keepaspect for Windows OpenGL vos.
reimar
parents: 25787
diff changeset
72 GetClientRect(vo_window, &r);
35698e5aa40c Implement keepaspect for Windows OpenGL vos.
reimar
parents: 25787
diff changeset
73 GetWindowRect(vo_window, &r2);
35698e5aa40c Implement keepaspect for Windows OpenGL vos.
reimar
parents: 25787
diff changeset
74 xborder = (r2.right - r2.left) - (r.right - r.left);
35698e5aa40c Implement keepaspect for Windows OpenGL vos.
reimar
parents: 25787
diff changeset
75 yborder = (r2.bottom - r2.top) - (r.bottom - r.top);
35698e5aa40c Implement keepaspect for Windows OpenGL vos.
reimar
parents: 25787
diff changeset
76 wpos->cx -= xborder; wpos->cy -= yborder;
35698e5aa40c Implement keepaspect for Windows OpenGL vos.
reimar
parents: 25787
diff changeset
77 aspect_fit(&wpos->cx, &wpos->cy, wpos->cx, wpos->cy);
35698e5aa40c Implement keepaspect for Windows OpenGL vos.
reimar
parents: 25787
diff changeset
78 wpos->cx += xborder; wpos->cy += yborder;
35698e5aa40c Implement keepaspect for Windows OpenGL vos.
reimar
parents: 25787
diff changeset
79 }
18927
278eaf3ed5d8 Convince windows to allow window sizes > screen size
reimar
parents: 18116
diff changeset
80 return 0;
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
81 case WM_CLOSE:
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
82 mplayer_put_key(KEY_CLOSE_WIN);
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
83 break;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
84 case WM_SYSCOMMAND:
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
85 switch (wParam) {
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
86 case SC_SCREENSAVE:
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
87 case SC_MONITORPOWER:
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
88 mp_msg(MSGT_VO, MSGL_V, "vo: win32: killing screensaver\n");
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
89 return 0;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
90 }
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
91 break;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
92 case WM_KEYDOWN:
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
93 switch (wParam) {
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
94 case VK_LEFT: mplayer_put_key(KEY_LEFT); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
95 case VK_UP: mplayer_put_key(KEY_UP); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
96 case VK_RIGHT: mplayer_put_key(KEY_RIGHT); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
97 case VK_DOWN: mplayer_put_key(KEY_DOWN); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
98 case VK_TAB: mplayer_put_key(KEY_TAB); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
99 case VK_CONTROL: mplayer_put_key(KEY_CTRL); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
100 case VK_BACK: mplayer_put_key(KEY_BS); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
101 case VK_DELETE: mplayer_put_key(KEY_DELETE); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
102 case VK_INSERT: mplayer_put_key(KEY_INSERT); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
103 case VK_HOME: mplayer_put_key(KEY_HOME); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
104 case VK_END: mplayer_put_key(KEY_END); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
105 case VK_PRIOR: mplayer_put_key(KEY_PAGE_UP); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
106 case VK_NEXT: mplayer_put_key(KEY_PAGE_DOWN); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
107 case VK_ESCAPE: mplayer_put_key(KEY_ESC); break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
108 }
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
109 break;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
110 case WM_CHAR:
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
111 mplayer_put_key(wParam);
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
112 break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
113 case WM_LBUTTONDOWN:
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
114 if (!vo_nomouse_input && (vo_fs || (wParam & MK_CONTROL))) {
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
115 mplayer_put_key(MOUSE_BTN0);
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
116 break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
117 }
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
118 if (!vo_fs) {
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
119 ReleaseCapture();
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
120 SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0);
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
121 return 0;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
122 }
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
123 break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
124 case WM_MBUTTONDOWN:
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
125 if (!vo_nomouse_input)
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
126 mplayer_put_key(MOUSE_BTN1);
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
127 break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
128 case WM_RBUTTONDOWN:
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
129 if (!vo_nomouse_input)
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
130 mplayer_put_key(MOUSE_BTN2);
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
131 break;
22423
8f95e2a3c797 Add support for tracking mouse movements.
reimar
parents: 22416
diff changeset
132 case WM_MOUSEMOVE:
8f95e2a3c797 Add support for tracking mouse movements.
reimar
parents: 22416
diff changeset
133 if (enable_mouse_movements) {
8f95e2a3c797 Add support for tracking mouse movements.
reimar
parents: 22416
diff changeset
134 char cmd_str[40];
8f95e2a3c797 Add support for tracking mouse movements.
reimar
parents: 22416
diff changeset
135 snprintf(cmd_str, sizeof(cmd_str), "set_mouse_pos %i %i",
8f95e2a3c797 Add support for tracking mouse movements.
reimar
parents: 22416
diff changeset
136 GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
8f95e2a3c797 Add support for tracking mouse movements.
reimar
parents: 22416
diff changeset
137 mp_input_queue_cmd(mp_input_parse_cmd(cmd_str));
8f95e2a3c797 Add support for tracking mouse movements.
reimar
parents: 22416
diff changeset
138 }
8f95e2a3c797 Add support for tracking mouse movements.
reimar
parents: 22416
diff changeset
139 break;
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
140 case WM_MOUSEWHEEL:
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
141 if (!vo_nomouse_input) {
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
142 int x = GET_WHEEL_DELTA_WPARAM(wParam);
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
143 if (x > 0)
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
144 mplayer_put_key(MOUSE_BTN3);
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
145 else
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
146 mplayer_put_key(MOUSE_BTN4);
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
147 break;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
148 }
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
149 }
25940
8928a8401017 Forward mouse messages to -wid Window.
reimar
parents: 25934
diff changeset
150 } else switch (message) {
8928a8401017 Forward mouse messages to -wid Window.
reimar
parents: 25934
diff changeset
151 case WM_MOUSEMOVE:
8928a8401017 Forward mouse messages to -wid Window.
reimar
parents: 25934
diff changeset
152 case WM_LBUTTONDOWN:
8928a8401017 Forward mouse messages to -wid Window.
reimar
parents: 25934
diff changeset
153 case WM_LBUTTONUP:
8928a8401017 Forward mouse messages to -wid Window.
reimar
parents: 25934
diff changeset
154 case WM_LBUTTONDBLCLK:
8928a8401017 Forward mouse messages to -wid Window.
reimar
parents: 25934
diff changeset
155 case WM_MBUTTONDOWN:
8928a8401017 Forward mouse messages to -wid Window.
reimar
parents: 25934
diff changeset
156 case WM_MBUTTONUP:
8928a8401017 Forward mouse messages to -wid Window.
reimar
parents: 25934
diff changeset
157 case WM_MBUTTONDBLCLK:
8928a8401017 Forward mouse messages to -wid Window.
reimar
parents: 25934
diff changeset
158 case WM_RBUTTONDOWN:
8928a8401017 Forward mouse messages to -wid Window.
reimar
parents: 25934
diff changeset
159 case WM_RBUTTONUP:
8928a8401017 Forward mouse messages to -wid Window.
reimar
parents: 25934
diff changeset
160 case WM_RBUTTONDBLCLK:
25942
8ec86aff8fab Avoid -wid message processing blocking MPlayer.
reimar
parents: 25940
diff changeset
161 SendNotifyMessage(WinID, message, wParam, lParam);
25940
8928a8401017 Forward mouse messages to -wid Window.
reimar
parents: 25934
diff changeset
162 }
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
163
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
164 return DefWindowProc(hWnd, message, wParam, lParam);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
165 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
166
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
167 int vo_w32_check_events(void) {
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
168 MSG msg;
17115
dbe315450a32 Fix message handling, process resize events
reimar
parents: 17006
diff changeset
169 event_flags = 0;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
170 while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
171 TranslateMessage(&msg);
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
172 DispatchMessage(&msg);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
173 }
22415
c36b8d705d08 Generate resize events when size of -wid window changes.
reimar
parents: 21631
diff changeset
174 if (WinID >= 0) {
c36b8d705d08 Generate resize events when size of -wid window changes.
reimar
parents: 21631
diff changeset
175 RECT r;
25933
9b395b94d6a7 Hack: Create a child window for Windows OpenGL with -wid, since (esp. nVidia)
reimar
parents: 25918
diff changeset
176 GetClientRect(WinID, &r);
22415
c36b8d705d08 Generate resize events when size of -wid window changes.
reimar
parents: 21631
diff changeset
177 if (r.right != vo_dwidth || r.bottom != vo_dheight)
25933
9b395b94d6a7 Hack: Create a child window for Windows OpenGL with -wid, since (esp. nVidia)
reimar
parents: 25918
diff changeset
178 MoveWindow(vo_window, 0, 0, r.right, r.bottom, FALSE);
22415
c36b8d705d08 Generate resize events when size of -wid window changes.
reimar
parents: 21631
diff changeset
179 }
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
180
17115
dbe315450a32 Fix message handling, process resize events
reimar
parents: 17006
diff changeset
181 return event_flags;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
182 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
183
18116
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
184 static BOOL CALLBACK mon_enum(HMONITOR hmon, HDC hdc, LPRECT r, LPARAM p) {
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
185 // this defaults to the last screen if specified number does not exist
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
186 xinerama_x = r->left;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
187 xinerama_y = r->top;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
188 vo_screenwidth = r->right - r->left;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
189 vo_screenheight = r->bottom - r->top;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
190 if (mon_cnt == xinerama_screen)
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
191 return FALSE;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
192 mon_cnt++;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
193 return TRUE;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
194 }
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
195
21631
2d3fdf94a50c Fix compilation under MinGW with X11 enabled
reimar
parents: 20972
diff changeset
196 void w32_update_xinerama_info(void) {
18116
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
197 xinerama_x = xinerama_y = 0;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
198 if (xinerama_screen < -1) {
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
199 int tmp;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
200 xinerama_x = GetSystemMetrics(SM_XVIRTUALSCREEN);
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
201 xinerama_y = GetSystemMetrics(SM_YVIRTUALSCREEN);
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
202 tmp = GetSystemMetrics(SM_CXVIRTUALSCREEN);
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
203 if (tmp) vo_screenwidth = tmp;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
204 tmp = GetSystemMetrics(SM_CYVIRTUALSCREEN);
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
205 if (tmp) vo_screenheight = tmp;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
206 } else if (xinerama_screen == -1 && myMonitorFromWindow && myGetMonitorInfo) {
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
207 MONITORINFO mi;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
208 HMONITOR m = myMonitorFromWindow(vo_window, MONITOR_DEFAULTTOPRIMARY);
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
209 mi.cbSize = sizeof(mi);
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
210 myGetMonitorInfo(m, &mi);
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
211 xinerama_x = mi.rcMonitor.left;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
212 xinerama_y = mi.rcMonitor.top;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
213 vo_screenwidth = mi.rcMonitor.right - mi.rcMonitor.left;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
214 vo_screenheight = mi.rcMonitor.bottom - mi.rcMonitor.top;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
215 } else if (xinerama_screen > 0 && myEnumDisplayMonitors) {
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
216 mon_cnt = 0;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
217 myEnumDisplayMonitors(NULL, NULL, mon_enum, 0);
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
218 }
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
219 aspect_save_screenres(vo_screenwidth, vo_screenheight);
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
220 }
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
221
25785
bda4125e24bf Fix some function types from unspecified to empty argument list
reimar
parents: 25719
diff changeset
222 static void updateScreenProperties(void) {
14747
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
223 DEVMODE dm;
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
224 dm.dmSize = sizeof dm;
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
225 dm.dmDriverExtra = 0;
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
226 dm.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
227 if (!EnumDisplaySettings(0, ENUM_CURRENT_SETTINGS, &dm)) {
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
228 mp_msg(MSGT_VO, MSGL_ERR, "vo: win32: unable to enumerate display settings!\n");
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
229 return;
14747
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
230 }
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
231
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
232 vo_screenwidth = dm.dmPelsWidth;
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
233 vo_screenheight = dm.dmPelsHeight;
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
234 vo_depthonscreen = dm.dmBitsPerPel;
21631
2d3fdf94a50c Fix compilation under MinGW with X11 enabled
reimar
parents: 20972
diff changeset
235 w32_update_xinerama_info();
14747
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
236 }
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
237
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
238 static void changeMode(void) {
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
239 DEVMODE dm;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
240 dm.dmSize = sizeof dm;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
241 dm.dmDriverExtra = 0;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
242
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
243 dm.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
244 dm.dmBitsPerPel = vo_depthonscreen;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
245 dm.dmPelsWidth = vo_screenwidth;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
246 dm.dmPelsHeight = vo_screenheight;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
247
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
248 if (vo_vm) {
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
249 int bestMode = -1;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
250 int bestScore = INT_MAX;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
251 int i;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
252 for (i = 0; EnumDisplaySettings(0, i, &dm); ++i) {
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
253 int score = (dm.dmPelsWidth - o_dwidth) * (dm.dmPelsHeight - o_dheight);
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
254 if (dm.dmBitsPerPel != vo_depthonscreen) continue;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
255 if (dm.dmPelsWidth < o_dwidth) continue;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
256 if (dm.dmPelsHeight < o_dheight) continue;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
257
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
258 if (score < bestScore) {
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
259 bestScore = score;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
260 bestMode = i;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
261 }
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
262 }
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
263
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
264 if (bestMode != -1)
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
265 EnumDisplaySettings(0, bestMode, &dm);
14747
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
266
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
267 ChangeDisplaySettings(&dm, CDS_FULLSCREEN);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
268 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
269 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
270
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
271 static void resetMode(void) {
14142
f0c1ee83b216 Improving gl2 under windows, moving some functionality to gl_common
reimar
parents: 13787
diff changeset
272 if (vo_vm)
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
273 ChangeDisplaySettings(0, 0);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
274 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
275
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
276 static int createRenderingContext(void) {
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11479
diff changeset
277 HWND layer = HWND_NOTOPMOST;
16213
917079aa9fee Cleanup, move declarations to beginning of block.
reimar
parents: 16109
diff changeset
278 PIXELFORMATDESCRIPTOR pfd;
24314
20359547f3c3 Remove global vo_hdc, since it is recommended to release a DC as soon as possible.
reimar
parents: 23587
diff changeset
279 HDC vo_hdc = GetDC(vo_window);
17006
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
280 RECT r;
16213
917079aa9fee Cleanup, move declarations to beginning of block.
reimar
parents: 16109
diff changeset
281 int pf;
18948
c2aee29c80b6 Do not fiddle (too much) with external (WinID) windows
reimar
parents: 18927
diff changeset
282 if (WinID < 0) {
17006
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
283 int style = (vo_border && !vo_fs) ?
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
284 (WS_OVERLAPPEDWINDOW | WS_SIZEBOX) : WS_POPUP;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
285
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11479
diff changeset
286 if (vo_fs || vo_ontop) layer = HWND_TOPMOST;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
287 if (vo_fs) {
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
288 changeMode();
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
289 while (ShowCursor(0) >= 0) /**/ ;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
290 } else {
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
291 resetMode();
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
292 while (ShowCursor(1) < 0) /**/ ;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
293 }
14747
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
294 updateScreenProperties();
17006
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
295 ShowWindow(vo_window, SW_HIDE);
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
296 SetWindowLong(vo_window, GWL_STYLE, style);
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
297 if (vo_fs) {
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
298 prev_width = vo_dwidth;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
299 prev_height = vo_dheight;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
300 prev_x = vo_dx;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
301 prev_y = vo_dy;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
302 vo_dwidth = vo_screenwidth;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
303 vo_dheight = vo_screenheight;
18116
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
304 vo_dx = xinerama_x;
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
305 vo_dy = xinerama_y;
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
306 } else {
23587
58bd3640c0c2 Hack around some fullscreen issues with gl under Windows
reimar
parents: 22823
diff changeset
307 // make sure there are no "stale" resize events
58bd3640c0c2 Hack around some fullscreen issues with gl under Windows
reimar
parents: 22823
diff changeset
308 // that would set vo_d* to wrong values
58bd3640c0c2 Hack around some fullscreen issues with gl under Windows
reimar
parents: 22823
diff changeset
309 vo_w32_check_events();
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
310 vo_dwidth = prev_width;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
311 vo_dheight = prev_height;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
312 vo_dx = prev_x;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
313 vo_dy = prev_y;
20657
5fe83dd75490 Hack around Windows focus problem with -vo gl
reimar
parents: 20655
diff changeset
314 // HACK around what probably is a windows focus bug:
5fe83dd75490 Hack around Windows focus problem with -vo gl
reimar
parents: 20655
diff changeset
315 // when pressing 'f' on the console, then 'f' again to
5fe83dd75490 Hack around Windows focus problem with -vo gl
reimar
parents: 20655
diff changeset
316 // return to windowed mode, any input into the video
5fe83dd75490 Hack around Windows focus problem with -vo gl
reimar
parents: 20655
diff changeset
317 // window is lost forever.
5fe83dd75490 Hack around Windows focus problem with -vo gl
reimar
parents: 20655
diff changeset
318 SetFocus(vo_window);
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
319 }
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
320 r.left = vo_dx;
17006
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
321 r.right = r.left + vo_dwidth;
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
322 r.top = vo_dy;
17006
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
323 r.bottom = r.top + vo_dheight;
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
324 AdjustWindowRect(&r, style, 0);
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
325 SetWindowPos(vo_window, layer, r.left, r.top, r.right - r.left, r.bottom - r.top, SWP_SHOWWINDOW);
18948
c2aee29c80b6 Do not fiddle (too much) with external (WinID) windows
reimar
parents: 18927
diff changeset
326 }
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
327
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
328 memset(&pfd, 0, sizeof pfd);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
329 pfd.nSize = sizeof pfd;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
330 pfd.nVersion = 1;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
331 pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
332 pfd.iPixelType = PFD_TYPE_RGBA;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
333 pfd.cColorBits = 24;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
334 pfd.iLayerType = PFD_MAIN_PLANE;
16213
917079aa9fee Cleanup, move declarations to beginning of block.
reimar
parents: 16109
diff changeset
335 pf = ChoosePixelFormat(vo_hdc, &pfd);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
336 if (!pf) {
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
337 mp_msg(MSGT_VO, MSGL_ERR, "vo: win32: unable to select a valid pixel format!\n");
24315
12f2487fb845 Fix compilation after patch to remove global vo_hdc
reimar
parents: 24314
diff changeset
338 ReleaseDC(vo_window, vo_hdc);
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
339 return 0;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
340 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
341
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
342 SetPixelFormat(vo_hdc, pf, &pfd);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
343
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
344 mp_msg(MSGT_VO, MSGL_V, "vo: win32: running at %dx%d with depth %d\n", vo_screenwidth, vo_screenheight, vo_depthonscreen);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
345
24315
12f2487fb845 Fix compilation after patch to remove global vo_hdc
reimar
parents: 24314
diff changeset
346 ReleaseDC(vo_window, vo_hdc);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
347 return 1;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
348 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
349
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
350 int vo_w32_config(uint32_t width, uint32_t height, uint32_t flags) {
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
351 // store original size for videomode switching
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
352 o_dwidth = width;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
353 o_dheight = height;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
354
18987
1f08622dd297 Fix window size bug when starting with -fs and returning
reimar
parents: 18948
diff changeset
355 prev_width = vo_dwidth = width;
1f08622dd297 Fix window size bug when starting with -fs and returning
reimar
parents: 18948
diff changeset
356 prev_height = vo_dheight = height;
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
357 prev_x = vo_dx;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
358 prev_y = vo_dy;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
359
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
360 vo_fs = flags & VOFLAG_FULLSCREEN;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
361 vo_vm = flags & VOFLAG_MODESWITCHING;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
362 return createRenderingContext();
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
363 }
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
364
21631
2d3fdf94a50c Fix compilation under MinGW with X11 enabled
reimar
parents: 20972
diff changeset
365 int vo_w32_init(void) {
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
366 HICON mplayerIcon = 0;
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
367 char exedir[MAX_PATH];
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
368 HINSTANCE user32;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
369
14142
f0c1ee83b216 Improving gl2 under windows, moving some functionality to gl_common
reimar
parents: 13787
diff changeset
370 if (vo_window)
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
371 return 1;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
372
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
373 hInstance = GetModuleHandle(0);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
374
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
375 if (GetModuleFileName(0, exedir, MAX_PATH))
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
376 mplayerIcon = ExtractIcon(hInstance, exedir, 0);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
377 if (!mplayerIcon)
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
378 mplayerIcon = LoadIcon(0, IDI_APPLICATION);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
379
16226
94bb243636e1 10l, initializers don't work without a declaration :-(
reimar
parents: 16213
diff changeset
380 {
25944
8a1c062707ff Do not uselessly erase background, OpenGL will take care of drawing everything.
reimar
parents: 25942
diff changeset
381 WNDCLASSEX wcex = { sizeof wcex, CS_OWNDC | CS_DBLCLKS, WndProc, 0, 0, hInstance, mplayerIcon, LoadCursor(0, IDC_ARROW), NULL, 0, classname, mplayerIcon };
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
382
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
383 if (!RegisterClassEx(&wcex)) {
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
384 mp_msg(MSGT_VO, MSGL_ERR, "vo: win32: unable to register window class!\n");
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
385 return 0;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
386 }
16226
94bb243636e1 10l, initializers don't work without a declaration :-(
reimar
parents: 16213
diff changeset
387 }
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
388
16282
273d33249c25 -wid support for windows. Not well tested, might still behave a bit weird.
reimar
parents: 16226
diff changeset
389 if (WinID >= 0)
25933
9b395b94d6a7 Hack: Create a child window for Windows OpenGL with -wid, since (esp. nVidia)
reimar
parents: 25918
diff changeset
390 {
9b395b94d6a7 Hack: Create a child window for Windows OpenGL with -wid, since (esp. nVidia)
reimar
parents: 25918
diff changeset
391 RECT r;
9b395b94d6a7 Hack: Create a child window for Windows OpenGL with -wid, since (esp. nVidia)
reimar
parents: 25918
diff changeset
392 GetClientRect(WinID, &r);
9b395b94d6a7 Hack: Create a child window for Windows OpenGL with -wid, since (esp. nVidia)
reimar
parents: 25918
diff changeset
393 vo_dwidth = r.right; vo_dheight = r.bottom;
25934
f0e227951c06 Make sure the -wid window does not get notified when we destroy our attached child window.
reimar
parents: 25933
diff changeset
394 vo_window = CreateWindowEx(WS_EX_NOPARENTNOTIFY, classname, classname,
25933
9b395b94d6a7 Hack: Create a child window for Windows OpenGL with -wid, since (esp. nVidia)
reimar
parents: 25918
diff changeset
395 WS_CHILD | WS_VISIBLE,
9b395b94d6a7 Hack: Create a child window for Windows OpenGL with -wid, since (esp. nVidia)
reimar
parents: 25918
diff changeset
396 0, 0, vo_dwidth, vo_dheight, WinID, 0, hInstance, 0);
9b395b94d6a7 Hack: Create a child window for Windows OpenGL with -wid, since (esp. nVidia)
reimar
parents: 25918
diff changeset
397 } else
17006
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
398 vo_window = CreateWindowEx(0, classname, classname,
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
399 vo_border ? (WS_OVERLAPPEDWINDOW | WS_SIZEBOX) : WS_POPUP,
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
400 CW_USEDEFAULT, 0, 100, 100, 0, 0, hInstance, 0);
14142
f0c1ee83b216 Improving gl2 under windows, moving some functionality to gl_common
reimar
parents: 13787
diff changeset
401 if (!vo_window) {
22416
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
402 mp_msg(MSGT_VO, MSGL_ERR, "vo: win32: unable to create window!\n");
02783a09e1b3 Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents: 22415
diff changeset
403 return 0;
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
404 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
405
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
406 myMonitorFromWindow = NULL;
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
407 myGetMonitorInfo = NULL;
18116
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
408 myEnumDisplayMonitors = NULL;
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
409 user32 = GetModuleHandle("user32.dll");
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
410 if (user32) {
25787
143989c7a3bf Avoid some pointer conversion warnings (the code is messy but not wrong)
reimar
parents: 25785
diff changeset
411 myMonitorFromWindow = (void *)GetProcAddress(user32, "MonitorFromWindow");
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
412 myGetMonitorInfo = GetProcAddress(user32, "GetMonitorInfoA");
18116
d75953576ae4 Fix and improve xinerama support
reimar
parents: 18089
diff changeset
413 myEnumDisplayMonitors = GetProcAddress(user32, "EnumDisplayMonitors");
18079
f57317460375 fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents: 17126
diff changeset
414 }
14747
d87cc822b343 Remove a lot of duplicate code
reimar
parents: 14142
diff changeset
415 updateScreenProperties();
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
416
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
417 return 1;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
418 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
419
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
420 void vo_w32_fullscreen(void) {
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
421 vo_fs = !vo_fs;
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
422
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
423 createRenderingContext();
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
424 }
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
425
25785
bda4125e24bf Fix some function types from unspecified to empty argument list
reimar
parents: 25719
diff changeset
426 void vo_w32_border(void) {
17006
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
427 vo_border = !vo_border;
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
428 createRenderingContext();
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
429 }
852499addaa8 Enable border toggling for gl and gl2 under windows.
reimar
parents: 16892
diff changeset
430
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11479
diff changeset
431 void vo_w32_ontop( void )
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11479
diff changeset
432 {
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11479
diff changeset
433 vo_ontop = !vo_ontop;
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11479
diff changeset
434 if (!vo_fs) {
25719
a6cc5f6799cb Fix the bug where the window would become smaller each time vo_ontop is toggled.
reimar
parents: 24315
diff changeset
435 createRenderingContext();
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11479
diff changeset
436 }
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11479
diff changeset
437 }
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11479
diff changeset
438
25785
bda4125e24bf Fix some function types from unspecified to empty argument list
reimar
parents: 25719
diff changeset
439 void vo_w32_uninit(void) {
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
440 mp_msg(MSGT_VO, MSGL_V, "vo: win32: uninit\n");
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
441 resetMode();
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
442 ShowCursor(1);
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
443 vo_depthonscreen = 0;
14142
f0c1ee83b216 Improving gl2 under windows, moving some functionality to gl_common
reimar
parents: 13787
diff changeset
444 DestroyWindow(vo_window);
f0c1ee83b216 Improving gl2 under windows, moving some functionality to gl_common
reimar
parents: 13787
diff changeset
445 vo_window = 0;
11479
5d76d070b44b change vo_w32_fullscreen to behave like vo_x11_fullscreen patch by Reimar Doeffinger <someone-guy at gmx.de>
faust3
parents: 10880
diff changeset
446 UnregisterClass(classname, 0);
10880
ba9557e864c0 vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff changeset
447 }