IStream iStream;
LONG m_lRefCount;
- LONG m_lIndex;
+ ULONG m_lIndex;
ULARGE_INTEGER m_lSize;
ULARGE_INTEGER m_lOffset;
FILEDESCRIPTORW m_Dsc;
LONG m_lRefCount;
FORMATETC* m_pFormatEtc;
STGMEDIUM* m_pStgMedium;
- LONG m_nNumFormats;
- LONG m_nStreams;
+ ULONG m_nNumFormats;
+ ULONG m_nStreams;
IStream** m_pStream;
void* m_pData;
};
static UINT cliprdr_send_unlock(wfClipboard* clipboard);
static UINT cliprdr_send_request_filecontents(wfClipboard* clipboard,
const void* streamid,
- LONG index, int flag, DWORD positionhigh,
+ ULONG index, UINT32 flag, DWORD positionhigh,
DWORD positionlow, ULONG request);
static void CliprdrDataObject_Delete(CliprdrDataObject* instance);
-static CliprdrEnumFORMATETC* CliprdrEnumFORMATETC_New(int nFormats,
+static CliprdrEnumFORMATETC* CliprdrEnumFORMATETC_New(ULONG nFormats,
FORMATETC* pFormatEtc);
static void CliprdrEnumFORMATETC_Delete(CliprdrEnumFORMATETC* instance);
return E_NOTIMPL;
}
-static CliprdrStream* CliprdrStream_New(LONG index, void* pData,
+static CliprdrStream* CliprdrStream_New(ULONG index, void* pData,
const FILEDESCRIPTORW* dsc)
{
IStream* iStream;
* IDataObject
*/
-static int cliprdr_lookup_format(CliprdrDataObject* instance,
- FORMATETC* pFormatEtc)
+static LONG cliprdr_lookup_format(CliprdrDataObject* instance,
+ FORMATETC* pFormatEtc)
{
- int i;
+ ULONG i;
if (!instance || !pFormatEtc)
return -1;
pFormatEtc->cfFormat == instance->m_pFormatEtc[i].cfFormat &&
pFormatEtc->dwAspect & instance->m_pFormatEtc[i].dwAspect)
{
- return i;
+ return (LONG)i;
}
}
static HRESULT STDMETHODCALLTYPE CliprdrDataObject_GetData(
IDataObject* This, FORMATETC* pFormatEtc, STGMEDIUM* pMedium)
{
- int i, idx;
+ ULONG i;
+ LONG idx;
CliprdrDataObject* instance = (CliprdrDataObject*) This;
wfClipboard* clipboard;
}
static CliprdrDataObject* CliprdrDataObject_New(
- FORMATETC* fmtetc, STGMEDIUM* stgmed, int count, void* data)
+ FORMATETC* fmtetc, STGMEDIUM* stgmed, ULONG count, void* data)
{
int i;
CliprdrDataObject* instance;
if (instance->m_pStream)
{
- LONG i;
+ ULONG i;
for (i = 0; i < instance->m_nStreams; i++)
CliprdrStream_Release(instance->m_pStream[i]);
return S_OK;
}
-CliprdrEnumFORMATETC* CliprdrEnumFORMATETC_New(int nFormats,
+CliprdrEnumFORMATETC* CliprdrEnumFORMATETC_New(ULONG nFormats,
FORMATETC* pFormatEtc)
{
- int i;
+ ULONG i;
CliprdrEnumFORMATETC* instance;
IEnumFORMATETC* iEnumFORMATETC;
iEnumFORMATETC->lpVtbl->Skip = CliprdrEnumFORMATETC_Skip;
iEnumFORMATETC->lpVtbl->Reset = CliprdrEnumFORMATETC_Reset;
iEnumFORMATETC->lpVtbl->Clone = CliprdrEnumFORMATETC_Clone;
- instance->m_lRefCount = 0;
+ instance->m_lRefCount = 1;
instance->m_nIndex = 0;
instance->m_nNumFormats = nFormats;
UINT cliprdr_send_request_filecontents(wfClipboard* clipboard,
const void* streamid,
- LONG index, int flag, DWORD positionhigh,
+ ULONG index, UINT32 flag, DWORD positionhigh,
DWORD positionlow, ULONG nreq)
{
UINT rc;
case OLE_SETCLIPBOARD:
DEBUG_CLIPRDR("info: OLE_SETCLIPBOARD");
- if (wf_create_file_obj(clipboard, &clipboard->data_obj))
+ if (S_FALSE == OleIsCurrentClipboard(clipboard->data_obj))
{
- if (OleSetClipboard(clipboard->data_obj) != S_OK)
+ if (wf_create_file_obj(clipboard, &clipboard->data_obj))
{
- wf_destroy_file_obj(clipboard->data_obj);
- clipboard->data_obj = NULL;
+ if (OleSetClipboard(clipboard->data_obj) != S_OK)
+ {
+ wf_destroy_file_obj(clipboard->data_obj);
+ clipboard->data_obj = NULL;
+ }
}
}
*/
static UINT wf_cliprdr_server_file_contents_response(CliprdrClientContext*
context,
- const CLIPRDR_FILE_CONTENTS_RESPONSE* fileContentsResponse)
+ CLIPRDR_FILE_CONTENTS_RESPONSE* fileContentsResponse)
{
wfClipboard* clipboard;
PostMessage(clipboard->hwnd, WM_QUIT, 0, 0);
if (clipboard->thread)
- {
WaitForSingleObject(clipboard->thread, INFINITE);
- CloseHandle(clipboard->thread);
- clipboard->thread = NULL;
- }
+
+ CloseHandle(clipboard->thread);
if (clipboard->response_data_event)
- {
CloseHandle(clipboard->response_data_event);
- clipboard->response_data_event = NULL;
- }
+
+ if (clipboard->req_fevent)
+ CloseHandle(clipboard->req_fevent);
clear_file_array(clipboard);
clear_format_map(clipboard);