Mercurial > mplayer.hg
view loader/wine/msacmdrv.h @ 34266:a6a1c973de4e
vo direct3d: fix crash in osd drawing code
The crash occurred when the video window was minimized and
the OSD should be drawn. This caused the OSD textures creation
to fail and later the OSD drawing code would assume they exist
and cause the crash.
When the video window is minimized a size change event with
the new size 0x0 is reported. This is now handled by deferring
the textures recreation. If the OSD should be drawn in the
meantime it will be checked if the OSD textures have been
allocated.
This commit is done with the permission of the vo direct3d
maintainer.
This is based on patches from Roger Pack (rogerdpack2 (gmail))
and Patrick Dinh (patrickdinh33 (yahoo)).
author | al |
---|---|
date | Sat, 19 Nov 2011 14:04:11 +0000 |
parents | 0f1b5b68af32 |
children |
line wrap: on
line source
/* * msacmdrv.h - Declarations for MSACM driver */ #ifndef MPLAYER_MSACMDRV_H #define MPLAYER_MSACMDRV_H #include "windef.h" #include "msacm.h" /*********************************************************************** * Types */ /*********************************************************************** * Defines/Enums */ #define MAKE_ACM_VERSION(mjr, mnr, bld) \ (((long)(mjr)<<24) | ((long)(mnr)<<16) | ((long)bld)) #define ACMDRVOPENDESC_SECTIONNAME_CHARS #define ACMDM_DRIVER_NOTIFY (ACMDM_BASE + 1) #define ACMDM_DRIVER_DETAILS (ACMDM_BASE + 10) #define ACMDM_HARDWARE_WAVE_CAPS_INPUT (ACMDM_BASE + 20) #define ACMDM_HARDWARE_WAVE_CAPS_OUTPUT (ACMDM_BASE + 21) #define ACMDM_FORMATTAG_DETAILS (ACMDM_BASE + 25) #define ACMDM_FORMAT_DETAILS (ACMDM_BASE + 26) #define ACMDM_FORMAT_SUGGEST (ACMDM_BASE + 27) #define ACMDM_FILTERTAG_DETAILS (ACMDM_BASE + 50) #define ACMDM_FILTER_DETAILS (ACMDM_BASE + 51) #define ACMDM_STREAM_OPEN (ACMDM_BASE + 76) #define ACMDM_STREAM_CLOSE (ACMDM_BASE + 77) #define ACMDM_STREAM_SIZE (ACMDM_BASE + 78) #define ACMDM_STREAM_CONVERT (ACMDM_BASE + 79) #define ACMDM_STREAM_RESET (ACMDM_BASE + 80) #define ACMDM_STREAM_PREPARE (ACMDM_BASE + 81) #define ACMDM_STREAM_UNPREPARE (ACMDM_BASE + 82) #define ACMDM_STREAM_UPDATE (ACMDM_BASE + 83) /*********************************************************************** * Structures */ typedef struct ACMDRVOPENDESCA { DWORD cbStruct; FOURCC fccType; FOURCC fccComp; DWORD dwVersion; DWORD dwFlags; DWORD dwError; LPCSTR pszSectionName; LPCSTR pszAliasName; DWORD dnDevNode; } ACMDRVOPENDESCA, *PACMDRVOPENDESCA; typedef struct ACMDRVOPENDESCW { DWORD cbStruct; FOURCC fccType; FOURCC fccComp; DWORD dwVersion; DWORD dwFlags; DWORD dwError; LPCWSTR pszSectionName; LPCWSTR pszAliasName; DWORD dnDevNode; } ACMDRVOPENDESCW, *PACMDRVOPENDESCW; typedef struct ACMDRVOPENDESC16 { DWORD cbStruct; FOURCC fccType; FOURCC fccComp; DWORD dwVersion; DWORD dwFlags; DWORD dwError; LPCSTR pszSectionName; LPCSTR pszAliasName; DWORD dnDevNode; } ACMDRVOPENDESC16, *NPACMDRVOPENDESC16, *LPACMDRVOPENDESC16; typedef struct ACMDRVSTREAMINSTANCE16 { DWORD cbStruct; LPWAVEFORMATEX pwfxSrc; LPWAVEFORMATEX pwfxDst; LPWAVEFILTER pwfltr; DWORD dwCallback; DWORD dwInstance; DWORD fdwOpen; DWORD fdwDriver; DWORD dwDriver; HACMSTREAM16 has; } ACMDRVSTREAMINSTANCE16, *NPACMDRVSTREAMINSTANCE16, *LPACMDRVSTREAMINSTANCE16; typedef struct ACMDRVSTREAMINSTANCE { DWORD cbStruct; PWAVEFORMATEX pwfxSrc; PWAVEFORMATEX pwfxDst; PWAVEFILTER pwfltr; DWORD dwCallback; DWORD dwInstance; DWORD fdwOpen; DWORD fdwDriver; DWORD dwDriver; HACMSTREAM has; } ACMDRVSTREAMINSTANCE, *PACMDRVSTREAMINSTANCE; typedef struct ACMDRVSTREAMHEADER16 *LPACMDRVSTREAMHEADER16; typedef struct ACMDRVSTREAMHEADER16 { DWORD cbStruct; DWORD fdwStatus; DWORD dwUser; LPBYTE pbSrc; DWORD cbSrcLength; DWORD cbSrcLengthUsed; DWORD dwSrcUser; LPBYTE pbDst; DWORD cbDstLength; DWORD cbDstLengthUsed; DWORD dwDstUser; DWORD fdwConvert; LPACMDRVSTREAMHEADER16 *padshNext; DWORD fdwDriver; DWORD dwDriver; /* Internal fields for ACM */ DWORD fdwPrepared; DWORD dwPrepared; LPBYTE pbPreparedSrc; DWORD cbPreparedSrcLength; LPBYTE pbPreparedDst; DWORD cbPreparedDstLength; } ACMDRVSTREAMHEADER16, *NPACMDRVSTREAMHEADER16; typedef struct ACMDRVSTREAMHEADER *PACMDRVSTREAMHEADER; typedef struct ACMDRVSTREAMHEADER { DWORD cbStruct; DWORD fdwStatus; DWORD dwUser; LPBYTE pbSrc; DWORD cbSrcLength; DWORD cbSrcLengthUsed; DWORD dwSrcUser; LPBYTE pbDst; DWORD cbDstLength; DWORD cbDstLengthUsed; DWORD dwDstUser; DWORD fdwConvert; PACMDRVSTREAMHEADER *padshNext; DWORD fdwDriver; DWORD dwDriver; /* Internal fields for ACM */ DWORD fdwPrepared; DWORD dwPrepared; LPBYTE pbPreparedSrc; DWORD cbPreparedSrcLength; LPBYTE pbPreparedDst; DWORD cbPreparedDstLength; } ACMDRVSTREAMHEADER; typedef struct ACMDRVSTREAMSIZE { DWORD cbStruct; DWORD fdwSize; DWORD cbSrcLength; DWORD cbDstLength; } ACMDRVSTREAMSIZE16, *NPACMDRVSTREAMSIZE16, *LPACMDRVSTREAMSIZE16, ACMDRVSTREAMSIZE, *PACMDRVSTREAMSIZE; typedef struct ACMDRVFORMATSUGGEST16 { DWORD cbStruct; DWORD fdwSuggest; LPWAVEFORMATEX pwfxSrc; DWORD cbwfxSrc; LPWAVEFORMATEX pwfxDst; DWORD cbwfxDst; } ACMDRVFORMATSUGGEST16, *NPACMDRVFORMATSUGGEST, *LPACMDRVFORMATSUGGEST; typedef struct ACMDRVFORMATSUGGEST { DWORD cbStruct; DWORD fdwSuggest; PWAVEFORMATEX pwfxSrc; DWORD cbwfxSrc; PWAVEFORMATEX pwfxDst; DWORD cbwfxDst; } ACMDRVFORMATSUGGEST, *PACMDRVFORMATSUGGEST; #endif /* MPLAYER_MSACMDRV_H */