Module: wine
Branch: master
Commit: 8580198dc8eb9b6030c2db66f84a6d22aca2277f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8580198dc8eb9b6030c2db66f…
Author: Rob Shearman <rob(a)codeweavers.com>
Date: Mon Apr 28 19:42:51 2008 +0100
ole32: Keep track of the number of weak references to an object.
This is so that an object will only be released when a weak-reference is
used after the last weak reference has been released (either by
CoReleaseMarshalData or CoUnmarshalInterface + Release).
---
dlls/ole32/compobj.c | 6 +++---
dlls/ole32/compobj_private.h | 7 ++++---
dlls/ole32/marshal.c | 24 +++++++++++++++---------
dlls/ole32/stubmanager.c | 21 ++++++++++++++-------
dlls/ole32/tests/moniker.c | 3 +--
5 files changed, 37 insertions(+), 24 deletions(-)
Diff: http://source.winehq.org/git/wine.git/?a=commitdiff;h=8580198dc8eb9b6030c2d…
Module: wine
Branch: master
Commit: 67a7a8a8ef63c91390a9838a01980c938937376b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=67a7a8a8ef63c91390a9838a0…
Author: Rob Shearman <rob(a)codeweavers.com>
Date: Sun Apr 27 23:01:16 2008 +0100
ole32: Fix two comments about the running object table.
---
dlls/ole32/moniker.c | 11 +++--------
1 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/dlls/ole32/moniker.c b/dlls/ole32/moniker.c
index 413d110..68ea4d1 100644
--- a/dlls/ole32/moniker.c
+++ b/dlls/ole32/moniker.c
@@ -19,11 +19,6 @@
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- *
- * TODO:
- * - IRunningObjectTable should work interprocess, but currently doesn't.
- * Native (on Win2k at least) uses an undocumented RPC interface, IROT, to
- * communicate with RPCSS which contains the table of marshalled data.
*/
#include <stdarg.h>
@@ -974,9 +969,9 @@ HRESULT WINAPI RunningObjectTableImpl_Initialize(void)
/* initialize the virtual table function */
runningObjectTableInstance->lpVtbl = &VT_RunningObjectTableImpl;
- /* the initial reference is set to "1" ! because if set to "0" it will be not practis when */
- /* the ROT referred many times not in the same time (all the objects in the ROT will */
- /* be removed every time the ROT is removed ) */
+ /* the initial reference is set to "1" so that it isn't destroyed after its
+ * first use until the process is destroyed, as the running object table is
+ * a process-wide cache of a global table */
runningObjectTableInstance->ref = 1;
list_init(&runningObjectTableInstance->rot);