@@ -48,7 +48,7 @@ struct IEventSinkVtbl {
48
48
};
49
49
50
50
typedef struct tagIEVENTSINKOBJ {
51
- IEventSinkVtbl * lpVtbl ;
51
+ const IEventSinkVtbl * lpVtbl ;
52
52
DWORD m_cRef ;
53
53
IID m_iid ;
54
54
long m_event_id ;
@@ -67,9 +67,23 @@ static ID id_events;
67
67
68
68
VALUE cWIN32OLE_EVENT ;
69
69
70
- static BOOL g_IsEventSinkVtblInitialized = FALSE;
71
-
72
- static IEventSinkVtbl vtEventSink ;
70
+ STDMETHODIMP EVENTSINK_QueryInterface (PEVENTSINK , REFIID , LPVOID * );
71
+ STDMETHODIMP_ (ULONG ) EVENTSINK_AddRef (PEVENTSINK );
72
+ STDMETHODIMP_ (ULONG ) EVENTSINK_Release (PEVENTSINK );
73
+ STDMETHODIMP EVENTSINK_GetTypeInfoCount (PEVENTSINK , UINT * );
74
+ STDMETHODIMP EVENTSINK_GetTypeInfo (PEVENTSINK , UINT , LCID , ITypeInfo * * );
75
+ STDMETHODIMP EVENTSINK_GetIDsOfNames (PEVENTSINK , REFIID , OLECHAR * * , UINT , LCID , DISPID * );
76
+ STDMETHODIMP EVENTSINK_Invoke (PEVENTSINK , DISPID , REFIID , LCID , WORD , DISPPARAMS * , VARIANT * , EXCEPINFO * , UINT * );
77
+
78
+ static const IEventSinkVtbl vtEventSink = {
79
+ EVENTSINK_QueryInterface ,
80
+ EVENTSINK_AddRef ,
81
+ EVENTSINK_Release ,
82
+ EVENTSINK_GetTypeInfoCount ,
83
+ EVENTSINK_GetTypeInfo ,
84
+ EVENTSINK_GetIDsOfNames ,
85
+ EVENTSINK_Invoke ,
86
+ };
73
87
74
88
void EVENTSINK_Destructor (PIEVENTSINKOBJ );
75
89
static void ole_val2ptr_variant (VALUE val , VARIANT * var );
@@ -294,17 +308,6 @@ PIEVENTSINKOBJ
294
308
EVENTSINK_Constructor (void )
295
309
{
296
310
PIEVENTSINKOBJ pEv ;
297
- if (!g_IsEventSinkVtblInitialized ) {
298
- vtEventSink .QueryInterface = EVENTSINK_QueryInterface ;
299
- vtEventSink .AddRef = EVENTSINK_AddRef ;
300
- vtEventSink .Release = EVENTSINK_Release ;
301
- vtEventSink .Invoke = EVENTSINK_Invoke ;
302
- vtEventSink .GetIDsOfNames = EVENTSINK_GetIDsOfNames ;
303
- vtEventSink .GetTypeInfoCount = EVENTSINK_GetTypeInfoCount ;
304
- vtEventSink .GetTypeInfo = EVENTSINK_GetTypeInfo ;
305
-
306
- g_IsEventSinkVtblInitialized = TRUE;
307
- }
308
311
pEv = ALLOC_N (IEVENTSINKOBJ , 1 );
309
312
if (pEv == NULL ) return NULL ;
310
313
pEv -> lpVtbl = & vtEventSink ;
0 commit comments