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
c71301a3
Commit
c71301a3
authored
Jul 01, 2003
by
Robert Shearman
Committed by
Alexandre Julliard
Jul 01, 2003
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Implemented IFilterMapper2.
parent
09242a8e
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
215 additions
and
12 deletions
+215
-12
Makefile.in
dlls/quartz/Makefile.in
+3
-1
enummoniker.c
dlls/quartz/enummoniker.c
+195
-0
filtergraph.c
dlls/quartz/filtergraph.c
+12
-0
filtermapper.c
dlls/quartz/filtermapper.c
+0
-0
main.c
dlls/quartz/main.c
+2
-0
quartz_private.h
dlls/quartz/quartz_private.h
+3
-11
No files found.
dlls/quartz/Makefile.in
View file @
c71301a3
...
...
@@ -3,14 +3,16 @@ TOPOBJDIR = ../..
SRCDIR
=
@srcdir@
VPATH
=
@srcdir@
MODULE
=
quartz.dll
IMPORTS
=
kernel32
IMPORTS
=
ole32 oleaut32 advapi32
kernel32
EXTRALIBS
=
$(LIBUUID)
LDDLLFLAGS
=
@LDDLLFLAGS@
SYMBOLFILE
=
$(MODULE)
.tmp.o
C_SRCS
=
\
enummoniker.c
\
filtergraph.c
\
filtermapper.c
\
main.c
@MAKE_DLL_RULES@
...
...
dlls/quartz/enummoniker.c
0 → 100644
View file @
c71301a3
/*
* IEnumMoniker implementation
*
* Copyright 2003 Robert Shearman
*
* This file contains the (internal) driver registration functions,
* driver enumeration APIs and DirectDraw creation functions.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#define COM_NO_WINDOWS_H
#include "ole2.h"
#include "strmif.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL
(
quartz
);
typedef
struct
EnumMonikerImpl
{
ICOM_VFIELD
(
IEnumMoniker
);
ULONG
ref
;
IMoniker
**
ppMoniker
;
ULONG
nMonikerCount
;
ULONG
index
;
}
EnumMonikerImpl
;
static
struct
ICOM_VTABLE
(
IEnumMoniker
)
EnumMonikerImpl_Vtbl
;
static
ULONG
WINAPI
EnumMonikerImpl_AddRef
(
LPENUMMONIKER
iface
);
HRESULT
EnumMonikerImpl_Create
(
IMoniker
**
ppMoniker
,
ULONG
nMonikerCount
,
IEnumMoniker
**
ppEnum
)
{
/* NOTE: assumes that array of IMonikers has already been AddRef'd
* I.e. this function does not AddRef the array of incoming
* IMonikers */
EnumMonikerImpl
*
pemi
=
CoTaskMemAlloc
(
sizeof
(
EnumMonikerImpl
));
TRACE
(
"(%p, %ld, %p)
\n
"
,
ppMoniker
,
nMonikerCount
,
ppEnum
);
*
ppEnum
=
NULL
;
if
(
!
pemi
)
return
E_OUTOFMEMORY
;
pemi
->
lpVtbl
=
&
EnumMonikerImpl_Vtbl
;
pemi
->
ref
=
1
;
pemi
->
ppMoniker
=
CoTaskMemAlloc
(
nMonikerCount
*
sizeof
(
IMoniker
*
));
memcpy
(
pemi
->
ppMoniker
,
ppMoniker
,
nMonikerCount
*
sizeof
(
IMoniker
*
));
pemi
->
nMonikerCount
=
nMonikerCount
;
pemi
->
index
=
0
;
*
ppEnum
=
(
IEnumMoniker
*
)
pemi
;
return
S_OK
;
}
/**********************************************************************
* IEnumMoniker_QueryInterface (also IUnknown)
*/
static
HRESULT
WINAPI
EnumMonikerImpl_QueryInterface
(
LPENUMMONIKER
iface
,
REFIID
riid
,
LPVOID
*
ppvObj
)
{
ICOM_THIS
(
EnumMonikerImpl
,
iface
);
TRACE
(
"
\n\t
IID:
\t
%s
\n
"
,
debugstr_guid
(
riid
));
if
(
This
==
NULL
||
ppvObj
==
NULL
)
return
E_POINTER
;
if
(
IsEqualGUID
(
riid
,
&
IID_IUnknown
)
||
IsEqualGUID
(
riid
,
&
IID_IEnumMoniker
))
{
*
ppvObj
=
(
LPVOID
)
iface
;
EnumMonikerImpl_AddRef
(
iface
);
return
S_OK
;
}
FIXME
(
"- no interface
\n\t
IID:
\t
%s
\n
"
,
debugstr_guid
(
riid
));
return
E_NOINTERFACE
;
}
/**********************************************************************
* IEnumMoniker_AddRef (also IUnknown)
*/
static
ULONG
WINAPI
EnumMonikerImpl_AddRef
(
LPENUMMONIKER
iface
)
{
ICOM_THIS
(
EnumMonikerImpl
,
iface
);
TRACE
(
"
\n
"
);
if
(
This
==
NULL
)
return
E_POINTER
;
return
InterlockedIncrement
(
&
This
->
ref
);
}
/**********************************************************************
* IEnumMoniker_Release (also IUnknown)
*/
static
ULONG
WINAPI
EnumMonikerImpl_Release
(
LPENUMMONIKER
iface
)
{
ICOM_THIS
(
EnumMonikerImpl
,
iface
);
TRACE
(
"
\n
"
);
if
(
!
InterlockedDecrement
(
&
This
->
ref
))
{
CoTaskMemFree
(
This
->
ppMoniker
);
This
->
ppMoniker
=
NULL
;
CoTaskMemFree
(
This
);
return
0
;
}
return
This
->
ref
;
}
static
HRESULT
WINAPI
EnumMonikerImpl_Next
(
LPENUMMONIKER
iface
,
ULONG
celt
,
IMoniker
**
rgelt
,
ULONG
*
pceltFetched
)
{
ULONG
fetched
;
ICOM_THIS
(
EnumMonikerImpl
,
iface
);
TRACE
(
"(%ld, %p, %p)
\n
"
,
celt
,
rgelt
,
pceltFetched
);
for
(
fetched
=
0
;
(
This
->
index
+
fetched
<
This
->
nMonikerCount
)
&&
(
fetched
<
celt
);
fetched
++
)
{
rgelt
[
fetched
]
=
This
->
ppMoniker
[
This
->
index
+
fetched
];
IMoniker_AddRef
(
rgelt
[
fetched
]);
}
This
->
index
+=
fetched
;
if
(
pceltFetched
)
*
pceltFetched
=
fetched
;
if
(
fetched
!=
celt
)
return
S_FALSE
;
else
return
S_OK
;
}
static
HRESULT
WINAPI
EnumMonikerImpl_Skip
(
LPENUMMONIKER
iface
,
ULONG
celt
)
{
ICOM_THIS
(
EnumMonikerImpl
,
iface
);
TRACE
(
"(%ld)
\n
"
,
celt
);
This
->
index
+=
celt
;
return
S_OK
;
}
static
HRESULT
WINAPI
EnumMonikerImpl_Reset
(
LPENUMMONIKER
iface
)
{
ICOM_THIS
(
EnumMonikerImpl
,
iface
);
TRACE
(
"()
\n
"
);
This
->
index
=
0
;
return
S_OK
;
}
static
HRESULT
WINAPI
EnumMonikerImpl_Clone
(
LPENUMMONIKER
iface
,
IEnumMoniker
**
ppenum
)
{
FIXME
(
"(%p): stub
\n
"
,
ppenum
);
return
E_NOTIMPL
;
}
/**********************************************************************
* IEnumMoniker_Vtbl
*/
static
ICOM_VTABLE
(
IEnumMoniker
)
EnumMonikerImpl_Vtbl
=
{
ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
EnumMonikerImpl_QueryInterface
,
EnumMonikerImpl_AddRef
,
EnumMonikerImpl_Release
,
EnumMonikerImpl_Next
,
EnumMonikerImpl_Skip
,
EnumMonikerImpl_Reset
,
EnumMonikerImpl_Clone
};
dlls/quartz/filtergraph.c
View file @
c71301a3
...
...
@@ -28,6 +28,18 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
quartz
);
typedef
struct
_IFilterGraphImpl
{
ICOM_VTABLE
(
IGraphBuilder
)
*
IGraphBuilder_vtbl
;
ICOM_VTABLE
(
IMediaControl
)
*
IMediaControl_vtbl
;
ICOM_VTABLE
(
IMediaSeeking
)
*
IMediaSeeking_vtbl
;
ICOM_VTABLE
(
IBasicAudio
)
*
IBasicAudio_vtbl
;
ICOM_VTABLE
(
IBasicVideo
)
*
IBasicVideo_vtbl
;
ICOM_VTABLE
(
IVideoWindow
)
*
IVideoWindow_vtbl
;
ICOM_VTABLE
(
IMediaEventEx
)
*
IMediaEventEx_vtbl
;
ULONG
ref
;
}
IFilterGraphImpl
;
static
HRESULT
Filtergraph_QueryInterface
(
IFilterGraphImpl
*
This
,
REFIID
riid
,
LPVOID
*
ppvObj
)
{
...
...
dlls/quartz/filtermapper.c
0 → 100644
View file @
c71301a3
This diff is collapsed.
Click to expand it.
dlls/quartz/main.c
View file @
c71301a3
...
...
@@ -61,6 +61,8 @@ struct object_creation_info
static
const
struct
object_creation_info
object_creation
[]
=
{
{
&
CLSID_FilterGraph
,
FILTERGRAPH_create
},
{
&
CLSID_FilterMapper
,
FilterMapper2_create
},
{
&
CLSID_FilterMapper2
,
FilterMapper2_create
},
};
static
HRESULT
WINAPI
...
...
dlls/quartz/quartz_private.h
View file @
c71301a3
...
...
@@ -29,17 +29,9 @@
#include "winuser.h"
#include "dshow.h"
typedef
struct
_IFilterGraphImpl
{
ICOM_VTABLE
(
IGraphBuilder
)
*
IGraphBuilder_vtbl
;
ICOM_VTABLE
(
IMediaControl
)
*
IMediaControl_vtbl
;
ICOM_VTABLE
(
IMediaSeeking
)
*
IMediaSeeking_vtbl
;
ICOM_VTABLE
(
IBasicAudio
)
*
IBasicAudio_vtbl
;
ICOM_VTABLE
(
IBasicVideo
)
*
IBasicVideo_vtbl
;
ICOM_VTABLE
(
IVideoWindow
)
*
IVideoWindow_vtbl
;
ICOM_VTABLE
(
IMediaEventEx
)
*
IMediaEventEx_vtbl
;
ULONG
ref
;
}
IFilterGraphImpl
;
HRESULT
FILTERGRAPH_create
(
IUnknown
*
pUnkOuter
,
LPVOID
*
ppObj
)
;
HRESULT
FilterMapper2_create
(
IUnknown
*
pUnkOuter
,
LPVOID
*
ppObj
);
HRESULT
EnumMonikerImpl_Create
(
IMoniker
**
ppMoniker
,
ULONG
nMonikerCount
,
IEnumMoniker
**
ppEnum
);
#endif
/* __QUARTZ_PRIVATE_INCLUDED__ */
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