Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
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-winehq
Commits
7e1b714f
Commit
7e1b714f
authored
Dec 15, 2008
by
Lei Zhang
Committed by
Alexandre Julliard
Dec 16, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
quartz: Enumerate all the pins on filter and check directions when rendering.
parent
db5d8a2b
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
48 additions
and
27 deletions
+48
-27
filtergraph.c
dlls/quartz/filtergraph.c
+48
-27
No files found.
dlls/quartz/filtergraph.c
View file @
7e1b714f
...
...
@@ -1318,7 +1318,7 @@ static HRESULT WINAPI FilterGraph2_Render(IFilterGraph2 *iface, IPin *ppinOut)
GUID
clsid
;
IPin
*
ppinfilter
;
IBaseFilter
*
pfilter
=
NULL
;
IEnumPins
*
penumpins
;
IEnumPins
*
penumpins
=
NULL
;
ULONG
pin
;
hr
=
GetFilterInfo
(
pMoniker
,
&
clsid
,
&
var
);
...
...
@@ -1348,40 +1348,61 @@ static HRESULT WINAPI FilterGraph2_Render(IFilterGraph2 *iface, IPin *ppinOut)
WARN
(
"Splitter Enumpins (%x)
\n
"
,
hr
);
goto
error
;
}
hr
=
IEnumPins_Next
(
penumpins
,
1
,
&
ppinfilter
,
&
pin
);
IEnumPins_Release
(
penumpins
);
if
(
FAILED
(
hr
))
{
WARN
(
"Next (%x)
\n
"
,
hr
);
goto
error
;
}
if
(
pin
==
0
)
{
WARN
(
"No Pin
\n
"
);
hr
=
E_FAIL
;
goto
error
;
}
/* Connect the pin to the "Renderer" */
hr
=
IPin_Connect
(
ppinOut
,
ppinfilter
,
NULL
);
IPin_Release
(
ppinfilter
)
;
while
((
hr
=
IEnumPins_Next
(
penumpins
,
1
,
&
ppinfilter
,
&
pin
))
==
S_OK
)
{
PIN_DIRECTION
dir
;
if
(
FAILED
(
hr
)
)
{
WARN
(
"Unable to connect %s to renderer (%x)
\n
"
,
debugstr_w
(
V_UNION
(
&
var
,
bstrVal
)),
hr
);
goto
error
;
}
TRACE
(
"Connected, recursing %s
\n
"
,
debugstr_w
(
V_UNION
(
&
var
,
bstrVal
)));
if
(
pin
==
0
)
{
WARN
(
"No Pin
\n
"
);
hr
=
E_FAIL
;
goto
error
;
}
VariantClear
(
&
var
);
hr
=
IPin_QueryDirection
(
ppinfilter
,
&
dir
);
if
(
FAILED
(
hr
))
{
IPin_Release
(
ppinfilter
);
WARN
(
"QueryDirection failed (%x)
\n
"
,
hr
);
goto
error
;
}
if
(
dir
!=
PINDIR_INPUT
)
{
IPin_Release
(
ppinfilter
);
continue
;
/* Wrong direction */
}
hr
=
FilterGraph2_RenderRecurse
(
This
,
ppinfilter
);
if
(
FAILED
(
hr
))
{
WARN
(
"Unable to connect recursively (%x)
\n
"
,
hr
);
goto
error
;
/* Connect the pin to the "Renderer" */
hr
=
IPin_Connect
(
ppinOut
,
ppinfilter
,
NULL
);
IPin_Release
(
ppinfilter
);
if
(
FAILED
(
hr
))
{
WARN
(
"Unable to connect %s to renderer (%x)
\n
"
,
debugstr_w
(
V_UNION
(
&
var
,
bstrVal
)),
hr
);
goto
error
;
}
TRACE
(
"Connected, recursing %s
\n
"
,
debugstr_w
(
V_UNION
(
&
var
,
bstrVal
)));
VariantClear
(
&
var
);
hr
=
FilterGraph2_RenderRecurse
(
This
,
ppinfilter
);
if
(
FAILED
(
hr
))
{
WARN
(
"Unable to connect recursively (%x)
\n
"
,
hr
);
goto
error
;
}
IBaseFilter_Release
(
pfilter
);
break
;
}
if
(
SUCCEEDED
(
hr
))
{
IEnumPins_Release
(
penumpins
);
break
;
/* out of IEnumMoniker_Next loop */
}
IBaseFilter_Release
(
pfilter
);
break
;
/* IEnumPins_Next failed, all other failure case caught by goto error */
WARN
(
"IEnumPins_Next (%x)
\n
"
,
hr
);
/* goto error */
error:
VariantClear
(
&
var
);
if
(
penumpins
)
IEnumPins_Release
(
penumpins
);
if
(
pfilter
)
{
IFilterGraph2_RemoveFilter
(
iface
,
pfilter
);
IBaseFilter_Release
(
pfilter
);
...
...
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