annotate libvo/vo_directx.c @ 29851:eaa7bfc52c2c

Set the EOF flag when dvdnav reached the end of the requested title. Otherwise it would just hang, either at the menu or trying to play the last played frame as a still frame.
author reimar
date Wed, 11 Nov 2009 09:09:08 +0000
parents 0f1b5b68af32
children a33cf9c69731
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26739
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
1 /*
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
2 * Directx v2 or later DirectDraw interface
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
3 *
26739
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
4 * Copyright (c) 2002 - 2005 Sascha Sommer <saschasommer@freenet.de>
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
5 *
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
6 * This file is part of MPlayer.
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
7 *
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
8 * MPlayer is free software; you can redistribute it and/or modify
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
11 * (at your option) any later version.
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
12 *
26739
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
13 * MPlayer is distributed in the hope that it will be useful,
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
16 * GNU General Public License for more details.
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
17 *
26739
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
18 * You should have received a copy of the GNU General Public License along
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
19 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2a34d9fa52ab Use standard license headers with standard formatting.
diego
parents: 25962
diff changeset
21 */
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
22
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
23 #include <windows.h>
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
24 #include <windowsx.h>
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
25 #include <ddraw.h>
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
26 #include <stdio.h>
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
27 #include <stdlib.h>
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
28 #include <errno.h>
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
29 #include "config.h"
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
30 #include "video_out.h"
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
31 #include "video_out_internal.h"
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
32 #include "fastmemcpy.h"
13787
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13775
diff changeset
33 #include "input/input.h"
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13775
diff changeset
34 #include "osdep/keycodes.h"
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13775
diff changeset
35 #include "input/mouse.h"
e047e70a9767 Handle "xxx.h" vs "../xxx.h" include paths in a consistent way.
diego
parents: 13775
diff changeset
36 #include "mp_msg.h"
8519
ebd7934c8f1f 10l and correct aspect
faust3
parents: 8495
diff changeset
37 #include "aspect.h"
10900
1af259afe553 use vo_fs + geometry support
faust3
parents: 10647
diff changeset
38 #include "geometry.h"
22823
98eaf29b5dee Code cleanup: don't include a .c file in mplayer.c and fix a few
rathann
parents: 22459
diff changeset
39 #include "mp_fifo.h"
28121
2a6dfdf16b6b #include sub.h instead of locally declaring vo_draw_text().
diego
parents: 28051
diff changeset
40 #include "sub.h"
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
41
27343
5fe6a8adf569 Rename two GUI-related preprocessor directives:
diego
parents: 26739
diff changeset
42 #ifdef CONFIG_GUI
23077
17bf4f4b0715 Gui --> gui
diego
parents: 22823
diff changeset
43 #include "gui/interface.h"
18913
2dc84d07332c Initial win32 gui release.
vayne
parents: 17870
diff changeset
44 #endif
2dc84d07332c Initial win32 gui release.
vayne
parents: 17870
diff changeset
45
13157
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
46 #ifndef WM_XBUTTONDOWN
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
47 # define WM_XBUTTONDOWN 0x020B
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
48 # define WM_XBUTTONUP 0x020C
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
49 # define WM_XBUTTONDBLCLK 0x020D
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
50 #endif
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
51
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
52 #define WNDCLASSNAME_WINDOWED "MPlayer - The Movie Player"
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
53 #define WNDCLASSNAME_FULLSCREEN "MPlayer - Fullscreen"
16966
46490266341d move window style to a macro for easier maintaining
joey
parents: 16892
diff changeset
54 #define WNDSTYLE WS_OVERLAPPEDWINDOW|WS_SIZEBOX
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
55
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
56 static LPDIRECTDRAWCOLORCONTROL g_cc = NULL; //color control interface
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
57 static LPDIRECTDRAW7 g_lpdd = NULL; //DirectDraw Object
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
58 static LPDIRECTDRAWSURFACE7 g_lpddsPrimary = NULL; //Primary Surface: viewport through the Desktop
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
59 static LPDIRECTDRAWSURFACE7 g_lpddsOverlay = NULL; //Overlay Surface
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
60 static LPDIRECTDRAWSURFACE7 g_lpddsBack = NULL; //Back surface
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
61 static LPDIRECTDRAWCLIPPER g_lpddclipper; //clipper object, can only be used without overlay
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
62 static DDSURFACEDESC2 ddsdsf; //surface descripiton needed for locking
7778
f804db78f704 10l - noticed by Soeren Mueller <soeren.mueller at webwasher.com>
faust3
parents: 7713
diff changeset
63 static HINSTANCE hddraw_dll; //handle to ddraw.dll
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
64 static RECT rd; //rect of our stretched image
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
65 static RECT rs; //rect of our source image
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
66 static HWND hWnd=NULL; //handle to the window
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
67 static HWND hWndFS=NULL; //fullscreen window
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
68 static HBRUSH colorbrush = NULL; // Handle to colorkey brush
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
69 static HBRUSH blackbrush = NULL; // Handle to black brush
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
70 static HICON mplayericon = NULL; // Handle to mplayer icon
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
71 static HCURSOR mplayercursor = NULL; // Handle to mplayer cursor
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
72 static uint32_t image_width, image_height; //image width and height
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
73 static uint32_t d_image_width, d_image_height; //image width and height zoomed
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
74 static uint8_t *image=NULL; //image data
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
75 static void* tmp_image = NULL;
10640
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
76 static uint32_t image_format=0; //image format
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
77 static uint32_t primary_image_format;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
78 static uint32_t vm_height=0;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
79 static uint32_t vm_width=0;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
80 static uint32_t vm_bpp=0;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
81 static uint32_t dstride; //surface stride
7682
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
82 static uint32_t nooverlay = 0; //NonOverlay mode
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
83 static DWORD destcolorkey; //colorkey for our surface
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
84 static COLORREF windowcolor = RGB(0,0,16); //windowcolor == colorkey
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
85 static int adapter_count=0;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
86 static GUID selected_guid;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
87 static GUID *selected_guid_ptr = NULL;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
88 static RECT monitor_rect; //monitor coordinates
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
89 static float window_aspect;
14253
6c9f27a5ea02 win95 does not support GetMonitorInfo
faust3
parents: 14223
diff changeset
90 static BOOL (WINAPI* myGetMonitorInfo)(HMONITOR, LPMONITORINFO) = NULL;
17853
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
91 static RECT last_rect = {0xDEADC0DE, 0xDEADC0DE, 0xDEADC0DE, 0xDEADC0DE};
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
92
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
93 extern int vidmode;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
94
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
95 /*****************************************************************************
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
96 * DirectDraw GUIDs.
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
97 * Defining them here allows us to get rid of the dxguid library during
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
98 * the linking stage.
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
99 *****************************************************************************/
15690
1b3f0f7aa994 match the declaration in the includes to make it compile with gcc 4.1, patch by Gianluigi Tiesi <mplayer at netfarm.it>
faust3
parents: 15428
diff changeset
100 const GUID IID_IDirectDraw7 =
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
101 {
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
102 0x15e65ec0,0x3b9c,0x11d2,{0xb9,0x2f,0x00,0x60,0x97,0x97,0xea,0x5b}
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
103 };
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
104
15690
1b3f0f7aa994 match the declaration in the includes to make it compile with gcc 4.1, patch by Gianluigi Tiesi <mplayer at netfarm.it>
faust3
parents: 15428
diff changeset
105 const GUID IID_IDirectDrawColorControl =
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
106 {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
107 0x4b9f0ee0,0x0d7e,0x11d0,{0x9b,0x06,0x00,0xa0,0xc9,0x03,0xa3,0xb8}
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
108 };
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
109
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
110
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
111 typedef struct directx_fourcc_caps
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
112 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
113 char* img_format_name; //human readable name
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
114 uint32_t img_format; //as MPlayer image format
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
115 uint32_t drv_caps; //what hw supports with this format
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
116 DDPIXELFORMAT g_ddpfOverlay; //as Directx Sourface description
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
117 } directx_fourcc_caps;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
118
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
119
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
120 static directx_fourcc_caps g_ddpf[] =
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
121 {
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
122 {"YV12 ",IMGFMT_YV12 ,0,{sizeof(DDPIXELFORMAT), DDPF_FOURCC,MAKEFOURCC('Y','V','1','2'),0,0,0,0,0}},
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
123 {"I420 ",IMGFMT_I420 ,0,{sizeof(DDPIXELFORMAT), DDPF_FOURCC,MAKEFOURCC('I','4','2','0'),0,0,0,0,0}}, //yv12 with swapped uv
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
124 {"IYUV ",IMGFMT_IYUV ,0,{sizeof(DDPIXELFORMAT), DDPF_FOURCC,MAKEFOURCC('I','Y','U','V'),0,0,0,0,0}}, //same as i420
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
125 {"YVU9 ",IMGFMT_YVU9 ,0,{sizeof(DDPIXELFORMAT), DDPF_FOURCC,MAKEFOURCC('Y','V','U','9'),0,0,0,0,0}},
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
126 {"YUY2 ",IMGFMT_YUY2 ,0,{sizeof(DDPIXELFORMAT), DDPF_FOURCC,MAKEFOURCC('Y','U','Y','2'),0,0,0,0,0}},
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
127 {"UYVY ",IMGFMT_UYVY ,0,{sizeof(DDPIXELFORMAT), DDPF_FOURCC,MAKEFOURCC('U','Y','V','Y'),0,0,0,0,0}},
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
128 {"BGR8 ",IMGFMT_BGR8 ,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 8, 0x00000000, 0x00000000, 0x00000000, 0}},
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
129 {"RGB15",IMGFMT_RGB15,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 16, 0x0000001F, 0x000003E0, 0x00007C00, 0}}, //RGB 5:5:5
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
130 {"BGR15",IMGFMT_BGR15,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 16, 0x00007C00, 0x000003E0, 0x0000001F, 0}},
10647
820ce9b724a3 fix RGB16 vs BGR16 mismatch
faust3
parents: 10640
diff changeset
131 {"RGB16",IMGFMT_RGB16,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 16, 0x0000001F, 0x000007E0, 0x0000F800, 0}}, //RGB 5:6:5
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
132 {"BGR16",IMGFMT_BGR16,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 16, 0x0000F800, 0x000007E0, 0x0000001F, 0}},
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
133 {"RGB24",IMGFMT_RGB24,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 24, 0x000000FF, 0x0000FF00, 0x00FF0000, 0}},
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
134 {"BGR24",IMGFMT_BGR24,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 24, 0x00FF0000, 0x0000FF00, 0x000000FF, 0}},
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
135 {"RGB32",IMGFMT_RGB32,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 32, 0x000000FF, 0x0000FF00, 0x00FF0000, 0}},
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
136 {"BGR32",IMGFMT_BGR32,0,{sizeof(DDPIXELFORMAT), DDPF_RGB, 0, 32, 0x00FF0000, 0x0000FF00, 0x000000FF, 0}}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
137 };
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
138 #define NUM_FORMATS (sizeof(g_ddpf) / sizeof(g_ddpf[0]))
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
139
25216
3aee342be929 Make vo info structs const
reimar
parents: 24840
diff changeset
140 static const vo_info_t info =
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
141 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
142 "Directx DDraw YUV/RGB/BGR renderer",
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
143 "directx",
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
144 "Sascha Sommer <saschasommer@freenet.de>",
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
145 ""
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
146 };
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
147
25220
c9e9ac2008c2 Mark the vo_functions_t definitions as const where possible.
reimar
parents: 25216
diff changeset
148 const LIBVO_EXTERN(directx)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
149
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
150 static void draw_alpha(int x0, int y0, int w, int h, unsigned char *src,
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
151 unsigned char *srca, int stride)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
152 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
153 switch(image_format) {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
154 case IMGFMT_YV12 :
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
155 case IMGFMT_I420 :
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
156 case IMGFMT_IYUV :
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
157 case IMGFMT_YVU9 :
8495
a23489e72ef0 10l - my system is very tolerant it seems
faust3
parents: 8490
diff changeset
158 vo_draw_alpha_yv12(w,h,src,srca,stride,((uint8_t *) image) + dstride*y0 + x0,dstride);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
159 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
160 case IMGFMT_YUY2 :
8495
a23489e72ef0 10l - my system is very tolerant it seems
faust3
parents: 8490
diff changeset
161 vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) image)+ dstride*y0 + 2*x0 ,dstride);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
162 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
163 case IMGFMT_UYVY :
8495
a23489e72ef0 10l - my system is very tolerant it seems
faust3
parents: 8490
diff changeset
164 vo_draw_alpha_yuy2(w,h,src,srca,stride,((uint8_t *) image) + dstride*y0 + 2*x0 + 1,dstride);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
165 break;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
166 case IMGFMT_RGB15:
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
167 case IMGFMT_BGR15:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
168 vo_draw_alpha_rgb15(w,h,src,srca,stride,((uint8_t *) image)+dstride*y0+2*x0,dstride);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
169 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
170 case IMGFMT_RGB16:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
171 case IMGFMT_BGR16:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
172 vo_draw_alpha_rgb16(w,h,src,srca,stride,((uint8_t *) image)+dstride*y0+2*x0,dstride);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
173 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
174 case IMGFMT_RGB24:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
175 case IMGFMT_BGR24:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
176 vo_draw_alpha_rgb24(w,h,src,srca,stride,((uint8_t *) image)+dstride*y0+4*x0,dstride);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
177 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
178 case IMGFMT_RGB32:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
179 case IMGFMT_BGR32:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
180 vo_draw_alpha_rgb32(w,h,src,srca,stride,((uint8_t *) image)+dstride*y0+4*x0,dstride);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
181 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
182 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
183 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
184
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
185 static void draw_osd(void)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
186 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
187 vo_draw_text(image_width,image_height,draw_alpha);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
188 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
189
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15690
diff changeset
190 static int
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
191 query_format(uint32_t format)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
192 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
193 uint32_t i=0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
194 while ( i < NUM_FORMATS )
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
195 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
196 if (g_ddpf[i].img_format == format)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
197 return g_ddpf[i].drv_caps;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
198 i++;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
199 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
200 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
201 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
202
29212
eda346733b8c Add missing 'void' to parameterless function declarations.
diego
parents: 28121
diff changeset
203 static uint32_t Directx_CreatePrimarySurface(void)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
204 {
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
205 DDSURFACEDESC2 ddsd;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
206 //cleanup
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
207 if(g_lpddsPrimary)g_lpddsPrimary->lpVtbl->Release(g_lpddsPrimary);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
208 g_lpddsPrimary=NULL;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
209
12021
cd33d1e3b709 move refreshrate and adapter_num variables to video_out because they might be usefull for other drivers, too
faust3
parents: 12020
diff changeset
210 if(vidmode)g_lpdd->lpVtbl->SetDisplayMode(g_lpdd,vm_width,vm_height,vm_bpp,vo_refresh_rate,0);
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
211 ZeroMemory(&ddsd, sizeof(ddsd));
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
212 ddsd.dwSize = sizeof(ddsd);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
213 //set flags and create a primary surface.
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
214 ddsd.dwFlags = DDSD_CAPS;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
215 ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
216 if(g_lpdd->lpVtbl->CreateSurface(g_lpdd,&ddsd, &g_lpddsPrimary, NULL )== DD_OK)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
217 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>primary surface created\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
218 else
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
219 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
220 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>could not create primary surface\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
221 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
222 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
223 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
224 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
225
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
226 static uint32_t Directx_CreateOverlay(uint32_t imgfmt)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
227 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
228 HRESULT ddrval;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
229 DDSURFACEDESC2 ddsdOverlay;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
230 uint32_t i=0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
231 while ( i < NUM_FORMATS +1 && imgfmt != g_ddpf[i].img_format)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
232 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
233 i++;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
234 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
235 if (!g_lpdd || !g_lpddsPrimary)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
236 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
237 //cleanup
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
238 if (g_lpddsOverlay)g_lpddsOverlay->lpVtbl->Release(g_lpddsOverlay);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
239 if (g_lpddsBack)g_lpddsBack->lpVtbl->Release(g_lpddsBack);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
240 g_lpddsOverlay= NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
241 g_lpddsBack = NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
242 //create our overlay
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
243 ZeroMemory(&ddsdOverlay, sizeof(ddsdOverlay));
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
244 ddsdOverlay.dwSize = sizeof(ddsdOverlay);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
245 ddsdOverlay.ddsCaps.dwCaps=DDSCAPS_OVERLAY | DDSCAPS_FLIP | DDSCAPS_COMPLEX | DDSCAPS_VIDEOMEMORY;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
246 ddsdOverlay.dwFlags= DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_BACKBUFFERCOUNT| DDSD_PIXELFORMAT;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
247 ddsdOverlay.dwWidth=image_width;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
248 ddsdOverlay.dwHeight=image_height;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
249 ddsdOverlay.dwBackBufferCount=2;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
250 ddsdOverlay.ddpfPixelFormat=g_ddpf[i].g_ddpfOverlay;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
251 if(vo_doublebuffering) //tribblebuffering
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
252 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
253 if (g_lpdd->lpVtbl->CreateSurface(g_lpdd,&ddsdOverlay, &g_lpddsOverlay, NULL)== DD_OK)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
254 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
255 mp_msg(MSGT_VO, MSGL_V,"<vo_directx><INFO>overlay with format %s created\n",g_ddpf[i].img_format_name);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
256 //get the surface directly attached to the primary (the back buffer)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
257 ddsdOverlay.ddsCaps.dwCaps = DDSCAPS_BACKBUFFER;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
258 if(g_lpddsOverlay->lpVtbl->GetAttachedSurface(g_lpddsOverlay,&ddsdOverlay.ddsCaps, &g_lpddsBack) != DD_OK)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
259 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
260 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't get attached surface\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
261 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
262 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
263 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
264 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
265 vo_doublebuffering=0; //disable tribblebuffering
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
266 mp_msg(MSGT_VO, MSGL_V,"<vo_directx><WARN>cannot create tribblebuffer overlay with format %s\n",g_ddpf[i].img_format_name);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
267 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
268 //single buffer
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
269 mp_msg(MSGT_VO, MSGL_V,"<vo_directx><INFO>using singlebuffer overlay\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
270 ddsdOverlay.dwBackBufferCount=0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
271 ddsdOverlay.ddsCaps.dwCaps=DDSCAPS_OVERLAY | DDSCAPS_VIDEOMEMORY;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
272 ddsdOverlay.dwFlags= DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH|DDSD_PIXELFORMAT;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
273 ddsdOverlay.ddpfPixelFormat=g_ddpf[i].g_ddpfOverlay;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
274 // try to create the overlay surface
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
275 ddrval = g_lpdd->lpVtbl->CreateSurface(g_lpdd,&ddsdOverlay, &g_lpddsOverlay, NULL);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
276 if(ddrval != DD_OK)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
277 {
10640
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
278 if(ddrval == DDERR_INVALIDPIXELFORMAT)mp_msg(MSGT_VO,MSGL_V,"<vo_directx><ERROR> invalid pixelformat: %s\n",g_ddpf[i].img_format_name);
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
279 else mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>");
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
280 switch(ddrval)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
281 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
282 case DDERR_INCOMPATIBLEPRIMARY:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
283 {mp_msg(MSGT_VO, MSGL_ERR,"incompatible primary surface\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
284 case DDERR_INVALIDCAPS:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
285 {mp_msg(MSGT_VO, MSGL_ERR,"invalid caps\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
286 case DDERR_INVALIDOBJECT:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
287 {mp_msg(MSGT_VO, MSGL_ERR,"invalid object\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
288 case DDERR_INVALIDPARAMS:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
289 {mp_msg(MSGT_VO, MSGL_ERR,"invalid parameters\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
290 case DDERR_NODIRECTDRAWHW:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
291 {mp_msg(MSGT_VO, MSGL_ERR,"no directdraw hardware\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
292 case DDERR_NOEMULATION:
11000
6e35326c742f many small typo and grammar fixes
gabucino
parents: 10900
diff changeset
293 {mp_msg(MSGT_VO, MSGL_ERR,"can't emulate\n");break;}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
294 case DDERR_NOFLIPHW:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
295 {mp_msg(MSGT_VO, MSGL_ERR,"hardware can't do flip\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
296 case DDERR_NOOVERLAYHW:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
297 {mp_msg(MSGT_VO, MSGL_ERR,"hardware can't do overlay\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
298 case DDERR_OUTOFMEMORY:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
299 {mp_msg(MSGT_VO, MSGL_ERR,"not enough system memory\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
300 case DDERR_UNSUPPORTEDMODE:
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
301 {mp_msg(MSGT_VO, MSGL_ERR,"unsupported mode\n");break;}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
302 case DDERR_OUTOFVIDEOMEMORY:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
303 {mp_msg(MSGT_VO, MSGL_ERR,"not enough video memory\n");break;}
12156
ff9f315741a7 print at least the error number when there is no text for it
faust3
parents: 12021
diff changeset
304 default:
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
305 mp_msg(MSGT_VO, MSGL_ERR,"create surface failed with 0x%x\n",ddrval);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
306 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
307 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
308 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
309 g_lpddsBack = g_lpddsOverlay;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
310 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
311 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
312
29212
eda346733b8c Add missing 'void' to parameterless function declarations.
diego
parents: 28121
diff changeset
313 static uint32_t Directx_CreateBackpuffer(void)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
314 {
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
315 DDSURFACEDESC2 ddsd;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
316 //cleanup
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
317 if (g_lpddsBack)g_lpddsBack->lpVtbl->Release(g_lpddsBack);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
318 g_lpddsBack=NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
319 ZeroMemory(&ddsd, sizeof(ddsd));
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
320 ddsd.dwSize = sizeof(ddsd);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
321 ddsd.ddsCaps.dwCaps= DDSCAPS_OFFSCREENPLAIN | DDSCAPS_SYSTEMMEMORY;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
322 ddsd.dwFlags= DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
323 ddsd.dwWidth=image_width;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
324 ddsd.dwHeight=image_height;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
325 if(g_lpdd->lpVtbl->CreateSurface( g_lpdd, &ddsd, &g_lpddsBack, 0 ) != DD_OK )
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
326 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
327 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't create backpuffer\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
328 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
329 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
330 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>backbuffer created\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
331 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
332 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
333
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
334 static void uninit(void)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
335 {
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
336 if (g_cc != NULL)
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
337 {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
338 g_cc->lpVtbl->Release(g_cc);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
339 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
340 g_cc=NULL;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
341 if (g_lpddclipper != NULL) g_lpddclipper->lpVtbl->Release(g_lpddclipper);
9619
faust3
parents: 9488
diff changeset
342 g_lpddclipper = NULL;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
343 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>clipper released\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
344 if (g_lpddsBack != NULL) g_lpddsBack->lpVtbl->Release(g_lpddsBack);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
345 g_lpddsBack = NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
346 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>back surface released\n");
10640
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
347 if(vo_doublebuffering && !nooverlay)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
348 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
349 if (g_lpddsOverlay != NULL)g_lpddsOverlay->lpVtbl->Release(g_lpddsOverlay);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
350 g_lpddsOverlay = NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
351 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>overlay surface released\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
352 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
353 if (g_lpddsPrimary != NULL) g_lpddsPrimary->lpVtbl->Release(g_lpddsPrimary);
7682
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
354 g_lpddsPrimary = NULL;
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
355 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>primary released\n");
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
356 if(hWndFS)DestroyWindow(hWndFS);
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
357 hWndFS = NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
358 if((WinID == -1) && hWnd) DestroyWindow(hWnd);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
359 hWnd = NULL;
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
360 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>window destroyed\n");
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
361 UnregisterClass(WNDCLASSNAME_WINDOWED, GetModuleHandle(NULL));
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
362 UnregisterClass(WNDCLASSNAME_FULLSCREEN, GetModuleHandle(NULL));
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
363 if (mplayericon) DestroyIcon(mplayericon);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
364 mplayericon = NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
365 if (mplayercursor) DestroyCursor(mplayercursor);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
366 mplayercursor = NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
367 if (blackbrush) DeleteObject(blackbrush);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
368 blackbrush = NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
369 if (colorbrush) DeleteObject(colorbrush);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
370 colorbrush = NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
371 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>GDI resources deleted\n");
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
372 if (g_lpdd != NULL){
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
373 if(vidmode)g_lpdd->lpVtbl->RestoreDisplayMode(g_lpdd);
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
374 g_lpdd->lpVtbl->Release(g_lpdd);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
375 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
376 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>directdrawobject released\n");
7778
f804db78f704 10l - noticed by Soeren Mueller <soeren.mueller at webwasher.com>
faust3
parents: 7713
diff changeset
377 FreeLibrary( hddraw_dll);
f804db78f704 10l - noticed by Soeren Mueller <soeren.mueller at webwasher.com>
faust3
parents: 7713
diff changeset
378 hddraw_dll= NULL;
f804db78f704 10l - noticed by Soeren Mueller <soeren.mueller at webwasher.com>
faust3
parents: 7713
diff changeset
379 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>ddraw.dll freed\n");
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
380 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>uninitialized\n");
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
381 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
382
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
383 static BOOL WINAPI EnumCallbackEx(GUID FAR *lpGUID, LPSTR lpDriverDescription, LPSTR lpDriverName, LPVOID lpContext, HMONITOR hm)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
384 {
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
385 mp_msg(MSGT_VO, MSGL_INFO ,"<vo_directx> adapter %d: ", adapter_count);
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
386
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
387 if (!lpGUID)
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
388 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
389 mp_msg(MSGT_VO, MSGL_INFO ,"%s", "Primary Display Adapter");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
390 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
391 else
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
392 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
393 mp_msg(MSGT_VO, MSGL_INFO ,"%s", lpDriverDescription);
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
394 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
395
12021
cd33d1e3b709 move refreshrate and adapter_num variables to video_out because they might be usefull for other drivers, too
faust3
parents: 12020
diff changeset
396 if(adapter_count == vo_adapter_num){
13775
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
397 MONITORINFO mi;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
398 if (!lpGUID)
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
399 selected_guid_ptr = NULL;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
400 else
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
401 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
402 selected_guid = *lpGUID;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
403 selected_guid_ptr = &selected_guid;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
404 }
13775
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
405 mi.cbSize = sizeof(mi);
14302
9929eafe6be5 win95 fix fix by Rune Petersen <rune.mail-list at mail.tele.dk>
faust3
parents: 14253
diff changeset
406
14253
6c9f27a5ea02 win95 does not support GetMonitorInfo
faust3
parents: 14223
diff changeset
407 if (myGetMonitorInfo(hm, &mi)) {
13775
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
408 monitor_rect = mi.rcMonitor;
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
409 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
410 mp_msg(MSGT_VO, MSGL_INFO ,"\t\t<--");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
411 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
412 mp_msg(MSGT_VO, MSGL_INFO ,"\n");
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
413
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
414 adapter_count++;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
415
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
416 return 1; // list all adapters
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
417 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
418
29212
eda346733b8c Add missing 'void' to parameterless function declarations.
diego
parents: 28121
diff changeset
419 static uint32_t Directx_InitDirectDraw(void)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
420 {
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
421 HRESULT (WINAPI *OurDirectDrawCreateEx)(GUID *,LPVOID *, REFIID,IUnknown FAR *);
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
422 DDSURFACEDESC2 ddsd;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
423 LPDIRECTDRAWENUMERATEEX OurDirectDrawEnumerateEx;
14253
6c9f27a5ea02 win95 does not support GetMonitorInfo
faust3
parents: 14223
diff changeset
424 HINSTANCE user32dll=LoadLibrary("user32.dll");
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
425
17534
13cdba48ff98 reinitialize adapter_count to 0, EnumCallbackEx will not work otherwise
reimar
parents: 16975
diff changeset
426 adapter_count = 0;
14253
6c9f27a5ea02 win95 does not support GetMonitorInfo
faust3
parents: 14223
diff changeset
427 if(user32dll){
14302
9929eafe6be5 win95 fix fix by Rune Petersen <rune.mail-list at mail.tele.dk>
faust3
parents: 14253
diff changeset
428 myGetMonitorInfo=GetProcAddress(user32dll,"GetMonitorInfoA");
9929eafe6be5 win95 fix fix by Rune Petersen <rune.mail-list at mail.tele.dk>
faust3
parents: 14253
diff changeset
429 if(!myGetMonitorInfo && vo_adapter_num){
9929eafe6be5 win95 fix fix by Rune Petersen <rune.mail-list at mail.tele.dk>
faust3
parents: 14253
diff changeset
430 mp_msg(MSGT_VO, MSGL_ERR, "<vo_directx> -adapter is not supported on Win95\n");
9929eafe6be5 win95 fix fix by Rune Petersen <rune.mail-list at mail.tele.dk>
faust3
parents: 14253
diff changeset
431 vo_adapter_num = 0;
9929eafe6be5 win95 fix fix by Rune Petersen <rune.mail-list at mail.tele.dk>
faust3
parents: 14253
diff changeset
432 }
14253
6c9f27a5ea02 win95 does not support GetMonitorInfo
faust3
parents: 14223
diff changeset
433 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
434
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
435 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>Initing DirectDraw\n" );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
436
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
437 //load direct draw DLL: based on videolans code
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
438 hddraw_dll = LoadLibrary("DDRAW.DLL");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
439 if( hddraw_dll == NULL )
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
440 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
441 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>failed loading ddraw.dll\n" );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
442 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
443 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
444
17853
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
445 last_rect.left = 0xDEADC0DE; // reset window position cache
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
446
12021
cd33d1e3b709 move refreshrate and adapter_num variables to video_out because they might be usefull for other drivers, too
faust3
parents: 12020
diff changeset
447 if(vo_adapter_num){ //display other than default
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
448 OurDirectDrawEnumerateEx = (LPDIRECTDRAWENUMERATEEX) GetProcAddress(hddraw_dll,"DirectDrawEnumerateExA");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
449 if (!OurDirectDrawEnumerateEx){
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
450 FreeLibrary( hddraw_dll );
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
451 hddraw_dll = NULL;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
452 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>failed geting proc address: DirectDrawEnumerateEx\n");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
453 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>no directx 7 or higher installed\n");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
454 return 1;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
455 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
456
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
457 // enumerate all display devices attached to the desktop
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
458 OurDirectDrawEnumerateEx(EnumCallbackEx, NULL, DDENUM_ATTACHEDSECONDARYDEVICES );
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
459
12021
cd33d1e3b709 move refreshrate and adapter_num variables to video_out because they might be usefull for other drivers, too
faust3
parents: 12020
diff changeset
460 if(vo_adapter_num >= adapter_count)
cd33d1e3b709 move refreshrate and adapter_num variables to video_out because they might be usefull for other drivers, too
faust3
parents: 12020
diff changeset
461 mp_msg(MSGT_VO, MSGL_ERR,"Selected adapter (%d) doesn't exist: Default Display Adapter selected\n",vo_adapter_num);
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
462 }
14253
6c9f27a5ea02 win95 does not support GetMonitorInfo
faust3
parents: 14223
diff changeset
463 FreeLibrary(user32dll);
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
464
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
465 OurDirectDrawCreateEx = (void *)GetProcAddress(hddraw_dll, "DirectDrawCreateEx");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
466 if ( OurDirectDrawCreateEx == NULL )
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
467 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
468 FreeLibrary( hddraw_dll );
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
469 hddraw_dll = NULL;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
470 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>failed geting proc address: DirectDrawCreateEx\n");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
471 return 1;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
472 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
473
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
474 // initialize DirectDraw and create directx v7 object
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
475 if (OurDirectDrawCreateEx(selected_guid_ptr, (VOID**)&g_lpdd, &IID_IDirectDraw7, NULL ) != DD_OK )
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
476 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
477 FreeLibrary( hddraw_dll );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
478 hddraw_dll = NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
479 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't initialize ddraw\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
480 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
481 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
482
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
483 //get current screen siz for selected monitor ...
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
484 ddsd.dwSize=sizeof(ddsd);
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
485 ddsd.dwFlags=DDSD_WIDTH|DDSD_HEIGHT|DDSD_PIXELFORMAT;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
486 g_lpdd->lpVtbl->GetDisplayMode(g_lpdd, &ddsd);
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
487 if(vo_screenwidth && vo_screenheight)
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
488 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
489 vm_height=vo_screenheight;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
490 vm_width=vo_screenwidth;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
491 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
492 else
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
493 {
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
494 vm_height=ddsd.dwHeight;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
495 vm_width=ddsd.dwWidth;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
496 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
497
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
498
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
499 if(vo_dbpp)vm_bpp=vo_dbpp;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
500 else vm_bpp=ddsd.ddpfPixelFormat.dwRGBBitCount;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
501
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
502 if(vidmode){
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
503 if (g_lpdd->lpVtbl->SetCooperativeLevel(g_lpdd, hWnd, DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN) != DD_OK)
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
504 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
505 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't set cooperativelevel for exclusive mode\n");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
506 return 1;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
507 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
508 /*SetDisplayMode(ddobject,width,height,bpp,refreshrate,aditionalflags)*/
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
509 if(g_lpdd->lpVtbl->SetDisplayMode(g_lpdd,vm_width, vm_height, vm_bpp,0,0) != DD_OK)
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
510 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
511 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't set displaymode\n");
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
512 return 1;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
513 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
514 mp_msg(MSGT_VO, MSGL_V,"<vo_directx><INFO>Initialized adapter %i for %i x %i @ %i \n",vo_adapter_num,vm_width,vm_height,vm_bpp);
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
515 return 0;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
516 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
517 if (g_lpdd->lpVtbl->SetCooperativeLevel(g_lpdd, hWnd, DDSCL_NORMAL) != DD_OK) // or DDSCL_SETFOCUSWINDOW
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
518 {
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
519 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>could not set cooperativelevel for hardwarecheck\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
520 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
521 }
25962
afa125da85cf typo fix: inited --> initialized
diego
parents: 25220
diff changeset
522 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>DirectDraw Initialized\n");
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
523 return 0;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
524 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
525
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
526 static void check_events(void)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
527 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
528 MSG msg;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
529 while (PeekMessage(&msg, NULL, 0, 0,PM_REMOVE))
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
530 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
531 TranslateMessage(&msg);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
532 DispatchMessage(&msg);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
533 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
534 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
535
29212
eda346733b8c Add missing 'void' to parameterless function declarations.
diego
parents: 28121
diff changeset
536 static uint32_t Directx_ManageDisplay(void)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
537 {
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
538 HRESULT ddrval;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
539 DDCAPS capsDrv;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
540 DDOVERLAYFX ovfx;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
541 DWORD dwUpdateFlags=0;
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
542 int width,height;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
543
17853
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
544 if(!vidmode && !vo_fs && WinID!=-1) {
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
545 RECT current_rect = {0, 0, 0, 0};
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
546 GetWindowRect(hWnd, &current_rect);
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
547 if ((current_rect.left == last_rect.left)
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
548 && (current_rect.top == last_rect.top)
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
549 && (current_rect.right == last_rect.right)
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
550 && (current_rect.bottom == last_rect.bottom))
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
551 return 0;
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
552 last_rect = current_rect;
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
553 }
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
554
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
555 if(vo_fs || vidmode){
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
556 aspect(&width,&height,A_ZOOM);
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
557 rd.left=(vo_screenwidth-width)/2;
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
558 rd.top=(vo_screenheight-height)/2;
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
559 if (WinID == -1)
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
560 if(ShowCursor(FALSE)>=0)while(ShowCursor(FALSE)>=0){}
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
561 }
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
562 else if (WinID != -1 && vo_geometry) {
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
563 POINT pt;
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
564 pt.x = vo_dx;
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
565 pt.y = vo_dy;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
566 ClientToScreen(hWnd,&pt);
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
567 width=d_image_width;
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
568 height=d_image_height;
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
569 rd.left = pt.x;
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
570 rd.top = pt.y;
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
571 while(ShowCursor(TRUE)<=0){}
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
572 }
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
573 else {
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
574 POINT pt;
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
575 pt.x = 0; //overlayposition relative to the window
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
576 pt.y = 0;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
577 ClientToScreen(hWnd,&pt);
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
578 GetClientRect(hWnd, &rd);
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
579 width=rd.right - rd.left;
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
580 height=rd.bottom - rd.top;
13775
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
581 pt.x -= monitor_rect.left; /* move coordinates from global to local monitor space */
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
582 pt.y -= monitor_rect.top;
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
583 rd.right -= monitor_rect.left;
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
584 rd.bottom -= monitor_rect.top;
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
585 rd.left = pt.x;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
586 rd.top = pt.y;
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
587 if(!nooverlay && (!width || !height)){
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
588 /*window is minimized*/
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
589 ddrval = g_lpddsOverlay->lpVtbl->UpdateOverlay(g_lpddsOverlay,NULL, g_lpddsPrimary, NULL, DDOVER_HIDE, NULL);
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
590 return 0;
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
591 }
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
592 if(vo_keepaspect){
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
593 int tmpheight=((float)width/window_aspect);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
594 tmpheight+=tmpheight%2;
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
595 if(tmpheight > height){
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
596 width=((float)height*window_aspect);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
597 width+=width%2;
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
598 }
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
599 else height=tmpheight;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
600 }
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
601 if (WinID == -1)
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
602 while(ShowCursor(TRUE)<=0){}
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
603 }
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
604 rd.right=rd.left+width;
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
605 rd.bottom=rd.top+height;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
606
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
607 /*ok, let's workaround some overlay limitations*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
608 if(!nooverlay)
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
609 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
610 uint32_t uStretchFactor1000; //minimum stretch
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
611 uint32_t xstretch1000,ystretch1000;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
612 /*get driver capabilities*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
613 ZeroMemory(&capsDrv, sizeof(capsDrv));
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
614 capsDrv.dwSize = sizeof(capsDrv);
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
615 if(g_lpdd->lpVtbl->GetCaps(g_lpdd,&capsDrv, NULL) != DD_OK)return 1;
12485
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
616 /*get minimum stretch, depends on display adaptor and mode (refresh rate!) */
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
617 uStretchFactor1000 = capsDrv.dwMinOverlayStretch>1000 ? capsDrv.dwMinOverlayStretch : 1000;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
618 rd.right = ((width+rd.left)*uStretchFactor1000+999)/1000;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
619 rd.bottom = (height+rd.top)*uStretchFactor1000/1000;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
620 /*calculate xstretch1000 and ystretch1000*/
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
621 xstretch1000 = ((rd.right - rd.left)* 1000)/image_width ;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
622 ystretch1000 = ((rd.bottom - rd.top)* 1000)/image_height;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
623 rs.left=0;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
624 rs.right=image_width;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
625 rs.top=0;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
626 rs.bottom=image_height;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
627 if(rd.left < 0)rs.left=(-rd.left*1000)/xstretch1000;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
628 if(rd.top < 0)rs.top=(-rd.top*1000)/ystretch1000;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
629 if(rd.right > vo_screenwidth)rs.right=((vo_screenwidth-rd.left)*1000)/xstretch1000;
d6885dbe1017 more sane order for overlay workarounds, fixed a bug where the mouse would stay hidden on win98
faust3
parents: 12387
diff changeset
630 if(rd.bottom > vo_screenheight)rs.bottom=((vo_screenheight-rd.top)*1000)/ystretch1000;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
631 /*do not allow to zoom or shrink if hardware isn't able to do so*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
632 if((width < image_width)&& !(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSHRINKX))
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
633 {
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
634 if(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSHRINKXN)mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can only shrinkN\n");
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
635 else mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can't shrink x\n");
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
636 rd.right=rd.left+image_width;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
637 }
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
638 else if((width > image_width)&& !(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSTRETCHX))
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
639 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
640 if(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSTRETCHXN)mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can only stretchN\n");
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
641 else mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can't stretch x\n");
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
642 rd.right = rd.left+image_width;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
643 }
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
644 if((height < image_height) && !(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSHRINKY))
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
645 {
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
646 if(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSHRINKYN)mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can only shrinkN\n");
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
647 else mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can't shrink y\n");
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
648 rd.bottom = rd.top + image_height;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
649 }
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
650 else if((height > image_height ) && !(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSTRETCHY))
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
651 {
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
652 if(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYSTRETCHYN)mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can only stretchN\n");
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
653 else mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can't stretch y\n");
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
654 rd.bottom = rd.top + image_height;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
655 }
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
656 /*the last thing to check are alignment restrictions
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
657 these expressions (x & -y) just do alignment by dropping low order bits...
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
658 so to round up, we add first, then truncate*/
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
659 if((capsDrv.dwCaps & DDCAPS_ALIGNBOUNDARYSRC) && capsDrv.dwAlignBoundarySrc)
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
660 rs.left = (rs.left + capsDrv.dwAlignBoundarySrc / 2) & -(signed)(capsDrv.dwAlignBoundarySrc);
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
661 if((capsDrv.dwCaps & DDCAPS_ALIGNSIZESRC) && capsDrv.dwAlignSizeSrc)
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
662 rs.right = rs.left + ((rs.right - rs.left + capsDrv.dwAlignSizeSrc / 2) & -(signed) (capsDrv.dwAlignSizeSrc));
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
663 if((capsDrv.dwCaps & DDCAPS_ALIGNBOUNDARYDEST) && capsDrv.dwAlignBoundaryDest)
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
664 rd.left = (rd.left + capsDrv.dwAlignBoundaryDest / 2) & -(signed)(capsDrv.dwAlignBoundaryDest);
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
665 if((capsDrv.dwCaps & DDCAPS_ALIGNSIZEDEST) && capsDrv.dwAlignSizeDest)
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
666 rd.right = rd.left + ((rd.right - rd.left) & -(signed) (capsDrv.dwAlignSizeDest));
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
667 /*create an overlay FX structure to specify a destination color key*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
668 ZeroMemory(&ovfx, sizeof(ovfx));
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
669 ovfx.dwSize = sizeof(ovfx);
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
670 if(vo_fs||vidmode)
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
671 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
672 ovfx.dckDestColorkey.dwColorSpaceLowValue = 0;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
673 ovfx.dckDestColorkey.dwColorSpaceHighValue = 0;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
674 }
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
675 else
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
676 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
677 ovfx.dckDestColorkey.dwColorSpaceLowValue = destcolorkey;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
678 ovfx.dckDestColorkey.dwColorSpaceHighValue = destcolorkey;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
679 }
22289
780caed72ac7 cosmetics: typo fixes, usefuLL --> useful and aswell --> as well
diego
parents: 20394
diff changeset
680 // set the flags we'll send to UpdateOverlay //DDOVER_AUTOFLIP|DDOVERFX_MIRRORLEFTRIGHT|DDOVERFX_MIRRORUPDOWN could be useful?;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
681 dwUpdateFlags = DDOVER_SHOW | DDOVER_DDFX;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
682 /*if hardware can't do colorkeying set the window on top*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
683 if(capsDrv.dwCKeyCaps & DDCKEYCAPS_DESTOVERLAY) dwUpdateFlags |= DDOVER_KEYDESTOVERRIDE;
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
684 else if (!tmp_image) vo_ontop = 1;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
685 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
686 else
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
687 {
13110
19a1253b2ff1 vm window handling fixes
faust3
parents: 13091
diff changeset
688 g_lpddclipper->lpVtbl->SetHWnd(g_lpddclipper, 0,(vo_fs && !vidmode)?hWndFS: hWnd);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
689 }
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
690
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
691 if(!vidmode && !vo_fs){
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
692 if(WinID == -1) {
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
693 RECT rdw=rd;
16968
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
694 if (vo_border)
16966
46490266341d move window style to a macro for easier maintaining
joey
parents: 16892
diff changeset
695 AdjustWindowRect(&rdw,WNDSTYLE,FALSE);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
696 // printf("window: %i %i %ix%i\n",rdw.left,rdw.top,rdw.right - rdw.left,rdw.bottom - rdw.top);
13775
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
697 rdw.left += monitor_rect.left; /* move to global coordinate space */
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
698 rdw.top += monitor_rect.top;
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
699 rdw.right += monitor_rect.left;
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
700 rdw.bottom += monitor_rect.top;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
701 SetWindowPos(hWnd,(vo_ontop)?HWND_TOPMOST:(vo_rootwin?HWND_BOTTOM:HWND_NOTOPMOST),rdw.left,rdw.top,rdw.right-rdw.left,rdw.bottom-rdw.top,SWP_NOOWNERZORDER);
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
702 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
703 }
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
704 else SetWindowPos(vidmode?hWnd:hWndFS,vo_rootwin?HWND_BOTTOM:HWND_TOPMOST,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_NOOWNERZORDER|SWP_NOCOPYBITS);
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
705
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
706 /*make sure the overlay is inside the screen*/
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
707 if(rd.left<0)rd.left=0;
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
708 if(rd.right>vo_screenwidth)rd.right=vo_screenwidth;
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
709 if(rd.top<0)rd.top=0;
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
710 if(rd.bottom>vo_screenheight)rd.bottom=vo_screenheight;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
711
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
712 /*for nonoverlay mode we are finished, for overlay mode we have to display the overlay first*/
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
713 if(nooverlay)return 0;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
714
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
715 // printf("overlay: %i %i %ix%i\n",rd.left,rd.top,rd.right - rd.left,rd.bottom - rd.top);
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
716 ddrval = g_lpddsOverlay->lpVtbl->UpdateOverlay(g_lpddsOverlay,&rs, g_lpddsPrimary, &rd, dwUpdateFlags, &ovfx);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
717 if(FAILED(ddrval))
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
718 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
719 // one cause might be the driver lied about minimum stretch
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
720 // we should try upping the destination size a bit, or
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
721 // perhaps shrinking the source size
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
722 mp_msg(MSGT_VO, MSGL_ERR ,"<vo_directx><ERROR>UpdateOverlay failed\n" );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
723 mp_msg(MSGT_VO, MSGL_ERR ,"<vo_directx><ERROR>Overlay:x1:%i,y1:%i,x2:%i,y2:%i,w:%i,h:%i\n",rd.left,rd.top,rd.right,rd.bottom,rd.right - rd.left,rd.bottom - rd.top );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
724 mp_msg(MSGT_VO, MSGL_ERR ,"<vo_directx><ERROR>");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
725 switch (ddrval)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
726 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
727 case DDERR_NOSTRETCHHW:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
728 {mp_msg(MSGT_VO, MSGL_ERR ,"hardware can't stretch: try to size the window back\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
729 case DDERR_INVALIDRECT:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
730 {mp_msg(MSGT_VO, MSGL_ERR ,"invalid rectangle\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
731 case DDERR_INVALIDPARAMS:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
732 {mp_msg(MSGT_VO, MSGL_ERR ,"invalid parameters\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
733 case DDERR_HEIGHTALIGN:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
734 {mp_msg(MSGT_VO, MSGL_ERR ,"height align\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
735 case DDERR_XALIGN:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
736 {mp_msg(MSGT_VO, MSGL_ERR ,"x align\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
737 case DDERR_UNSUPPORTED:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
738 {mp_msg(MSGT_VO, MSGL_ERR ,"unsupported\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
739 case DDERR_INVALIDSURFACETYPE:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
740 {mp_msg(MSGT_VO, MSGL_ERR ,"invalid surfacetype\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
741 case DDERR_INVALIDOBJECT:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
742 {mp_msg(MSGT_VO, MSGL_ERR ,"invalid object\n");break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
743 case DDERR_SURFACELOST:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
744 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
745 mp_msg(MSGT_VO, MSGL_ERR ,"surfaces lost\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
746 g_lpddsOverlay->lpVtbl->Restore( g_lpddsOverlay ); //restore and try again
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
747 g_lpddsPrimary->lpVtbl->Restore( g_lpddsPrimary );
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
748 ddrval = g_lpddsOverlay->lpVtbl->UpdateOverlay(g_lpddsOverlay,&rs, g_lpddsPrimary, &rd, dwUpdateFlags, &ovfx);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
749 if(ddrval !=DD_OK)mp_msg(MSGT_VO, MSGL_FATAL ,"<vo_directx><FATAL ERROR>UpdateOverlay failed again\n" );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
750 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
751 }
12156
ff9f315741a7 print at least the error number when there is no text for it
faust3
parents: 12021
diff changeset
752 default:
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
753 mp_msg(MSGT_VO, MSGL_ERR ," 0x%x\n",ddrval);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
754 }
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
755 /*ok we can't do anything about it -> hide overlay*/
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
756 if(ddrval != DD_OK)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
757 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
758 ddrval = g_lpddsOverlay->lpVtbl->UpdateOverlay(g_lpddsOverlay,NULL, g_lpddsPrimary, NULL, DDOVER_HIDE, NULL);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
759 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
760 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
761 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
762 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
763 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
764
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
765 //find out supported overlay pixelformats
29212
eda346733b8c Add missing 'void' to parameterless function declarations.
diego
parents: 28121
diff changeset
766 static uint32_t Directx_CheckOverlayPixelformats(void)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
767 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
768 DDCAPS capsDrv;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
769 HRESULT ddrval;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
770 DDSURFACEDESC2 ddsdOverlay;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
771 uint32_t i;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
772 uint32_t formatcount = 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
773 //get driver caps to determine overlay support
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
774 ZeroMemory(&capsDrv, sizeof(capsDrv));
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
775 capsDrv.dwSize = sizeof(capsDrv);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
776 ddrval = g_lpdd->lpVtbl->GetCaps(g_lpdd,&capsDrv, NULL);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
777 if (FAILED(ddrval))
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
778 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
779 mp_msg(MSGT_VO, MSGL_ERR ,"<vo_directx><ERROR>failed getting ddrawcaps\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
780 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
781 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
782 if (!(capsDrv.dwCaps & DDCAPS_OVERLAY))
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
783 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
784 mp_msg(MSGT_VO, MSGL_ERR ,"<vo_directx><ERROR>Your card doesn't support overlay\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
785 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
786 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
787 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>testing supported overlay pixelformats\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
788 //it is not possible to query for pixel formats supported by the
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
789 //overlay hardware: try out various formats till one works
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
790 ZeroMemory(&ddsdOverlay, sizeof(ddsdOverlay));
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
791 ddsdOverlay.dwSize = sizeof(ddsdOverlay);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
792 ddsdOverlay.ddsCaps.dwCaps=DDSCAPS_OVERLAY | DDSCAPS_VIDEOMEMORY;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
793 ddsdOverlay.dwFlags= DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH| DDSD_PIXELFORMAT;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
794 ddsdOverlay.dwWidth=300;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
795 ddsdOverlay.dwHeight=280;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
796 ddsdOverlay.dwBackBufferCount=0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
797 //try to create an overlay surface using one of the pixel formats in our global list
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
798 i=0;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
799 do
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
800 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
801 ddsdOverlay.ddpfPixelFormat=g_ddpf[i].g_ddpfOverlay;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
802 ddrval = g_lpdd->lpVtbl->CreateSurface(g_lpdd,&ddsdOverlay, &g_lpddsOverlay, NULL);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
803 if (ddrval == DD_OK)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
804 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
805 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><FORMAT OVERLAY>%i %s supported\n",i,g_ddpf[i].img_format_name);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
806 g_ddpf[i].drv_caps = VFCAP_CSP_SUPPORTED |VFCAP_OSD |VFCAP_CSP_SUPPORTED_BY_HW | VFCAP_HWSCALE_UP;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
807 formatcount++;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
808 else mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><FORMAT OVERLAY>%i %s not supported\n",i,g_ddpf[i].img_format_name);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
809 if (g_lpddsOverlay != NULL) {g_lpddsOverlay->lpVtbl->Release(g_lpddsOverlay);g_lpddsOverlay = NULL;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
810 } while( ++i < NUM_FORMATS );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
811 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>Your card supports %i of %i overlayformats\n",formatcount, NUM_FORMATS);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
812 if (formatcount == 0)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
813 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
814 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><WARN>Your card supports overlay, but we couldn't create one\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
815 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>This can have the following reasons:\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
816 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>- you are already using an overlay with another app\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
817 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>- you don't have enough videomemory\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
818 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>- vo_directx doesn't support the cards overlay pixelformat\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
819 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
820 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
821 if(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYMIRRORLEFTRIGHT)mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>can mirror left right\n"); //I don't have hardware which
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
822 if(capsDrv.dwFXCaps & DDFXCAPS_OVERLAYMIRRORUPDOWN )mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>can mirror up down\n"); //supports those send me one and I'll implement ;)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
823 return 0;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
824 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
825
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
826 //find out the Pixelformat of the Primary Surface
29212
eda346733b8c Add missing 'void' to parameterless function declarations.
diego
parents: 28121
diff changeset
827 static uint32_t Directx_CheckPrimaryPixelformat(void)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
828 {
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
829 uint32_t i=0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
830 uint32_t formatcount = 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
831 DDPIXELFORMAT ddpf;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
832 DDSURFACEDESC2 ddsd;
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
833 HDC hdc;
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
834 HRESULT hres;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
835 COLORREF rgbT=RGB(0,0,0);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
836 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>checking primary surface\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
837 memset( &ddpf, 0, sizeof( DDPIXELFORMAT ));
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
838 ddpf.dwSize = sizeof( DDPIXELFORMAT );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
839 //we have to create a primary surface first
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
840 if(Directx_CreatePrimarySurface()!=0)return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
841 if(g_lpddsPrimary->lpVtbl->GetPixelFormat( g_lpddsPrimary, &ddpf ) != DD_OK )
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
842 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
843 mp_msg(MSGT_VO, MSGL_FATAL ,"<vo_directx><FATAL ERROR>can't get pixelformat\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
844 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
845 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
846 while ( i < NUM_FORMATS )
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
847 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
848 if (g_ddpf[i].g_ddpfOverlay.dwRGBBitCount == ddpf.dwRGBBitCount)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
849 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
850 if (g_ddpf[i].g_ddpfOverlay.dwRBitMask == ddpf.dwRBitMask)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
851 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
852 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><FORMAT PRIMARY>%i %s supported\n",i,g_ddpf[i].img_format_name);
7713
32878695ca8b more correct flags
faust3
parents: 7682
diff changeset
853 g_ddpf[i].drv_caps = VFCAP_CSP_SUPPORTED |VFCAP_OSD;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
854 formatcount++;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
855 primary_image_format=g_ddpf[i].img_format;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
856 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
857 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
858 i++;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
859 }
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
860 //get the colorkey for overlay mode
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
861 destcolorkey = CLR_INVALID;
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
862 if (windowcolor != CLR_INVALID && g_lpddsPrimary->lpVtbl->GetDC(g_lpddsPrimary,&hdc) == DD_OK)
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
863 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
864 rgbT = GetPixel(hdc, 0, 0);
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
865 SetPixel(hdc, 0, 0, windowcolor);
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
866 g_lpddsPrimary->lpVtbl->ReleaseDC(g_lpddsPrimary,hdc);
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
867 }
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
868 // read back the converted color
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
869 ddsd.dwSize = sizeof(ddsd);
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
870 while ((hres = g_lpddsPrimary->lpVtbl->Lock(g_lpddsPrimary,NULL, &ddsd, 0, NULL)) == DDERR_WASSTILLDRAWING)
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
871 ;
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
872 if (hres == DD_OK)
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
873 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
874 destcolorkey = *(DWORD *) ddsd.lpSurface;
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
875 if (ddsd.ddpfPixelFormat.dwRGBBitCount < 32)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
876 destcolorkey &= (1 << ddsd.ddpfPixelFormat.dwRGBBitCount) - 1;
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
877 g_lpddsPrimary->lpVtbl->Unlock(g_lpddsPrimary,NULL);
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
878 }
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
879 if (windowcolor != CLR_INVALID && g_lpddsPrimary->lpVtbl->GetDC(g_lpddsPrimary,&hdc) == DD_OK)
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
880 {
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
881 SetPixel(hdc, 0, 0, rgbT);
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
882 g_lpddsPrimary->lpVtbl->ReleaseDC(g_lpddsPrimary,hdc);
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
883 }
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
884 //release primary
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
885 g_lpddsPrimary->lpVtbl->Release(g_lpddsPrimary);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
886 g_lpddsPrimary = NULL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
887 if(formatcount==0)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
888 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
889 mp_msg(MSGT_VO, MSGL_FATAL ,"<vo_directx><FATAL ERROR>Unknown Pixelformat\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
890 return 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
891 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
892 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
893 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
894
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
895 //function handles input
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
896 static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
897 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
898 switch (message)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
899 {
12192
d16b2d48edd0 ignore mouseclicks when activating the window
faust3
parents: 12156
diff changeset
900 case WM_MOUSEACTIVATE:
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
901 return MA_ACTIVATEANDEAT;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
902 case WM_NCACTIVATE:
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
903 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
904 if(vidmode && adapter_count > 2) //only disable if more than one adapter.
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
905 return 0;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
906 break;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
907 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
908 case WM_DESTROY:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
909 {
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
910 PostQuitMessage(0);
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
911 return 0;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
912 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
913 case WM_CLOSE:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
914 {
16892
3470c810527b libvo input cleanup: remove the dependency on libinput,
albeu
parents: 16499
diff changeset
915 mplayer_put_key(KEY_CLOSE_WIN);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
916 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
917 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
918 case WM_WINDOWPOSCHANGED:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
919 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
920 //printf("Windowposchange\n");
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
921 if(g_lpddsBack != NULL) //or it will crash with -vm
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
922 {
13775
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
923 Directx_ManageDisplay();
7624
b1a3b979c630 This patch hopefully fixes colorkeying and a segfault in exclusive mode
arpi
parents: 7537
diff changeset
924 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
925 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
926 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
927 case WM_SYSCOMMAND:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
928 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
929 switch (wParam)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
930 { //kill screensaver etc.
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
931 //note: works only when the window is active
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
932 //you can workaround this by disabling the allow screensaver option in
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
933 //the link to the app
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
934 case SC_SCREENSAVE:
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
935 case SC_MONITORPOWER:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
936 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>killing screensaver\n" );
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
937 return 0;
16973
78ac0dd386c0 Intercept maximize event and go into fullscreen mode.
joey
parents: 16968
diff changeset
938 case SC_MAXIMIZE:
78ac0dd386c0 Intercept maximize event and go into fullscreen mode.
joey
parents: 16968
diff changeset
939 if (!vo_fs) control(VOCTRL_FULLSCREEN, NULL);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
940 return 0;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
941 }
16499
35696985ff4c Missing break for WM_SYSCOMMAND handling.
reimar
parents: 16280
diff changeset
942 break;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
943 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
944 case WM_KEYDOWN:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
945 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
946 switch (wParam)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
947 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
948 case VK_LEFT:
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
949 {mplayer_put_key(KEY_LEFT);break;}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
950 case VK_UP:
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
951 {mplayer_put_key(KEY_UP);break;}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
952 case VK_RIGHT:
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
953 {mplayer_put_key(KEY_RIGHT);break;}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
954 case VK_DOWN:
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
955 {mplayer_put_key(KEY_DOWN);break;}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
956 case VK_TAB:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
957 {mplayer_put_key(KEY_TAB);break;}
11510
3638adcfdcbd send quit command instead of key 'q'.
joey
parents: 11061
diff changeset
958 case VK_BACK:
3638adcfdcbd send quit command instead of key 'q'.
joey
parents: 11061
diff changeset
959 {mplayer_put_key(KEY_BS);break;}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
960 case VK_DELETE:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
961 {mplayer_put_key(KEY_DELETE);break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
962 case VK_INSERT:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
963 {mplayer_put_key(KEY_INSERT);break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
964 case VK_HOME:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
965 {mplayer_put_key(KEY_HOME);break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
966 case VK_END:
9894
3933e0ef000c 10l noticed by Joey Parrish <joey at nicewarrior.org>
faust3
parents: 9728
diff changeset
967 {mplayer_put_key(KEY_END);break;}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
968 case VK_PRIOR:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
969 {mplayer_put_key(KEY_PAGE_UP);break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
970 case VK_NEXT:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
971 {mplayer_put_key(KEY_PAGE_DOWN);break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
972 case VK_ESCAPE:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
973 {mplayer_put_key(KEY_ESC);break;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
974 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
975 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
976 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
977 case WM_CHAR:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
978 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
979 mplayer_put_key(wParam);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
980 break;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
981 }
12020
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
982 case WM_LBUTTONDOWN:
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
983 {
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
984 if (!vo_nomouse_input)
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
985 mplayer_put_key(MOUSE_BTN0);
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
986 break;
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
987 }
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
988 case WM_MBUTTONDOWN:
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
989 {
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
990 if (!vo_nomouse_input)
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
991 mplayer_put_key(MOUSE_BTN1);
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
992 break;
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
993 }
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
994 case WM_RBUTTONDOWN:
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
995 {
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
996 if (!vo_nomouse_input)
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
997 mplayer_put_key(MOUSE_BTN2);
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
998 break;
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
999 }
16975
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1000 case WM_LBUTTONDBLCLK:
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1001 {
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1002 if(!vo_nomouse_input)
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1003 mplayer_put_key(MOUSE_BTN0_DBL);
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1004 break;
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1005 }
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1006 case WM_MBUTTONDBLCLK:
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1007 {
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1008 if(!vo_nomouse_input)
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1009 mplayer_put_key(MOUSE_BTN1_DBL);
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1010 break;
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1011 }
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1012 case WM_RBUTTONDBLCLK:
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1013 {
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1014 if(!vo_nomouse_input)
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1015 mplayer_put_key(MOUSE_BTN2_DBL);
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1016 break;
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1017 }
12020
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
1018 case WM_MOUSEWHEEL:
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
1019 {
20394
6dad8fd4e8ec Remove a declaration-after-statement warning.
diego
parents: 19614
diff changeset
1020 int x;
12020
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
1021 if (vo_nomouse_input)
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
1022 break;
20394
6dad8fd4e8ec Remove a declaration-after-statement warning.
diego
parents: 19614
diff changeset
1023 x = GET_WHEEL_DELTA_WPARAM(wParam);
12020
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
1024 if (x > 0)
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
1025 mplayer_put_key(MOUSE_BTN3);
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
1026 else
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
1027 mplayer_put_key(MOUSE_BTN4);
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
1028 break;
1604d07d3539 mouse support by Nehal Mistry <nehalmistry at gmx.net>
faust3
parents: 12005
diff changeset
1029 }
13157
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
1030 case WM_XBUTTONDOWN:
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
1031 {
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
1032 if (vo_nomouse_input)
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
1033 break;
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
1034 if (HIWORD(wParam) == 1)
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
1035 mplayer_put_key(MOUSE_BTN5);
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
1036 else
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
1037 mplayer_put_key(MOUSE_BTN6);
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
1038 break;
0d44af5bec83 added "xbutton" support for 4-5 button mice
joey
parents: 13110
diff changeset
1039 }
16975
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1040 case WM_XBUTTONDBLCLK:
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1041 {
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1042 if (vo_nomouse_input)
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1043 break;
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1044 if (HIWORD(wParam) == 1)
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1045 mplayer_put_key(MOUSE_BTN5_DBL);
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1046 else
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1047 mplayer_put_key(MOUSE_BTN6_DBL);
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1048 break;
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1049 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1050
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1051 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1052 return DefWindowProc(hWnd, message, wParam, lParam);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1053 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1054
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1055
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15690
diff changeset
1056 static int preinit(const char *arg)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1057 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1058 HINSTANCE hInstance = GetModuleHandle(NULL);
9943
047436ae7143 load icon from executable
faust3
parents: 9894
diff changeset
1059 char exedir[MAX_PATH];
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1060 WNDCLASS wc;
7682
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
1061 if(arg)
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
1062 {
9488
abe81caa8cc1 fix fullscreenswitching patch by Joey Parrish <joey at nicewarrior.org>
faust3
parents: 9380
diff changeset
1063 if(strstr(arg,"noaccel"))
7682
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
1064 {
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
1065 mp_msg(MSGT_VO,MSGL_V,"<vo_directx><INFO>disabled overlay\n");
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
1066 nooverlay = 1;
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
1067 }
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
1068 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1069 /*load icon from the main app*/
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1070 if(GetModuleFileName(NULL,exedir,MAX_PATH))
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1071 {
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1072 mplayericon = ExtractIcon( hInstance, exedir, 0 );
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1073 }
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1074 if(!mplayericon)mplayericon=LoadIcon(NULL,IDI_APPLICATION);
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1075 mplayercursor = LoadCursor(NULL, IDC_ARROW);
13775
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
1076 monitor_rect.right=GetSystemMetrics(SM_CXSCREEN);
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
1077 monitor_rect.bottom=GetSystemMetrics(SM_CYSCREEN);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1078
14205
87148f636da2 added colorkey support for vo_directx.
joey
parents: 13787
diff changeset
1079 windowcolor = vo_colorkey;
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1080 colorbrush = CreateSolidBrush(windowcolor);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1081 blackbrush = (HBRUSH)GetStockObject(BLACK_BRUSH);
16975
3876c807d36c Generate double-click mouse events.
joey
parents: 16973
diff changeset
1082 wc.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1083 wc.lpfnWndProc = WndProc;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1084 wc.cbClsExtra = 0;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1085 wc.cbWndExtra = 0;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1086 wc.hInstance = hInstance;
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1087 wc.hCursor = mplayercursor;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1088 wc.hIcon = mplayericon;
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1089 wc.hbrBackground = vidmode ? blackbrush : colorbrush;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1090 wc.lpszClassName = WNDCLASSNAME_WINDOWED;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1091 wc.lpszMenuName = NULL;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1092 RegisterClass(&wc);
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
1093 if (WinID != -1) hWnd = WinID;
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
1094 else
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1095 hWnd = CreateWindowEx(vidmode?WS_EX_TOPMOST:0,
16968
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1096 WNDCLASSNAME_WINDOWED,"",(vidmode || !vo_border)?WS_POPUP:WNDSTYLE,
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1097 CW_USEDEFAULT, CW_USEDEFAULT, 100, 100,NULL,NULL,hInstance,NULL);
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1098 wc.hbrBackground = blackbrush;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1099 wc.lpszClassName = WNDCLASSNAME_FULLSCREEN;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1100 RegisterClass(&wc);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1101
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1102 if (Directx_InitDirectDraw()!= 0)return 1; //init DirectDraw
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1103
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1104 if(!vidmode)hWndFS = CreateWindow(WNDCLASSNAME_FULLSCREEN,"MPlayer Fullscreen",WS_POPUP,monitor_rect.left,monitor_rect.top,monitor_rect.right-monitor_rect.left,monitor_rect.bottom-monitor_rect.top,hWnd,NULL,hInstance,NULL);
13775
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
1105 mp_msg(MSGT_VO, MSGL_DBG3 ,"<vo_directx><INFO>initial mplayer windows created\n");
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1106
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1107 if (Directx_CheckPrimaryPixelformat()!=0)return 1;
7682
71758531a52d -fixes vo_directx to work with -fixed-vo
arpi
parents: 7624
diff changeset
1108 if (!nooverlay && Directx_CheckOverlayPixelformats() == 0) //check for supported hardware
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1109 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1110 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>hardware supports overlay\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1111 nooverlay = 0;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1112 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1113 else //if we can't have overlay we create a backpuffer with the same imageformat as the primary surface
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1114 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1115 mp_msg(MSGT_VO, MSGL_V ,"<vo_directx><INFO>using backpuffer\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1116 nooverlay = 1;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1117 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1118 mp_msg(MSGT_VO, MSGL_DBG3 ,"<vo_directx><INFO>preinit succesfully finished\n");
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1119 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1120 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1121
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15690
diff changeset
1122 static int draw_slice(uint8_t *src[], int stride[], int w,int h,int x,int y )
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1123 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1124 uint8_t *s;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1125 uint8_t *d;
24840
ccec024aeb92 Remove unused variables.
zuxy
parents: 24835
diff changeset
1126 uint32_t uvstride=dstride/2;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1127 // copy Y
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1128 d=image+dstride*y+x;
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1129 s=src[0];
19242
8298ac25902e optimize and simplify memcpy usage, use mem2agpcpy_pic
reimar
parents: 18952
diff changeset
1130 mem2agpcpy_pic(d,s,w,h,dstride,stride[0]);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1131
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1132 w/=2;h/=2;x/=2;y/=2;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1133
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1134 // copy U
8490
ac40496c7d9e 1000l! I have no idea how this code worked at all before. I guess no
rfelker
parents: 8148
diff changeset
1135 d=image+dstride*image_height + uvstride*y+x;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1136 if(image_format == IMGFMT_YV12)s=src[2];
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1137 else s=src[1];
19242
8298ac25902e optimize and simplify memcpy usage, use mem2agpcpy_pic
reimar
parents: 18952
diff changeset
1138 mem2agpcpy_pic(d,s,w,h,uvstride,stride[1]);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1139
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1140 // copy V
8490
ac40496c7d9e 1000l! I have no idea how this code worked at all before. I guess no
rfelker
parents: 8148
diff changeset
1141 d=image+dstride*image_height +uvstride*(image_height/2) + uvstride*y+x;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1142 if(image_format == IMGFMT_YV12)s=src[1];
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1143 else s=src[2];
19242
8298ac25902e optimize and simplify memcpy usage, use mem2agpcpy_pic
reimar
parents: 18952
diff changeset
1144 mem2agpcpy_pic(d,s,w,h,uvstride,stride[2]);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1145 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1146 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1147
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1148 static void flip_page(void)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1149 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1150 HRESULT dxresult;
8519
ebd7934c8f1f 10l and correct aspect
faust3
parents: 8495
diff changeset
1151 g_lpddsBack->lpVtbl->Unlock (g_lpddsBack,NULL);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1152 if (vo_doublebuffering)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1153 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1154 // flip to the next image in the sequence
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1155 dxresult = g_lpddsOverlay->lpVtbl->Flip( g_lpddsOverlay,NULL, DDFLIP_WAIT);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1156 if(dxresult == DDERR_SURFACELOST)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1157 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1158 mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR><vo_directx><INFO>Restoring Surface\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1159 g_lpddsBack->lpVtbl->Restore( g_lpddsBack );
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1160 // restore overlay and primary before calling
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1161 // Directx_ManageDisplay() to avoid error messages
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1162 g_lpddsOverlay->lpVtbl->Restore( g_lpddsOverlay );
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1163 g_lpddsPrimary->lpVtbl->Restore( g_lpddsPrimary );
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1164 // update overlay in case we return from screensaver
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1165 Directx_ManageDisplay();
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1166 dxresult = g_lpddsOverlay->lpVtbl->Flip( g_lpddsOverlay,NULL, DDFLIP_WAIT);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1167 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1168 if(dxresult != DD_OK)mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>can't flip page\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1169 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1170 if(nooverlay)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1171 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1172 DDBLTFX ddbltfx;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1173 // ask for the "NOTEARING" option
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1174 memset( &ddbltfx, 0, sizeof(DDBLTFX) );
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1175 ddbltfx.dwSize = sizeof(DDBLTFX);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1176 ddbltfx.dwDDFX = DDBLTFX_NOTEARING;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1177 g_lpddsPrimary->lpVtbl->Blt(g_lpddsPrimary, &rd, g_lpddsBack, NULL, DDBLT_WAIT, &ddbltfx);
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1178 }
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1179 if (g_lpddsBack->lpVtbl->Lock(g_lpddsBack,NULL,&ddsdsf, DDLOCK_NOSYSLOCK | DDLOCK_WAIT , NULL) == DD_OK) {
24835
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1180 if(vo_directrendering && (dstride != ddsdsf.lPitch)){
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1181 mp_msg(MSGT_VO,MSGL_WARN,"<vo_directx><WARN>stride changed !!!! disabling direct rendering\n");
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1182 vo_directrendering=0;
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1183 }
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1184 if (tmp_image)
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1185 free(tmp_image);
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1186 tmp_image = NULL;
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1187 dstride = ddsdsf.lPitch;
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1188 image = ddsdsf.lpSurface;
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1189 } else if (!tmp_image) {
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1190 mp_msg(MSGT_VO, MSGL_WARN, "<vo_directx><WARN>Locking the surface failed, rendering to a hidden surface!\n");
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1191 tmp_image = image = calloc(1, image_height * dstride * 2);
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1192 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1193 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1194
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15690
diff changeset
1195 static int draw_frame(uint8_t *src[])
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1196 {
23457
a124f3abc1ec Replace implicit use of fast_memcpy via macro by explicit use to allow
reimar
parents: 23077
diff changeset
1197 fast_memcpy( image, *src, dstride * image_height );
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1198 return 0;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1199 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1200
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1201 static uint32_t get_image(mp_image_t *mpi)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1202 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1203 if(mpi->flags&MP_IMGFLAG_READABLE) {mp_msg(MSGT_VO, MSGL_V,"<vo_directx><ERROR>slow video ram\n");return VO_FALSE;}
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1204 if(mpi->type==MP_IMGTYPE_STATIC) {mp_msg(MSGT_VO, MSGL_V,"<vo_directx><ERROR>not static\n");return VO_FALSE;}
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1205 if((mpi->width==dstride) || (mpi->flags&(MP_IMGFLAG_ACCEPT_STRIDE|MP_IMGFLAG_ACCEPT_WIDTH)))
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1206 {
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1207 if(mpi->flags&MP_IMGFLAG_PLANAR)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1208 {
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1209 if(image_format == IMGFMT_YV12)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1210 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1211 mpi->planes[2]= image + dstride*image_height;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1212 mpi->planes[1]= image + dstride*image_height+ dstride*image_height/4;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1213 mpi->stride[1]=mpi->stride[2]=dstride/2;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1214 }
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1215 else if(image_format == IMGFMT_IYUV || image_format == IMGFMT_I420)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1216 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1217 mpi->planes[1]= image + dstride*image_height;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1218 mpi->planes[2]= image + dstride*image_height+ dstride*image_height/4;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1219 mpi->stride[1]=mpi->stride[2]=dstride/2;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1220 }
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1221 else if(image_format == IMGFMT_YVU9)
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1222 {
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1223 mpi->planes[2] = image + dstride*image_height;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1224 mpi->planes[1] = image + dstride*image_height+ dstride*image_height/16;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1225 mpi->stride[1]=mpi->stride[2]=dstride/4;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1226 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1227 }
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1228 mpi->planes[0]=image;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1229 mpi->stride[0]=dstride;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1230 mpi->width=image_width;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1231 mpi->height=image_height;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1232 mpi->flags|=MP_IMGFLAG_DIRECT;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1233 mp_msg(MSGT_VO, MSGL_DBG3, "<vo_directx><INFO>Direct Rendering ENABLED\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1234 return VO_TRUE;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1235 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1236 return VO_FALSE;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1237 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1238
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1239 static uint32_t put_image(mp_image_t *mpi){
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1240
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1241 uint8_t *d;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1242 uint8_t *s;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1243 uint32_t x = mpi->x;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1244 uint32_t y = mpi->y;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1245 uint32_t w = mpi->w;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1246 uint32_t h = mpi->h;
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
1247
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
1248 if (WinID != -1) Directx_ManageDisplay();
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1249
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1250 if((mpi->flags&MP_IMGFLAG_DIRECT)||(mpi->flags&MP_IMGFLAG_DRAW_CALLBACK))
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1251 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1252 mp_msg(MSGT_VO, MSGL_DBG3 ,"<vo_directx><INFO>put_image: nothing to do: drawslices\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1253 return VO_TRUE;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1254 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1255
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1256 if (mpi->flags&MP_IMGFLAG_PLANAR)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1257 {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1258
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1259 if(image_format!=IMGFMT_YVU9)draw_slice(mpi->planes,mpi->stride,mpi->w,mpi->h,0,0);
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1260 else
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1261 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1262 // copy Y
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1263 d=image+dstride*y+x;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1264 s=mpi->planes[0];
19242
8298ac25902e optimize and simplify memcpy usage, use mem2agpcpy_pic
reimar
parents: 18952
diff changeset
1265 mem2agpcpy_pic(d,s,w,h,dstride,mpi->stride[0]);
8519
ebd7934c8f1f 10l and correct aspect
faust3
parents: 8495
diff changeset
1266 w/=4;h/=4;x/=4;y/=4;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1267 // copy V
8519
ebd7934c8f1f 10l and correct aspect
faust3
parents: 8495
diff changeset
1268 d=image+dstride*image_height + dstride*y/4+x;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1269 s=mpi->planes[2];
19242
8298ac25902e optimize and simplify memcpy usage, use mem2agpcpy_pic
reimar
parents: 18952
diff changeset
1270 mem2agpcpy_pic(d,s,w,h,dstride/4,mpi->stride[1]);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1271 // copy U
8519
ebd7934c8f1f 10l and correct aspect
faust3
parents: 8495
diff changeset
1272 d=image+dstride*image_height + dstride*image_height/16 + dstride/4*y+x;
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1273 s=mpi->planes[1];
19242
8298ac25902e optimize and simplify memcpy usage, use mem2agpcpy_pic
reimar
parents: 18952
diff changeset
1274 mem2agpcpy_pic(d,s,w,h,dstride/4,mpi->stride[2]);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1275 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1276 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1277 else //packed
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1278 {
27738
c89a913b5d5e Honour differences between src and dst stride for packed yuv
faust3
parents: 27343
diff changeset
1279 mem2agpcpy_pic(image, mpi->planes[0], w * (mpi->bpp / 8), h, dstride, mpi->stride[0]);
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1280 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1281 return VO_TRUE;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1282 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1283
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15690
diff changeset
1284 static int
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1285 config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t options, char *title, uint32_t format)
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1286 {
13438
faust3
parents: 13157
diff changeset
1287 RECT rd;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1288 vo_fs = options & 0x01;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1289 image_format = format;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1290 image_width = width;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1291 image_height = height;
8519
ebd7934c8f1f 10l and correct aspect
faust3
parents: 8495
diff changeset
1292 d_image_width = d_width;
ebd7934c8f1f 10l and correct aspect
faust3
parents: 8495
diff changeset
1293 d_image_height = d_height;
13438
faust3
parents: 13157
diff changeset
1294 if(format != primary_image_format)nooverlay = 0;
12387
5c2e728f5a00 keepaspect support, tryed to clean up DirectxManageDisplay a bit, enabled UYVY support and fixed bugs where switching to fullscreen would keep the console window on top and where the initial window position is wrongly calculated
faust3
parents: 12192
diff changeset
1295 window_aspect= (float)d_image_width / (float)d_image_height;
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1296
27343
5fe6a8adf569 Rename two GUI-related preprocessor directives:
diego
parents: 26739
diff changeset
1297 #ifdef CONFIG_GUI
18952
68560e9f3d6f handle sub-window WinID checks in the gui.
vayne
parents: 18913
diff changeset
1298 if(use_gui){
18913
2dc84d07332c Initial win32 gui release.
vayne
parents: 17870
diff changeset
1299 guiGetEvent(guiSetShVideo, 0);
2dc84d07332c Initial win32 gui release.
vayne
parents: 17870
diff changeset
1300 }
2dc84d07332c Initial win32 gui release.
vayne
parents: 17870
diff changeset
1301 #endif
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1302 /*release all directx objects*/
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1303 if (g_cc != NULL)g_cc->lpVtbl->Release(g_cc);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1304 g_cc=NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1305 if(g_lpddclipper)g_lpddclipper->lpVtbl->Release(g_lpddclipper);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1306 g_lpddclipper=NULL;
15428
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1307 if (g_lpddsBack != NULL) g_lpddsBack->lpVtbl->Release(g_lpddsBack);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1308 g_lpddsBack = NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1309 if(vo_doublebuffering)
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1310 if (g_lpddsOverlay != NULL)g_lpddsOverlay->lpVtbl->Release(g_lpddsOverlay);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1311 g_lpddsOverlay = NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1312 if (g_lpddsPrimary != NULL) g_lpddsPrimary->lpVtbl->Release(g_lpddsPrimary);
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1313 g_lpddsPrimary = NULL;
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1314 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>overlay surfaces released\n");
3d26652b8d29 multifile leak fixes by Timothy Lee <timothy.lee at siriushk.com> +some more -fixed-vo fixes
faust3
parents: 14692
diff changeset
1315
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1316 if(!vidmode){
22459
d870e862d272 Simplify config by using code available in video_out.c
reimar
parents: 22289
diff changeset
1317 if(!vo_geometry){
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1318 GetWindowRect(hWnd,&rd);
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1319 vo_dx=rd.left;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1320 vo_dy=rd.top;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1321 }
13775
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
1322 vo_dx += monitor_rect.left; /* move position to global window space */
f4cbdc7d5c49 make it possible to select the monitor even when in nonexclusive mode, based on patch by Anton Ragarsson <anton at infeline.org>
faust3
parents: 13736
diff changeset
1323 vo_dy += monitor_rect.top;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1324 rd.left = vo_dx;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1325 rd.top = vo_dy;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1326 rd.right = rd.left + d_image_width;
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1327 rd.bottom = rd.top + d_image_height;
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
1328 if (WinID == -1) {
16968
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1329 if (vo_border)
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1330 AdjustWindowRect(&rd,WNDSTYLE,FALSE);
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1331 SetWindowPos(hWnd,NULL, vo_dx, vo_dy,rd.right-rd.left,rd.bottom-rd.top,SWP_SHOWWINDOW|SWP_NOOWNERZORDER);
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
1332 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1333 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1334 else ShowWindow(hWnd,SW_SHOW);
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1335
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1336 if(vo_fs && !vidmode)ShowWindow(hWndFS,SW_SHOW);
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
1337 if (WinID == -1)
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1338 SetWindowText(hWnd,title);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1339
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1340
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1341 if(vidmode)vo_fs=0;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1342
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1343
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1344 /*create the surfaces*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1345 if(Directx_CreatePrimarySurface())return 1;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1346
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1347 //create palette for 256 color mode
14400
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1348 if(image_format==IMGFMT_BGR8){
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1349 LPDIRECTDRAWPALETTE ddpalette=NULL;
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1350 char* palette=malloc(4*256);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1351 int i;
14400
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1352 for(i=0; i<256; i++){
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1353 palette[4*i+0] = ((i >> 5) & 0x07) * 255 / 7;
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1354 palette[4*i+1] = ((i >> 2) & 0x07) * 255 / 7;
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1355 palette[4*i+2] = ((i >> 0) & 0x03) * 255 / 3;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1356 palette[4*i+3] = PC_NOCOLLAPSE;
14400
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1357 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1358 g_lpdd->lpVtbl->CreatePalette(g_lpdd,DDPCAPS_8BIT|DDPCAPS_INITIALIZE,palette,&ddpalette,NULL);
14400
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1359 g_lpddsPrimary->lpVtbl->SetPalette(g_lpddsPrimary,ddpalette);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1360 free(palette);
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1361 ddpalette->lpVtbl->Release(ddpalette);
14400
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1362 }
50d99489dfe5 256 color mode support, use -vm to get better output when overlay is not supported
faust3
parents: 14302
diff changeset
1363
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1364 if (!nooverlay && Directx_CreateOverlay(image_format))
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1365 {
10640
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
1366 if(format == primary_image_format)nooverlay=1; /*overlay creation failed*/
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
1367 else {
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
1368 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't use overlay mode: please use -vo directx:noaccel\n");
01e0d93182f8 fix playback of rgb files when overlay is not disabled
faust3
parents: 9943
diff changeset
1369 return 1;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1370 }
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1371 }
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1372 if(nooverlay)
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1373 {
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1374 if(Directx_CreateBackpuffer())
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1375 {
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1376 mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't get the driver to work on your system :(\n");
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1377 return 1;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1378 }
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1379 mp_msg(MSGT_VO, MSGL_V,"<vo_directx><INFO>back surface created\n");
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1380 vo_doublebuffering = 0;
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1381 /*create clipper for nonoverlay mode*/
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1382 if(g_lpdd->lpVtbl->CreateClipper(g_lpdd, 0, &g_lpddclipper,NULL)!= DD_OK){mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't create clipper\n");return 1;}
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1383 if(g_lpddclipper->lpVtbl->SetHWnd (g_lpddclipper, 0, hWnd)!= DD_OK){mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't associate clipper with window\n");return 1;}
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1384 if(g_lpddsPrimary->lpVtbl->SetClipper (g_lpddsPrimary,g_lpddclipper)!=DD_OK){mp_msg(MSGT_VO, MSGL_FATAL,"<vo_directx><FATAL ERROR>can't associate primary surface with clipper\n");return 1;}
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1385 mp_msg(MSGT_VO, MSGL_DBG3,"<vo_directx><INFO>clipper succesfully created\n");
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1386 }else{
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1387 if(DD_OK != g_lpddsOverlay->lpVtbl->QueryInterface(g_lpddsOverlay,&IID_IDirectDrawColorControl,(void**)&g_cc))
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1388 mp_msg(MSGT_VO, MSGL_V,"<vo_directx><WARN>unable to get DirectDraw ColorControl interface\n");
8667
7753ba3fdb15 fullscreencode rewritten, some cleanup
faust3
parents: 8519
diff changeset
1389 }
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1390 Directx_ManageDisplay();
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1391 memset(&ddsdsf, 0,sizeof(DDSURFACEDESC2));
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1392 ddsdsf.dwSize = sizeof (DDSURFACEDESC2);
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1393 if (g_lpddsBack->lpVtbl->Lock(g_lpddsBack,NULL,&ddsdsf, DDLOCK_NOSYSLOCK | DDLOCK_WAIT, NULL) == DD_OK) {
24835
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1394 dstride = ddsdsf.lPitch;
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1395 image = ddsdsf.lpSurface;
b6d6af21c2ee Cosmetic fix for r24861
zuxy
parents: 24833
diff changeset
1396 return 0;
24833
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1397 }
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1398 mp_msg(MSGT_VO, MSGL_V, "<vo_directx><ERROR>Initial Lock on the Surface failed.\n");
02fa1df91e2f Avoid crash after recovering from screensaver
zuxy
parents: 23457
diff changeset
1399 return 1;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1400 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1401
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1402 //function to set color controls
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1403 // brightness [0, 10000]
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1404 // contrast [0, 20000]
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1405 // hue [-180, 180]
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1406 // saturation [0, 20000]
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1407 static uint32_t color_ctrl_set(char *what, int value)
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1408 {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1409 uint32_t r = VO_NOTIMPL;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1410 DDCOLORCONTROL dcc;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1411 //printf("\n*** %s = %d\n", what, value);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1412 if (!g_cc) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1413 //printf("\n *** could not get color control interface!!!\n");
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1414 return VO_NOTIMPL;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1415 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1416 ZeroMemory(&dcc, sizeof(dcc));
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1417 dcc.dwSize = sizeof(dcc);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1418
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1419 if (!strcmp(what, "brightness")) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1420 dcc.dwFlags = DDCOLOR_BRIGHTNESS;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1421 dcc.lBrightness = (value + 100) * 10000 / 200;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1422 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1423 } else if (!strcmp(what, "contrast")) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1424 dcc.dwFlags = DDCOLOR_CONTRAST;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1425 dcc.lContrast = (value + 100) * 20000 / 200;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1426 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1427 } else if (!strcmp(what, "hue")) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1428 dcc.dwFlags = DDCOLOR_HUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1429 dcc.lHue = value * 180 / 100;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1430 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1431 } else if (!strcmp(what, "saturation")) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1432 dcc.dwFlags = DDCOLOR_SATURATION;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1433 dcc.lSaturation = (value + 100) * 20000 / 200;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1434 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1435 }
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1436
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1437 if (r == VO_TRUE) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1438 g_cc->lpVtbl->SetColorControls(g_cc, &dcc);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1439 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1440 return r;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1441 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1442
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1443 //analoguous to color_ctrl_set
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1444 static uint32_t color_ctrl_get(char *what, int *value)
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1445 {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1446 uint32_t r = VO_NOTIMPL;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1447 DDCOLORCONTROL dcc;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1448 if (!g_cc) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1449 //printf("\n *** could not get color control interface!!!\n");
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1450 return VO_NOTIMPL;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1451 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1452 ZeroMemory(&dcc, sizeof(dcc));
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1453 dcc.dwSize = sizeof(dcc);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1454
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1455 if (g_cc->lpVtbl->GetColorControls(g_cc, &dcc) != DD_OK) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1456 return r;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1457 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1458
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1459 if (!strcmp(what, "brightness") && (dcc.dwFlags & DDCOLOR_BRIGHTNESS)) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1460 *value = dcc.lBrightness * 200 / 10000 - 100;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1461 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1462 } else if (!strcmp(what, "contrast") && (dcc.dwFlags & DDCOLOR_CONTRAST)) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1463 *value = dcc.lContrast * 200 / 20000 - 100;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1464 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1465 } else if (!strcmp(what, "hue") && (dcc.dwFlags & DDCOLOR_HUE)) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1466 *value = dcc.lHue * 100 / 180;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1467 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1468 } else if (!strcmp(what, "saturation") && (dcc.dwFlags & DDCOLOR_SATURATION)) {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1469 *value = dcc.lSaturation * 200 / 20000 - 100;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1470 r = VO_TRUE;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1471 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1472 // printf("\n*** %s = %d\n", what, *value);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1473
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1474 return r;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1475 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1476
16171
fd51fd1ff231 Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents: 15690
diff changeset
1477 static int control(uint32_t request, void *data, ...)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1478 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1479 switch (request) {
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1480
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1481 case VOCTRL_GET_IMAGE:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1482 return get_image(data);
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1483 case VOCTRL_QUERY_FORMAT:
17853
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
1484 last_rect.left = 0xDEADC0DE; // reset window position cache
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1485 return query_format(*((uint32_t*)data));
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1486 case VOCTRL_DRAW_IMAGE:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1487 return put_image(data);
16968
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1488 case VOCTRL_BORDER:
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1489 if(WinID != -1) return VO_TRUE;
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1490 if(vidmode)
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1491 {
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1492 mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>border has no meaning in exclusive mode\n");
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1493 }
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1494 else
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1495 {
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1496 if(vo_border) {
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1497 vo_border = 0;
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1498 SetWindowLong(hWnd, GWL_STYLE, WS_POPUP);
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1499 } else {
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1500 vo_border = 1;
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1501 SetWindowLong(hWnd, GWL_STYLE, WNDSTYLE);
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1502 }
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1503 // needed AFAICT to force the window to
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1504 // redisplay with the new style. --Joey
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1505 if (!vo_fs) {
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1506 ShowWindow(hWnd,SW_HIDE);
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1507 ShowWindow(hWnd,SW_SHOW);
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1508 }
17870
d5971cc55b39 10l the cpu hog fix broke fullscreenswitching with -wid
faust3
parents: 17853
diff changeset
1509 last_rect.left = 0xDEADC0DE; // reset window position cache
16968
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1510 Directx_ManageDisplay();
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1511 }
e9d849bf8050 add a switch, slave command, and vo control to toggle borderless window.
joey
parents: 16966
diff changeset
1512 return VO_TRUE;
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11510
diff changeset
1513 case VOCTRL_ONTOP:
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
1514 if(WinID != -1) return VO_TRUE;
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1515 if(vidmode)
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11510
diff changeset
1516 {
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11510
diff changeset
1517 mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>ontop has no meaning in exclusive mode\n");
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11510
diff changeset
1518 }
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11510
diff changeset
1519 else
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11510
diff changeset
1520 {
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11510
diff changeset
1521 if(vo_ontop) vo_ontop = 0;
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11510
diff changeset
1522 else vo_ontop = 1;
17870
d5971cc55b39 10l the cpu hog fix broke fullscreenswitching with -wid
faust3
parents: 17853
diff changeset
1523 last_rect.left = 0xDEADC0DE; // reset window position cache
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1524 Directx_ManageDisplay();
11542
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11510
diff changeset
1525 }
85e503ddf65f runtime 'stay-on-top' functionality
joey
parents: 11510
diff changeset
1526 return VO_TRUE;
13091
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1527 case VOCTRL_ROOTWIN:
14207
f8670fdf6ab1 added -wid support for vo_directx.
joey
parents: 14206
diff changeset
1528 if(WinID != -1) return VO_TRUE;
13091
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1529 if(vidmode)
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1530 {
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1531 mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>rootwin has no meaning in exclusive mode\n");
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1532 }
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1533 else
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1534 {
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1535 if(vo_rootwin) vo_rootwin = 0;
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1536 else vo_rootwin = 1;
17870
d5971cc55b39 10l the cpu hog fix broke fullscreenswitching with -wid
faust3
parents: 17853
diff changeset
1537 last_rect.left = 0xDEADC0DE; // reset window position cache
13091
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1538 Directx_ManageDisplay();
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1539 }
25f51c72eb06 added runtime toggle of root window playback
joey
parents: 13090
diff changeset
1540 return VO_TRUE;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1541 case VOCTRL_FULLSCREEN:
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1542 {
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1543 if(vidmode)
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1544 {
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1545 mp_msg(MSGT_VO, MSGL_ERR,"<vo_directx><ERROR>currently we do not allow to switch from exclusive to windowed mode\n");
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1546 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1547 else
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1548 {
13090
0c37bcfc5ef0 added -rootwin support to vo_directx
joey
parents: 12861
diff changeset
1549 if(!vo_fs)
0c37bcfc5ef0 added -rootwin support to vo_directx
joey
parents: 12861
diff changeset
1550 {
0c37bcfc5ef0 added -rootwin support to vo_directx
joey
parents: 12861
diff changeset
1551 vo_fs=1;
0c37bcfc5ef0 added -rootwin support to vo_directx
joey
parents: 12861
diff changeset
1552 ShowWindow(hWndFS,SW_SHOW);
0c37bcfc5ef0 added -rootwin support to vo_directx
joey
parents: 12861
diff changeset
1553 ShowWindow(hWnd,SW_HIDE);
14692
f9b417d4a18a always take the focus in fullscreen mode patch by Gianluigi Tiesi <mplayer at netfarm.it>
faust3
parents: 14401
diff changeset
1554 SetForegroundWindow(hWndFS);
13090
0c37bcfc5ef0 added -rootwin support to vo_directx
joey
parents: 12861
diff changeset
1555 }
0c37bcfc5ef0 added -rootwin support to vo_directx
joey
parents: 12861
diff changeset
1556 else
0c37bcfc5ef0 added -rootwin support to vo_directx
joey
parents: 12861
diff changeset
1557 {
0c37bcfc5ef0 added -rootwin support to vo_directx
joey
parents: 12861
diff changeset
1558 vo_fs=0;
0c37bcfc5ef0 added -rootwin support to vo_directx
joey
parents: 12861
diff changeset
1559 ShowWindow(hWndFS,SW_HIDE);
0c37bcfc5ef0 added -rootwin support to vo_directx
joey
parents: 12861
diff changeset
1560 ShowWindow(hWnd,SW_SHOW);
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1561 }
17870
d5971cc55b39 10l the cpu hog fix broke fullscreenswitching with -wid
faust3
parents: 17853
diff changeset
1562 last_rect.left = 0xDEADC0DE; // reset window position cache
12005
a8adfcf47f4e adapter selection patch by Rune <runner at mail.tele.dk> +first attempt to implement 2 window fullscreenswitching by me
faust3
parents: 11542
diff changeset
1563 Directx_ManageDisplay();
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1564 break;
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1565 }
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1566 return VO_TRUE;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1567 }
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1568 case VOCTRL_SET_EQUALIZER: {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1569 va_list ap;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1570 int value;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1571
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1572 va_start(ap, data);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1573 value = va_arg(ap, int);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1574 va_end(ap);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1575 return color_ctrl_set(data, value);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1576 }
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1577 case VOCTRL_GET_EQUALIZER: {
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1578 va_list ap;
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1579 int *value;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29212
diff changeset
1580
13736
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1581 va_start(ap, data);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1582 value = va_arg(ap, int*);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1583 va_end(ap);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1584 return color_ctrl_get(data, value);
e4281b5463a4 overlay color control support based on patch by Vitos Laszlo <laca <at> evol.ro>
faust3
parents: 13438
diff changeset
1585 }
22459
d870e862d272 Simplify config by using code available in video_out.c
reimar
parents: 22289
diff changeset
1586 case VOCTRL_UPDATE_SCREENINFO:
d870e862d272 Simplify config by using code available in video_out.c
reimar
parents: 22289
diff changeset
1587 if (vidmode) {
d870e862d272 Simplify config by using code available in video_out.c
reimar
parents: 22289
diff changeset
1588 vo_screenwidth = vm_width;
d870e862d272 Simplify config by using code available in video_out.c
reimar
parents: 22289
diff changeset
1589 vo_screenheight = vm_height;
d870e862d272 Simplify config by using code available in video_out.c
reimar
parents: 22289
diff changeset
1590 } else {
d870e862d272 Simplify config by using code available in video_out.c
reimar
parents: 22289
diff changeset
1591 vo_screenwidth = monitor_rect.right - monitor_rect.left;
d870e862d272 Simplify config by using code available in video_out.c
reimar
parents: 22289
diff changeset
1592 vo_screenheight = monitor_rect.bottom - monitor_rect.top;
d870e862d272 Simplify config by using code available in video_out.c
reimar
parents: 22289
diff changeset
1593 }
d870e862d272 Simplify config by using code available in video_out.c
reimar
parents: 22289
diff changeset
1594 aspect_save_screenres(vo_screenwidth, vo_screenheight);
d870e862d272 Simplify config by using code available in video_out.c
reimar
parents: 22289
diff changeset
1595 return VO_TRUE;
17853
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
1596 case VOCTRL_RESET:
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
1597 last_rect.left = 0xDEADC0DE; // reset window position cache
33ec9a9f4eef fix for MPlayer taking 100% CPU with -wid on some systems, patch by Martin Fiedler <martin.fiedler at gmx.net>
faust3
parents: 17534
diff changeset
1598 // fall-through intended
7537
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1599 };
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1600 return VO_NOTIMPL;
719bb52b987a argh i forgot to add new file..
arpi
parents:
diff changeset
1601 }