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
3c9e955f
Commit
3c9e955f
authored
Nov 08, 2022
by
Hans Leidekker
Committed by
Alexandre Julliard
Nov 08, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
netprofm: Store a list manager pointer in the network object instead of creating…
netprofm: Store a list manager pointer in the network object instead of creating a new list manager.
parent
bbb5fb7e
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
56 deletions
+30
-56
list.c
dlls/netprofm/list.c
+30
-56
No files found.
dlls/netprofm/list.c
View file @
3c9e955f
...
...
@@ -44,12 +44,13 @@ WINE_DEFAULT_DEBUG_CHANNEL(netprofm);
struct
network
{
INetwork
INetwork_iface
;
LONG
refs
;
struct
list
entry
;
GUID
id
;
VARIANT_BOOL
connected_to_internet
;
VARIANT_BOOL
connected
;
INetwork
INetwork_iface
;
LONG
refs
;
struct
list
entry
;
GUID
id
;
INetworkListManager
*
mgr
;
VARIANT_BOOL
connected_to_internet
;
VARIANT_BOOL
connected
;
};
struct
connection
...
...
@@ -94,9 +95,6 @@ struct sink_entry
IUnknown
*
unk
;
};
static
HRESULT
create_connections_enum
(
struct
list_manager
*
,
IEnumNetworkConnections
**
);
static
inline
struct
list_manager
*
impl_from_IConnectionPointContainer
(
IConnectionPointContainer
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
struct
list_manager
,
IConnectionPointContainer_iface
);
...
...
@@ -114,12 +112,6 @@ static inline struct connection_point *impl_from_IConnectionPoint(
return
CONTAINING_RECORD
(
iface
,
struct
connection_point
,
IConnectionPoint_iface
);
}
static
inline
struct
list_manager
*
impl_from_INetworkListManager
(
INetworkListManager
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
struct
list_manager
,
INetworkListManager_iface
);
}
static
HRESULT
WINAPI
connection_point_QueryInterface
(
IConnectionPoint
*
iface
,
REFIID
riid
,
...
...
@@ -337,6 +329,7 @@ static ULONG WINAPI network_Release(
if
(
!
(
refs
=
InterlockedDecrement
(
&
network
->
refs
)))
{
list_remove
(
&
network
->
entry
);
INetworkListManager_Release
(
network
->
mgr
);
heap_free
(
network
);
}
return
refs
;
...
...
@@ -441,42 +434,24 @@ static HRESULT WINAPI network_GetDomainType(
return
S_OK
;
}
static
ULONG
WINAPI
connection_Release
(
INetworkConnection
*
iface
);
static
inline
struct
list_manager
*
impl_from_INetworkListManager
(
INetworkListManager
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
struct
list_manager
,
INetworkListManager_iface
);
}
static
HRESULT
create_connections_enum
(
struct
list_manager
*
,
IEnumNetworkConnections
**
);
static
HRESULT
WINAPI
network_GetNetworkConnections
(
INetwork
*
iface
,
IEnumNetworkConnections
**
ppEnum
NetworkConnection
)
IEnumNetworkConnections
**
ppEnum
)
{
HRESULT
hr
;
INetworkListManager
*
network_list_mgr
=
NULL
;
struct
list_manager
*
mgr
=
NULL
;
struct
network
*
current_network
=
impl_from_INetwork
(
iface
);
struct
connection
*
connection
,
*
next
;
struct
network
*
network
;
if
(
FAILED
(
hr
=
list_manager_create
((
void
**
)
&
network_list_mgr
)))
return
hr
;
mgr
=
impl_from_INetworkListManager
(
network_list_mgr
);
if
(
FAILED
(
hr
=
create_connections_enum
(
mgr
,
ppEnumNetworkConnection
)))
return
hr
;
TRACE
(
"%p, %s
\n
"
,
iface
,
debugstr_guid
(
&
current_network
->
id
));
LIST_FOR_EACH_ENTRY_SAFE
(
connection
,
next
,
&
mgr
->
connections
,
struct
connection
,
entry
)
{
network
=
impl_from_INetwork
(
connection
->
network
);
if
(
!
IsEqualGUID
(
&
network
->
id
,
&
current_network
->
id
))
{
TRACE
(
"Filtering %s
\n
"
,
debugstr_guid
(
&
network
->
id
));
list_remove
(
&
connection
->
entry
);
}
}
struct
network
*
network
=
impl_from_INetwork
(
iface
);
struct
list_manager
*
mgr
=
impl_from_INetworkListManager
(
network
->
mgr
);
return
S_OK
;
TRACE
(
"%p, %p
\n
"
,
iface
,
ppEnum
);
return
create_connections_enum
(
mgr
,
ppEnum
);
}
static
HRESULT
WINAPI
network_GetTimeCreatedAndConnected
(
...
...
@@ -1147,7 +1122,8 @@ static ULONG WINAPI list_manager_Release(
LONG
refs
=
InterlockedDecrement
(
&
mgr
->
refs
);
if
(
!
refs
)
{
struct
list
*
ptr
;
struct
network
*
network
,
*
next_network
;
struct
connection
*
connection
,
*
next_connection
;
TRACE
(
"destroying %p
\n
"
,
mgr
);
...
...
@@ -1155,17 +1131,13 @@ static ULONG WINAPI list_manager_Release(
connection_point_release
(
&
mgr
->
conn_mgr_cp
);
connection_point_release
(
&
mgr
->
cost_mgr_cp
);
connection_point_release
(
&
mgr
->
list_mgr_cp
);
while
((
ptr
=
list_head
(
&
mgr
->
networks
))
)
LIST_FOR_EACH_ENTRY_SAFE
(
connection
,
next_connection
,
&
mgr
->
connections
,
struct
connection
,
entry
)
{
struct
network
*
network
=
LIST_ENTRY
(
ptr
,
struct
network
,
entry
);
list_remove
(
&
network
->
entry
);
INetwork_Release
(
&
network
->
INetwork_iface
);
INetworkConnection_Release
(
&
connection
->
INetworkConnection_iface
);
}
while
((
ptr
=
list_head
(
&
mgr
->
connections
))
)
LIST_FOR_EACH_ENTRY_SAFE
(
network
,
next_network
,
&
mgr
->
networks
,
struct
network
,
entry
)
{
struct
connection
*
connection
=
LIST_ENTRY
(
ptr
,
struct
connection
,
entry
);
list_remove
(
&
connection
->
entry
);
INetworkConnection_Release
(
&
connection
->
INetworkConnection_iface
);
INetwork_Release
(
&
network
->
INetwork_iface
);
}
heap_free
(
mgr
);
}
...
...
@@ -1522,8 +1494,8 @@ static ULONG WINAPI connection_Release(
if
(
!
(
refs
=
InterlockedDecrement
(
&
connection
->
refs
)))
{
INetwork_Release
(
connection
->
network
);
list_remove
(
&
connection
->
entry
);
INetwork_Release
(
connection
->
network
);
heap_free
(
connection
);
}
return
refs
;
...
...
@@ -1820,6 +1792,8 @@ static void init_networks( struct list_manager *mgr )
connection
->
connected_to_internet
=
VARIANT_TRUE
;
}
network
->
mgr
=
&
mgr
->
INetworkListManager_iface
;
INetworkListManager_AddRef
(
network
->
mgr
);
connection
->
network
=
&
network
->
INetwork_iface
;
INetwork_AddRef
(
connection
->
network
);
...
...
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