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
f66b99db
Commit
f66b99db
authored
Feb 10, 2007
by
Jacek Caban
Committed by
Alexandre Julliard
Feb 12, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
urlmon: Store download state in Binding object.
parent
639ffbfd
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
3 deletions
+20
-3
binding.c
dlls/urlmon/binding.c
+20
-3
No files found.
dlls/urlmon/binding.c
View file @
f66b99db
...
...
@@ -57,6 +57,12 @@ typedef struct {
BOOL
init_buf
;
}
ProtocolStream
;
typedef
enum
{
BEFORE_DOWNLOAD
,
DOWNLOADING
,
END_DOWNLOAD
}
download_state_t
;
struct
Binding
{
const
IBindingVtbl
*
lpBindingVtbl
;
const
IInternetProtocolSinkVtbl
*
lpInternetProtocolSinkVtbl
;
...
...
@@ -77,6 +83,7 @@ struct Binding {
BOOL
report_mime
;
DWORD
continue_call
;
BOOL
request_locked
;
download_state_t
download_state
;
DWORD
apartment_thread
;
HWND
notif_hwnd
;
...
...
@@ -824,6 +831,9 @@ static void report_data(Binding *This, DWORD bscf, ULONG progress, ULONG progres
TRACE
(
"(%p)->(%d %u %u)
\n
"
,
This
,
bscf
,
progress
,
progress_max
);
if
(
This
->
download_state
==
END_DOWNLOAD
)
return
;
if
(
GetCurrentThreadId
()
!=
This
->
apartment_thread
)
FIXME
(
"called from worked hread
\n
"
);
...
...
@@ -841,14 +851,18 @@ static void report_data(Binding *This, DWORD bscf, ULONG progress, ULONG progres
BINDSTATUS_MIMETYPEAVAILABLE
,
mime
);
}
if
(
bscf
&
BSCF_FIRSTDATANOTIFICATION
)
{
if
(
This
->
download_state
==
BEFORE_DOWNLOAD
)
{
fill_stream_buffer
(
This
->
stream
);
This
->
download_state
=
DOWNLOADING
;
IBindStatusCallback_OnProgress
(
This
->
callback
,
progress
,
progress_max
,
BINDSTATUS_BEGINDOWNLOADDATA
,
This
->
url
);
}
if
(
bscf
&
BSCF_LASTDATANOTIFICATION
)
if
(
bscf
&
BSCF_LASTDATANOTIFICATION
)
{
IBindStatusCallback_OnProgress
(
This
->
callback
,
progress
,
progress_max
,
BINDSTATUS_ENDDOWNLOADDATA
,
This
->
url
);
}
if
(
!
This
->
request_locked
)
{
HRESULT
hres
=
IInternetProtocol_LockRequest
(
This
->
protocol
,
0
);
...
...
@@ -860,8 +874,10 @@ static void report_data(Binding *This, DWORD bscf, ULONG progress, ULONG progres
IBindStatusCallback_OnDataAvailable
(
This
->
callback
,
bscf
,
This
->
stream
->
buf_size
,
&
formatetc
,
&
This
->
stgmed
);
if
(
bscf
&
BSCF_LASTDATANOTIFICATION
)
if
(
bscf
&
BSCF_LASTDATANOTIFICATION
)
{
This
->
download_state
=
END_DOWNLOAD
;
IBindStatusCallback_OnStopBinding
(
This
->
callback
,
S_OK
,
NULL
);
}
}
typedef
struct
{
...
...
@@ -1196,6 +1212,7 @@ static HRESULT Binding_Create(LPCWSTR url, IBindCtx *pbc, REFIID riid, Binding *
ret
->
report_mime
=
TRUE
;
ret
->
continue_call
=
0
;
ret
->
request_locked
=
FALSE
;
ret
->
download_state
=
BEFORE_DOWNLOAD
;
ret
->
task_queue_head
=
ret
->
task_queue_tail
=
NULL
;
memset
(
&
ret
->
bindinfo
,
0
,
sizeof
(
BINDINFO
));
...
...
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