Mercurial > mplayer.hg
annotate libvo/w32_common.c @ 24953:aca7d0259d90
Fix the prevent system idle code. Original code also works, but not as expected.
The update function was always called, but it should only be called every 30
seconds.
author | ulion |
---|---|
date | Tue, 06 Nov 2007 12:40:04 +0000 |
parents | 12f2487fb845 |
children | a6cc5f6799cb |
rev | line source |
---|---|
22423 | 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 | 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 | 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 |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
21 static const char* classname = "MPlayer - Media player for Win32"; |
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 |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
25 int prev_width; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
26 int prev_height; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
27 int prev_x; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
28 int prev_y; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
29 |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
30 uint32_t o_dwidth; |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
31 uint32_t o_dheight; |
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 | 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 | 36 static int event_flags; |
18116 | 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 | 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; |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
46 switch (message) { |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
47 case WM_PAINT: |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
48 event_flags |= VO_EVENT_EXPOSE; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
49 break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
50 case WM_MOVE: |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
51 p.x = 0; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
52 p.y = 0; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
53 ClientToScreen(vo_window, &p); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
54 vo_dx = p.x; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
55 vo_dy = p.y; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
56 break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
57 case WM_SIZE: |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
58 event_flags |= VO_EVENT_RESIZE; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
59 GetClientRect(vo_window, &r); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
60 vo_dwidth = r.right; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
61 vo_dheight = r.bottom; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
62 break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
63 case WM_WINDOWPOSCHANGING: |
18927
278eaf3ed5d8
Convince windows to allow window sizes > screen size
reimar
parents:
18116
diff
changeset
|
64 return 0; |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
65 case WM_CLOSE: |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
66 mplayer_put_key(KEY_CLOSE_WIN); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
67 break; |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
68 case WM_SYSCOMMAND: |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
69 switch (wParam) { |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
70 case SC_SCREENSAVE: |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
71 case SC_MONITORPOWER: |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
72 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
|
73 return 0; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
74 } |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
75 break; |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
76 case WM_KEYDOWN: |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
77 switch (wParam) { |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
78 case VK_LEFT: mplayer_put_key(KEY_LEFT); break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
79 case VK_UP: mplayer_put_key(KEY_UP); break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
80 case VK_RIGHT: mplayer_put_key(KEY_RIGHT); break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
81 case VK_DOWN: mplayer_put_key(KEY_DOWN); break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
82 case VK_TAB: mplayer_put_key(KEY_TAB); break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
83 case VK_CONTROL: mplayer_put_key(KEY_CTRL); break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
84 case VK_BACK: mplayer_put_key(KEY_BS); break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
85 case VK_DELETE: mplayer_put_key(KEY_DELETE); break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
86 case VK_INSERT: mplayer_put_key(KEY_INSERT); break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
87 case VK_HOME: mplayer_put_key(KEY_HOME); break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
88 case VK_END: mplayer_put_key(KEY_END); break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
89 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
|
90 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
|
91 case VK_ESCAPE: mplayer_put_key(KEY_ESC); break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
92 } |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
93 break; |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
94 case WM_CHAR: |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
95 mplayer_put_key(wParam); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
96 break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
97 case WM_LBUTTONDOWN: |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
98 if (!vo_nomouse_input && (vo_fs || (wParam & MK_CONTROL))) { |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
99 mplayer_put_key(MOUSE_BTN0); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
100 break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
101 } |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
102 if (!vo_fs) { |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
103 ReleaseCapture(); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
104 SendMessage(hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
105 return 0; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
106 } |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
107 break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
108 case WM_MBUTTONDOWN: |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
109 if (!vo_nomouse_input) |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
110 mplayer_put_key(MOUSE_BTN1); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
111 break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
112 case WM_RBUTTONDOWN: |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
113 if (!vo_nomouse_input) |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
114 mplayer_put_key(MOUSE_BTN2); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
115 break; |
22423 | 116 case WM_MOUSEMOVE: |
117 if (enable_mouse_movements) { | |
118 char cmd_str[40]; | |
119 snprintf(cmd_str, sizeof(cmd_str), "set_mouse_pos %i %i", | |
120 GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam)); | |
121 mp_input_queue_cmd(mp_input_parse_cmd(cmd_str)); | |
122 } | |
123 break; | |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
124 case WM_MOUSEWHEEL: |
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 int x = GET_WHEEL_DELTA_WPARAM(wParam); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
127 if (x > 0) |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
128 mplayer_put_key(MOUSE_BTN3); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
129 else |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
130 mplayer_put_key(MOUSE_BTN4); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
131 break; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
132 } |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
133 } |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
134 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
135 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
|
136 } |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
137 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
138 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
|
139 MSG msg; |
17115 | 140 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
|
141 while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) { |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
142 TranslateMessage(&msg); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
143 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
|
144 } |
22415
c36b8d705d08
Generate resize events when size of -wid window changes.
reimar
parents:
21631
diff
changeset
|
145 if (WinID >= 0) { |
c36b8d705d08
Generate resize events when size of -wid window changes.
reimar
parents:
21631
diff
changeset
|
146 RECT r; |
c36b8d705d08
Generate resize events when size of -wid window changes.
reimar
parents:
21631
diff
changeset
|
147 GetClientRect(vo_window, &r); |
c36b8d705d08
Generate resize events when size of -wid window changes.
reimar
parents:
21631
diff
changeset
|
148 if (r.right != vo_dwidth || r.bottom != vo_dheight) |
c36b8d705d08
Generate resize events when size of -wid window changes.
reimar
parents:
21631
diff
changeset
|
149 event_flags |= VO_EVENT_RESIZE; |
c36b8d705d08
Generate resize events when size of -wid window changes.
reimar
parents:
21631
diff
changeset
|
150 vo_dwidth = r.right; |
c36b8d705d08
Generate resize events when size of -wid window changes.
reimar
parents:
21631
diff
changeset
|
151 vo_dheight = r.bottom; |
c36b8d705d08
Generate resize events when size of -wid window changes.
reimar
parents:
21631
diff
changeset
|
152 } |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
153 |
17115 | 154 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
|
155 } |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
156 |
18116 | 157 static BOOL CALLBACK mon_enum(HMONITOR hmon, HDC hdc, LPRECT r, LPARAM p) { |
158 // this defaults to the last screen if specified number does not exist | |
159 xinerama_x = r->left; | |
160 xinerama_y = r->top; | |
161 vo_screenwidth = r->right - r->left; | |
162 vo_screenheight = r->bottom - r->top; | |
163 if (mon_cnt == xinerama_screen) | |
164 return FALSE; | |
165 mon_cnt++; | |
166 return TRUE; | |
167 } | |
168 | |
21631 | 169 void w32_update_xinerama_info(void) { |
18116 | 170 xinerama_x = xinerama_y = 0; |
171 if (xinerama_screen < -1) { | |
172 int tmp; | |
173 xinerama_x = GetSystemMetrics(SM_XVIRTUALSCREEN); | |
174 xinerama_y = GetSystemMetrics(SM_YVIRTUALSCREEN); | |
175 tmp = GetSystemMetrics(SM_CXVIRTUALSCREEN); | |
176 if (tmp) vo_screenwidth = tmp; | |
177 tmp = GetSystemMetrics(SM_CYVIRTUALSCREEN); | |
178 if (tmp) vo_screenheight = tmp; | |
179 } else if (xinerama_screen == -1 && myMonitorFromWindow && myGetMonitorInfo) { | |
180 MONITORINFO mi; | |
181 HMONITOR m = myMonitorFromWindow(vo_window, MONITOR_DEFAULTTOPRIMARY); | |
182 mi.cbSize = sizeof(mi); | |
183 myGetMonitorInfo(m, &mi); | |
184 xinerama_x = mi.rcMonitor.left; | |
185 xinerama_y = mi.rcMonitor.top; | |
186 vo_screenwidth = mi.rcMonitor.right - mi.rcMonitor.left; | |
187 vo_screenheight = mi.rcMonitor.bottom - mi.rcMonitor.top; | |
188 } else if (xinerama_screen > 0 && myEnumDisplayMonitors) { | |
189 mon_cnt = 0; | |
190 myEnumDisplayMonitors(NULL, NULL, mon_enum, 0); | |
191 } | |
192 aspect_save_screenres(vo_screenwidth, vo_screenheight); | |
193 } | |
194 | |
14747 | 195 static void updateScreenProperties() { |
196 DEVMODE dm; | |
197 dm.dmSize = sizeof dm; | |
198 dm.dmDriverExtra = 0; | |
199 dm.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; | |
200 if (!EnumDisplaySettings(0, ENUM_CURRENT_SETTINGS, &dm)) { | |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
201 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
|
202 return; |
14747 | 203 } |
204 | |
205 vo_screenwidth = dm.dmPelsWidth; | |
206 vo_screenheight = dm.dmPelsHeight; | |
207 vo_depthonscreen = dm.dmBitsPerPel; | |
21631 | 208 w32_update_xinerama_info(); |
14747 | 209 } |
210 | |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
211 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
|
212 DEVMODE dm; |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
213 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
|
214 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
|
215 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
216 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
|
217 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
|
218 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
|
219 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
|
220 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
221 if (vo_vm) { |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
222 int bestMode = -1; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
223 int bestScore = INT_MAX; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
224 int i; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
225 for (i = 0; EnumDisplaySettings(0, i, &dm); ++i) { |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
226 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
|
227 if (dm.dmBitsPerPel != vo_depthonscreen) continue; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
228 if (dm.dmPelsWidth < o_dwidth) continue; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
229 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
|
230 |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
231 if (score < bestScore) { |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
232 bestScore = score; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
233 bestMode = i; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
234 } |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
235 } |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
236 |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
237 if (bestMode != -1) |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
238 EnumDisplaySettings(0, bestMode, &dm); |
14747 | 239 |
240 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
|
241 } |
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 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
244 static void resetMode(void) { |
14142
f0c1ee83b216
Improving gl2 under windows, moving some functionality to gl_common
reimar
parents:
13787
diff
changeset
|
245 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
|
246 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
|
247 } |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
248 |
18079
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
249 static int createRenderingContext(void) { |
11542 | 250 HWND layer = HWND_NOTOPMOST; |
16213 | 251 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
|
252 HDC vo_hdc = GetDC(vo_window); |
17006
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
253 RECT r; |
16213 | 254 int pf; |
18948
c2aee29c80b6
Do not fiddle (too much) with external (WinID) windows
reimar
parents:
18927
diff
changeset
|
255 if (WinID < 0) { |
17006
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
256 int style = (vo_border && !vo_fs) ? |
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
257 (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
|
258 |
11542 | 259 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
|
260 if (vo_fs) { |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
261 changeMode(); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
262 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
|
263 } else { |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
264 resetMode(); |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
265 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
|
266 } |
14747 | 267 updateScreenProperties(); |
17006
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
268 ShowWindow(vo_window, SW_HIDE); |
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
269 SetWindowLong(vo_window, GWL_STYLE, style); |
18079
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
270 if (vo_fs) { |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
271 prev_width = vo_dwidth; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
272 prev_height = vo_dheight; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
273 prev_x = vo_dx; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
274 prev_y = vo_dy; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
275 vo_dwidth = vo_screenwidth; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
276 vo_dheight = vo_screenheight; |
18116 | 277 vo_dx = xinerama_x; |
278 vo_dy = xinerama_y; | |
18079
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
279 } else { |
23587
58bd3640c0c2
Hack around some fullscreen issues with gl under Windows
reimar
parents:
22823
diff
changeset
|
280 // make sure there are no "stale" resize events |
58bd3640c0c2
Hack around some fullscreen issues with gl under Windows
reimar
parents:
22823
diff
changeset
|
281 // that would set vo_d* to wrong values |
58bd3640c0c2
Hack around some fullscreen issues with gl under Windows
reimar
parents:
22823
diff
changeset
|
282 vo_w32_check_events(); |
18079
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
283 vo_dwidth = prev_width; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
284 vo_dheight = prev_height; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
285 vo_dx = prev_x; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
286 vo_dy = prev_y; |
20657 | 287 // HACK around what probably is a windows focus bug: |
288 // when pressing 'f' on the console, then 'f' again to | |
289 // return to windowed mode, any input into the video | |
290 // window is lost forever. | |
291 SetFocus(vo_window); | |
18079
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
292 } |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
293 r.left = vo_dx; |
17006
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
294 r.right = r.left + vo_dwidth; |
18079
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
295 r.top = vo_dy; |
17006
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
296 r.bottom = r.top + vo_dheight; |
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
297 AdjustWindowRect(&r, style, 0); |
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
298 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
|
299 } |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
300 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
301 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
|
302 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
|
303 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
|
304 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
|
305 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
|
306 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
|
307 pfd.iLayerType = PFD_MAIN_PLANE; |
16213 | 308 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
|
309 if (!pf) { |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
310 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
|
311 ReleaseDC(vo_window, vo_hdc); |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
312 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
|
313 } |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
314 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
315 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
|
316 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
317 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
|
318 |
24315
12f2487fb845
Fix compilation after patch to remove global vo_hdc
reimar
parents:
24314
diff
changeset
|
319 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
|
320 return 1; |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
321 } |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
322 |
18079
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
323 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
|
324 // store original size for videomode switching |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
325 o_dwidth = width; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
326 o_dheight = height; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
327 |
18987
1f08622dd297
Fix window size bug when starting with -fs and returning
reimar
parents:
18948
diff
changeset
|
328 prev_width = vo_dwidth = width; |
1f08622dd297
Fix window size bug when starting with -fs and returning
reimar
parents:
18948
diff
changeset
|
329 prev_height = vo_dheight = height; |
18079
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
330 prev_x = vo_dx; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
331 prev_y = vo_dy; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
332 |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
333 vo_fs = flags & VOFLAG_FULLSCREEN; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
334 vo_vm = flags & VOFLAG_MODESWITCHING; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
335 return createRenderingContext(); |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
336 } |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
337 |
21631 | 338 int vo_w32_init(void) { |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
339 HICON mplayerIcon = 0; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
340 char exedir[MAX_PATH]; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
341 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
|
342 |
14142
f0c1ee83b216
Improving gl2 under windows, moving some functionality to gl_common
reimar
parents:
13787
diff
changeset
|
343 if (vo_window) |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
344 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
|
345 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
346 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
|
347 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
348 if (GetModuleFileName(0, exedir, MAX_PATH)) |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
349 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
|
350 if (!mplayerIcon) |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
351 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
|
352 |
16226
94bb243636e1
10l, initializers don't work without a declaration :-(
reimar
parents:
16213
diff
changeset
|
353 { |
94bb243636e1
10l, initializers don't work without a declaration :-(
reimar
parents:
16213
diff
changeset
|
354 WNDCLASSEX wcex = { sizeof wcex, CS_OWNDC, WndProc, 0, 0, hInstance, mplayerIcon, LoadCursor(0, IDC_ARROW), (HBRUSH)GetStockObject(BLACK_BRUSH), 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
|
355 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
356 if (!RegisterClassEx(&wcex)) { |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
357 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
|
358 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
|
359 } |
16226
94bb243636e1
10l, initializers don't work without a declaration :-(
reimar
parents:
16213
diff
changeset
|
360 } |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
361 |
16282
273d33249c25
-wid support for windows. Not well tested, might still behave a bit weird.
reimar
parents:
16226
diff
changeset
|
362 if (WinID >= 0) |
273d33249c25
-wid support for windows. Not well tested, might still behave a bit weird.
reimar
parents:
16226
diff
changeset
|
363 vo_window = WinID; |
273d33249c25
-wid support for windows. Not well tested, might still behave a bit weird.
reimar
parents:
16226
diff
changeset
|
364 else { |
17006
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
365 vo_window = CreateWindowEx(0, classname, classname, |
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
366 vo_border ? (WS_OVERLAPPEDWINDOW | WS_SIZEBOX) : WS_POPUP, |
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
367 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
|
368 if (!vo_window) { |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
369 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
|
370 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
|
371 } |
16282
273d33249c25
-wid support for windows. Not well tested, might still behave a bit weird.
reimar
parents:
16226
diff
changeset
|
372 } |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
373 |
18079
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
374 myMonitorFromWindow = NULL; |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
375 myGetMonitorInfo = NULL; |
18116 | 376 myEnumDisplayMonitors = NULL; |
18079
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
377 user32 = GetModuleHandle("user32.dll"); |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
378 if (user32) { |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
379 myMonitorFromWindow = GetProcAddress(user32, "MonitorFromWindow"); |
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
380 myGetMonitorInfo = GetProcAddress(user32, "GetMonitorInfoA"); |
18116 | 381 myEnumDisplayMonitors = GetProcAddress(user32, "EnumDisplayMonitors"); |
18079
f57317460375
fixes and cleanup for windows fullscreen switching (restore old position,
reimar
parents:
17126
diff
changeset
|
382 } |
14747 | 383 updateScreenProperties(); |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
384 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
385 return 1; |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
386 } |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
387 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
388 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
|
389 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
|
390 |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
391 createRenderingContext(); |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
392 } |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
393 |
17006
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
394 void vo_w32_border() { |
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
395 vo_border = !vo_border; |
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
396 createRenderingContext(); |
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
397 } |
852499addaa8
Enable border toggling for gl and gl2 under windows.
reimar
parents:
16892
diff
changeset
|
398 |
11542 | 399 void vo_w32_ontop( void ) |
400 { | |
401 vo_ontop = !vo_ontop; | |
402 if (!vo_fs) { | |
22416
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
403 HWND layer = HWND_NOTOPMOST; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
404 if (vo_ontop) layer = HWND_TOPMOST; |
02783a09e1b3
Whitespace-only cosmetics: get rid of all remaining tabs
reimar
parents:
22415
diff
changeset
|
405 SetWindowPos(vo_window, layer, (vo_screenwidth - vo_dwidth) / 2, (vo_screenheight - vo_dheight) / 2, vo_dwidth, vo_dheight, SWP_SHOWWINDOW); |
11542 | 406 } |
407 } | |
408 | |
10880
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
409 void vo_w32_uninit() { |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
410 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
|
411 resetMode(); |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
412 ShowCursor(1); |
ba9557e864c0
vo_gl2 port to win32 patch by Tristan Seligmann <mithrandi-mplayer-dev-eng at mithrandi.za.net>
faust3
parents:
diff
changeset
|
413 vo_depthonscreen = 0; |
16288
1cb19a114eb8
DestroyWindow must be used when -wid was not given, so for WinID < 0, not >=0
reimar
parents:
16282
diff
changeset
|
414 if (WinID < 0) |
14142
f0c1ee83b216
Improving gl2 under windows, moving some functionality to gl_common
reimar
parents:
13787
diff
changeset
|
415 DestroyWindow(vo_window); |
f0c1ee83b216
Improving gl2 under windows, moving some functionality to gl_common
reimar
parents:
13787
diff
changeset
|
416 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
|
417 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
|
418 } |