Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
6956ce61
Commit
6956ce61
authored
May 18, 2010
by
Maarten Lankhorst
Committed by
Alexandre Julliard
May 19, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mciqtz32: Add support for mciUpdate.
parent
e51d5af9
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
71 additions
and
2 deletions
+71
-2
Makefile.in
dlls/mciqtz32/Makefile.in
+1
-1
mciqtz.c
dlls/mciqtz32/mciqtz.c
+70
-1
No files found.
dlls/mciqtz32/Makefile.in
View file @
6956ce61
...
...
@@ -3,7 +3,7 @@ TOPOBJDIR = ../..
SRCDIR
=
@srcdir@
VPATH
=
@srcdir@
MODULE
=
mciqtz32.dll
IMPORTS
=
strmiids oleaut32 ole32 winmm user32 kernel32
IMPORTS
=
strmiids oleaut32 ole32 winmm user32
gdi32
kernel32
C_SRCS
=
\
mciqtz.c
...
...
dlls/mciqtz32/mciqtz.c
View file @
6956ce61
...
...
@@ -734,6 +734,74 @@ out:
return
ret
;
}
/******************************************************************************
* MCIAVI_mciUpdate [internal]
*/
static
DWORD
MCIQTZ_mciUpdate
(
UINT
wDevID
,
DWORD
dwFlags
,
LPMCI_DGV_UPDATE_PARMS
lpParms
)
{
WINE_MCIQTZ
*
wma
;
DWORD
res
=
0
;
TRACE
(
"%04x, %08x, %p
\n
"
,
wDevID
,
dwFlags
,
lpParms
);
if
(
!
lpParms
)
return
MCIERR_NULL_PARAMETER_BLOCK
;
wma
=
MCIQTZ_mciGetOpenDev
(
wDevID
);
if
(
!
wma
)
return
MCIERR_INVALID_DEVICE_ID
;
if
(
dwFlags
&
MCI_DGV_UPDATE_HDC
)
{
IBasicVideo
*
vidbasic
;
IVideoWindow
*
vidwin
;
res
=
MCIERR_INTERNAL
;
IFilterGraph2_QueryInterface
(
wma
->
pgraph
,
&
IID_IVideoWindow
,
(
void
**
)
&
vidwin
);
IFilterGraph2_QueryInterface
(
wma
->
pgraph
,
&
IID_IBasicVideo
,
(
void
**
)
&
vidbasic
);
if
(
vidbasic
&&
vidwin
)
{
LONG
state
,
size
;
BYTE
*
data
;
BITMAPINFO
*
info
;
HRESULT
hr
;
RECT
src
,
dest
;
/* If in stopped state, nothing has been drawn to screen
* moving to pause, which is needed for the old dib renderer, will result
* in a single frame drawn, so hide the window here */
IVideoWindow_put_Visible
(
vidwin
,
OAFALSE
);
/* FIXME: Should we check the original state and restore it? */
IMediaControl_Pause
(
wma
->
pmctrl
);
IMediaControl_GetState
(
wma
->
pmctrl
,
-
1
,
&
state
);
if
(
FAILED
(
hr
=
IBasicVideo_GetCurrentImage
(
vidbasic
,
&
size
,
NULL
)))
{
WARN
(
"Could not get image size (hr = %x)
\n
"
,
hr
);
goto
out
;
}
data
=
HeapAlloc
(
GetProcessHeap
(),
0
,
size
);
info
=
(
BITMAPINFO
*
)
data
;
IBasicVideo_GetCurrentImage
(
vidbasic
,
&
size
,
(
LONG
*
)
data
);
data
+=
info
->
bmiHeader
.
biSize
;
IBasicVideo_GetSourcePosition
(
vidbasic
,
&
src
.
left
,
&
src
.
top
,
&
src
.
right
,
&
src
.
bottom
);
IBasicVideo_GetDestinationPosition
(
vidbasic
,
&
dest
.
left
,
&
dest
.
top
,
&
dest
.
right
,
&
dest
.
bottom
);
StretchDIBits
(
lpParms
->
hDC
,
dest
.
left
,
dest
.
top
,
dest
.
right
+
dest
.
left
,
dest
.
bottom
+
dest
.
top
,
src
.
left
,
src
.
top
,
src
.
right
+
src
.
left
,
src
.
bottom
+
src
.
top
,
data
,
info
,
DIB_RGB_COLORS
,
SRCCOPY
);
HeapFree
(
GetProcessHeap
(),
0
,
data
);
}
res
=
0
;
out:
if
(
vidbasic
)
IBasicVideo_Release
(
vidbasic
);
if
(
vidwin
)
{
IVideoWindow_put_Visible
(
vidwin
,
OATRUE
);
IVideoWindow_Release
(
vidwin
);
}
}
else
if
(
dwFlags
)
FIXME
(
"Unhandled flags %x
\n
"
,
dwFlags
);
return
res
;
}
/***************************************************************************
* MCIQTZ_mciSetAudio [internal]
*/
...
...
@@ -797,6 +865,8 @@ LRESULT CALLBACK MCIQTZ_DriverProc(DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg,
case
MCI_WHERE
:
return
MCIQTZ_mciWhere
(
dwDevID
,
dwParam1
,
(
LPMCI_DGV_RECT_PARMS
)
dwParam2
);
/* Digital Video specific */
case
MCI_SETAUDIO
:
return
MCIQTZ_mciSetAudio
(
dwDevID
,
dwParam1
,
(
LPMCI_DGV_SETAUDIO_PARMSW
)
dwParam2
);
case
MCI_UPDATE
:
return
MCIQTZ_mciUpdate
(
dwDevID
,
dwParam1
,
(
LPMCI_DGV_UPDATE_PARMS
)
dwParam2
);
case
MCI_RECORD
:
case
MCI_PAUSE
:
case
MCI_RESUME
:
...
...
@@ -808,7 +878,6 @@ LRESULT CALLBACK MCIQTZ_DriverProc(DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg,
case
MCI_FREEZE
:
case
MCI_REALIZE
:
case
MCI_UNFREEZE
:
case
MCI_UPDATE
:
case
MCI_STEP
:
case
MCI_COPY
:
case
MCI_CUT
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment