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
de03fe3c
Commit
de03fe3c
authored
Sep 16, 2008
by
Rob Shearman
Committed by
Alexandre Julliard
Sep 16, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ole32: Update comments in compobj.c.
parent
e4cba25a
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
21 additions
and
8 deletions
+21
-8
compobj.c
dlls/ole32/compobj.c
+21
-8
No files found.
dlls/ole32/compobj.c
View file @
de03fe3c
...
...
@@ -34,9 +34,6 @@
* - Implement the OXID resolver so we don't need magic endpoint names for
* clients and servers to meet up
*
* - Make all ole interface marshaling use NDR to be wire compatible with
* native DCOM
*
*/
#include "config.h"
...
...
@@ -66,14 +63,12 @@
WINE_DEFAULT_DEBUG_CHANNEL
(
ole
);
HINSTANCE
OLE32_hInstance
=
0
;
/* FIXME: make static ... */
HINSTANCE
OLE32_hInstance
=
0
;
#define ARRAYSIZE(array) (sizeof(array)/sizeof((array)[0]))
/****************************************************************************
* This section defines variables internal to the COM module.
*
* TODO: Most of these things will have to be made thread-safe.
*/
static
HRESULT
COM_GetRegisteredClassObject
(
const
struct
apartment
*
apt
,
REFCLSID
rclsid
,
...
...
@@ -116,7 +111,7 @@ static LONG s_COMServerProcessReferences = 0;
* objects.
*
* TODO: Make this data structure aware of inter-process communication. This
* means that parts of this will be exported to
the Wine Server
.
* means that parts of this will be exported to
rpcss
.
*/
typedef
struct
tagRegisteredClass
{
...
...
@@ -560,6 +555,8 @@ struct host_thread_params
HWND
apartment_hwnd
;
};
/* thread for hosting an object to allow an object to appear to be created in
* an apartment with an incompatible threading model */
static
DWORD
CALLBACK
apartment_hostobject_thread
(
LPVOID
p
)
{
struct
host_thread_params
*
params
=
p
;
...
...
@@ -609,7 +606,12 @@ static DWORD CALLBACK apartment_hostobject_thread(LPVOID p)
return
S_OK
;
}
static
HRESULT
apartment_hostobject_in_hostapt
(
struct
apartment
*
apt
,
BOOL
multi_threaded
,
BOOL
main_apartment
,
HKEY
hkeydll
,
REFCLSID
rclsid
,
REFIID
riid
,
void
**
ppv
)
/* finds or creates a host apartment, creates the object inside it and returns
* a proxy to it so that the object can be used in the apartment of the
* caller of this function */
static
HRESULT
apartment_hostobject_in_hostapt
(
struct
apartment
*
apt
,
BOOL
multi_threaded
,
BOOL
main_apartment
,
HKEY
hkeydll
,
REFCLSID
rclsid
,
REFIID
riid
,
void
**
ppv
)
{
struct
host_object_params
params
;
HWND
apartment_hwnd
=
NULL
;
...
...
@@ -715,6 +717,8 @@ static HRESULT apartment_hostobject_in_hostapt(struct apartment *apt, BOOL multi
return
hr
;
}
/* create a window for the apartment or return the current one if one has
* already been created */
HRESULT
apartment_createwindowifneeded
(
struct
apartment
*
apt
)
{
if
(
apt
->
multi_threaded
)
...
...
@@ -738,6 +742,7 @@ HRESULT apartment_createwindowifneeded(struct apartment *apt)
return
S_OK
;
}
/* retrieves the window for the main- or apartment-threaded apartment */
HWND
apartment_getwindow
(
const
struct
apartment
*
apt
)
{
assert
(
!
apt
->
multi_threaded
);
...
...
@@ -750,6 +755,8 @@ void apartment_joinmta(void)
COM_CurrentInfo
()
->
apt
=
MTA
;
}
/* gets the specified class object by loading the appropriate DLL, if
* necessary and calls the DllGetClassObject function for the DLL */
static
HRESULT
apartment_getclassobject
(
struct
apartment
*
apt
,
LPCWSTR
dllpath
,
BOOL
apartment_threaded
,
REFCLSID
rclsid
,
REFIID
riid
,
void
**
ppv
)
...
...
@@ -822,6 +829,8 @@ static HRESULT apartment_getclassobject(struct apartment *apt, LPCWSTR dllpath,
return
hr
;
}
/* frees unused libraries loaded by apartment_getclassobject by calling the
* DLL's DllCanUnloadNow entry point */
static
void
apartment_freeunusedlibraries
(
struct
apartment
*
apt
,
DWORD
delay
)
{
struct
apartment_loaded_dll
*
entry
,
*
next
;
...
...
@@ -834,6 +843,10 @@ static void apartment_freeunusedlibraries(struct apartment *apt, DWORD delay)
if
(
real_delay
==
INFINITE
)
{
/* DLLs that return multi-threaded objects aren't unloaded
* straight away to cope for programs that have races between
* last object destruction and threads in the DLLs that haven't
* finished, despite DllCanUnloadNow returning S_OK */
if
(
entry
->
multi_threaded
)
real_delay
=
10
*
60
*
1000
;
/* 10 minutes */
else
...
...
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