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
482740d0
Commit
482740d0
authored
Jan 11, 2011
by
Michael Stefaniuc
Committed by
Alexandre Julliard
Jan 11, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
urlmon: Use an iface instead of a vtbl pointer in stgmed_buf_t.
parent
f4ef7ff4
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
19 additions
and
20 deletions
+19
-20
binding.c
dlls/urlmon/binding.c
+19
-20
No files found.
dlls/urlmon/binding.c
View file @
482740d0
...
...
@@ -28,7 +28,7 @@ static WCHAR cbinding_contextW[] = {'C','B','i','n','d','i','n','g',' ','C','o',
static
WCHAR
bscb_holderW
[]
=
{
'_'
,
'B'
,
'S'
,
'C'
,
'B'
,
'_'
,
'H'
,
'o'
,
'l'
,
'd'
,
'e'
,
'r'
,
'_'
,
0
};
typedef
struct
{
const
IUnknownVtbl
*
lpUnknownVtbl
;
IUnknown
IUnknown_iface
;
LONG
ref
;
...
...
@@ -55,8 +55,6 @@ struct _stgmed_obj_t {
const
stgmed_obj_vtbl
*
vtbl
;
};
#define STGMEDUNK(x) ((IUnknown*) &(x)->lpUnknownVtbl)
typedef
enum
{
BEFORE_DOWNLOAD
,
DOWNLOADING
,
...
...
@@ -360,19 +358,22 @@ static void cache_file_available(Binding *This, const WCHAR *file_name)
}
}
#define STGMEDUNK_THIS(iface) DEFINE_THIS(stgmed_buf_t, Unknown, iface)
static
inline
stgmed_buf_t
*
impl_from_IUnknown
(
IUnknown
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
stgmed_buf_t
,
IUnknown_iface
);
}
static
HRESULT
WINAPI
StgMedUnk_QueryInterface
(
IUnknown
*
iface
,
REFIID
riid
,
void
**
ppv
)
{
stgmed_buf_t
*
This
=
STGMEDUNK_THIS
(
iface
);
stgmed_buf_t
*
This
=
impl_from_IUnknown
(
iface
);
*
ppv
=
NULL
;
if
(
IsEqualGUID
(
riid
,
&
IID_IUnknown
))
{
TRACE
(
"(%p)->(IID_IUnknown %p)
\n
"
,
This
,
ppv
);
*
ppv
=
STGMEDUNK
(
This
)
;
IUnknown_AddRef
(
STGMEDUNK
(
This
)
);
*
ppv
=
&
This
->
IUnknown_iface
;
IUnknown_AddRef
(
&
This
->
IUnknown_iface
);
return
S_OK
;
}
...
...
@@ -382,7 +383,7 @@ static HRESULT WINAPI StgMedUnk_QueryInterface(IUnknown *iface, REFIID riid, voi
static
ULONG
WINAPI
StgMedUnk_AddRef
(
IUnknown
*
iface
)
{
stgmed_buf_t
*
This
=
STGMEDUNK_THIS
(
iface
);
stgmed_buf_t
*
This
=
impl_from_IUnknown
(
iface
);
LONG
ref
=
InterlockedIncrement
(
&
This
->
ref
);
TRACE
(
"(%p) ref=%d
\n
"
,
This
,
ref
);
...
...
@@ -392,7 +393,7 @@ static ULONG WINAPI StgMedUnk_AddRef(IUnknown *iface)
static
ULONG
WINAPI
StgMedUnk_Release
(
IUnknown
*
iface
)
{
stgmed_buf_t
*
This
=
STGMEDUNK_THIS
(
iface
);
stgmed_buf_t
*
This
=
impl_from_IUnknown
(
iface
);
LONG
ref
=
InterlockedDecrement
(
&
This
->
ref
);
TRACE
(
"(%p) ref=%d
\n
"
,
This
,
ref
);
...
...
@@ -410,8 +411,6 @@ static ULONG WINAPI StgMedUnk_Release(IUnknown *iface)
return
ref
;
}
#undef STGMEDUNK_THIS
static
const
IUnknownVtbl
StgMedUnkVtbl
=
{
StgMedUnk_QueryInterface
,
StgMedUnk_AddRef
,
...
...
@@ -422,7 +421,7 @@ static stgmed_buf_t *create_stgmed_buf(IInternetProtocolEx *protocol)
{
stgmed_buf_t
*
ret
=
heap_alloc
(
sizeof
(
*
ret
));
ret
->
lpUnknown
Vtbl
=
&
StgMedUnkVtbl
;
ret
->
IUnknown_iface
.
lp
Vtbl
=
&
StgMedUnkVtbl
;
ret
->
ref
=
1
;
ret
->
size
=
0
;
ret
->
init
=
FALSE
;
...
...
@@ -494,7 +493,7 @@ static ULONG WINAPI ProtocolStream_Release(IStream *iface)
TRACE
(
"(%p) ref=%d
\n
"
,
This
,
ref
);
if
(
!
ref
)
{
IUnknown_Release
(
STGMEDUNK
(
This
->
buf
)
);
IUnknown_Release
(
&
This
->
buf
->
IUnknown_iface
);
heap_free
(
This
);
URLMON_UnlockModule
();
...
...
@@ -687,7 +686,7 @@ static HRESULT stgmed_stream_fill_stgmed(stgmed_obj_t *obj, STGMEDIUM *stgmed)
stgmed
->
tymed
=
TYMED_ISTREAM
;
stgmed
->
u
.
pstm
=
STREAM
(
stream
);
stgmed
->
pUnkForRelease
=
STGMEDUNK
(
stream
->
buf
)
;
stgmed
->
pUnkForRelease
=
&
stream
->
buf
->
IUnknown_iface
;
return
S_OK
;
}
...
...
@@ -724,7 +723,7 @@ static stgmed_obj_t *create_stgmed_stream(stgmed_buf_t *buf)
ret
->
lpStreamVtbl
=
&
ProtocolStreamVtbl
;
ret
->
ref
=
1
;
IUnknown_AddRef
(
STGMEDUNK
(
buf
)
);
IUnknown_AddRef
(
&
buf
->
IUnknown_iface
);
ret
->
buf
=
buf
;
URLMON_LockModule
();
...
...
@@ -736,7 +735,7 @@ static void stgmed_file_release(stgmed_obj_t *obj)
{
stgmed_file_obj_t
*
file_obj
=
(
stgmed_file_obj_t
*
)
obj
;
IUnknown_Release
(
STGMEDUNK
(
file_obj
->
buf
)
);
IUnknown_Release
(
&
file_obj
->
buf
->
IUnknown_iface
);
heap_free
(
file_obj
);
}
...
...
@@ -753,7 +752,7 @@ static HRESULT stgmed_file_fill_stgmed(stgmed_obj_t *obj, STGMEDIUM *stgmed)
stgmed
->
tymed
=
TYMED_FILE
;
stgmed
->
u
.
lpszFileName
=
file_obj
->
buf
->
cache_file
;
stgmed
->
pUnkForRelease
=
STGMEDUNK
(
file_obj
->
buf
)
;
stgmed
->
pUnkForRelease
=
&
file_obj
->
buf
->
IUnknown_iface
;
return
S_OK
;
}
...
...
@@ -775,7 +774,7 @@ static stgmed_obj_t *create_stgmed_file(stgmed_buf_t *buf)
ret
->
stgmed_obj
.
vtbl
=
&
stgmed_file_vtbl
;
IUnknown_AddRef
(
STGMEDUNK
(
buf
)
);
IUnknown_AddRef
(
&
buf
->
IUnknown_iface
);
ret
->
buf
=
buf
;
return
&
ret
->
stgmed_obj
;
...
...
@@ -867,7 +866,7 @@ static ULONG WINAPI Binding_Release(IBinding *iface)
if
(
This
->
service_provider
)
IServiceProvider_Release
(
This
->
service_provider
);
if
(
This
->
stgmed_buf
)
IUnknown_Release
(
STGMEDUNK
(
This
->
stgmed_buf
)
);
IUnknown_Release
(
&
This
->
stgmed_buf
->
IUnknown_iface
);
if
(
This
->
stgmed_obj
)
This
->
stgmed_obj
->
vtbl
->
release
(
This
->
stgmed_obj
);
if
(
This
->
obj
)
...
...
@@ -1499,7 +1498,7 @@ static HRESULT Binding_Create(IMoniker *mon, Binding *binding_ctx, IUri *uri, IB
if
(
binding_ctx
)
{
ret
->
stgmed_buf
=
binding_ctx
->
stgmed_buf
;
IUnknown_AddRef
(
STGMEDUNK
(
ret
->
stgmed_buf
)
);
IUnknown_AddRef
(
&
ret
->
stgmed_buf
->
IUnknown_iface
);
ret
->
clipboard_format
=
binding_ctx
->
clipboard_format
;
}
else
{
ret
->
stgmed_buf
=
create_stgmed_buf
(
PROTOCOLEX
(
ret
->
protocol
));
...
...
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