From: Jérôme Gardou Date: Fri, 6 Aug 2010 21:33:37 +0000 (+0000) Subject: [WIN32K] X-Git-Tag: backups/reactos-yarotows@57446~32 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=e84aac6fb8e54423d617f3720d10365b319866ba [WIN32K] - sync with trunk (48469) svn path=/branches/reactos-yarotows/; revision=48471 --- diff --git a/dll/win32/ole32/ole2.c b/dll/win32/ole32/ole2.c index f570167bcf2..a9a488594cc 100644 --- a/dll/win32/ole32/ole2.c +++ b/dll/win32/ole32/ole2.c @@ -409,6 +409,7 @@ HRESULT WINAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget) HRESULT hr; IStream *stream; HANDLE map; + IUnknown *unk; TRACE("(%p,%p)\n", hwnd, pDropTarget); @@ -449,7 +450,15 @@ HRESULT WINAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget) hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); if(FAILED(hr)) return hr; - hr = CoMarshalInterface(stream, &IID_IDropTarget, (IUnknown*)pDropTarget, MSHCTX_LOCAL, NULL, MSHLFLAGS_TABLESTRONG); + hr = IDropTarget_QueryInterface(pDropTarget, &IID_IUnknown, (void**)&unk); + if(FAILED(hr)) + { + IStream_Release(stream); + return hr; + } + hr = CoMarshalInterface(stream, &IID_IDropTarget, unk, MSHCTX_LOCAL, NULL, MSHLFLAGS_TABLESTRONG); + IUnknown_Release(unk); + if(SUCCEEDED(hr)) { hr = create_map_from_stream(stream, &map); diff --git a/dll/win32/oleaut32/oleaut32.spec b/dll/win32/oleaut32/oleaut32.spec index 7b764ef96b6..a86486fecac 100644 --- a/dll/win32/oleaut32/oleaut32.spec +++ b/dll/win32/oleaut32/oleaut32.spec @@ -410,6 +410,8 @@ 439 stdcall VarUI8FromUI2(long ptr) 440 stdcall VarUI8FromUI4(long ptr) 441 stdcall VarUI8FromDec(long ptr) +442 stdcall RegisterTypeLibForUser(ptr wstr wstr) +443 stdcall UnRegisterTypeLibForUser(ptr long long long long) @ stdcall -private DllCanUnloadNow() @ stdcall -private DllGetClassObject(ptr ptr ptr) diff --git a/dll/win32/oleaut32/typelib.c b/dll/win32/oleaut32/typelib.c index 7fac0398955..46c0d284be0 100644 --- a/dll/win32/oleaut32/typelib.c +++ b/dll/win32/oleaut32/typelib.c @@ -903,6 +903,49 @@ end: return result; } +/****************************************************************************** + * RegisterTypeLibForUser [OLEAUT32.442] + * Adds information about a type library to the user registry + * NOTES + * Docs: ITypeLib FAR * ptlib + * Docs: OLECHAR FAR* szFullPath + * Docs: OLECHAR FAR* szHelpDir + * + * RETURNS + * Success: S_OK + * Failure: Status + */ +HRESULT WINAPI RegisterTypeLibForUser( + ITypeLib * ptlib, /* [in] Pointer to the library*/ + OLECHAR * szFullPath, /* [in] full Path of the library*/ + OLECHAR * szHelpDir) /* [in] dir to the helpfile for the library, + may be NULL*/ +{ + FIXME("(%p, %s, %s) registering the typelib system-wide\n", ptlib, + debugstr_w(szFullPath), debugstr_w(szHelpDir)); + return RegisterTypeLib(ptlib, szFullPath, szHelpDir); +} + +/****************************************************************************** + * UnRegisterTypeLibForUser [OLEAUT32.443] + * Removes information about a type library from the user registry + * + * RETURNS + * Success: S_OK + * Failure: Status + */ +HRESULT WINAPI UnRegisterTypeLibForUser( + REFGUID libid, /* [in] GUID of the library */ + WORD wVerMajor, /* [in] major version */ + WORD wVerMinor, /* [in] minor version */ + LCID lcid, /* [in] locale id */ + SYSKIND syskind) +{ + FIXME("(%s, %u, %u, %u, %u) unregistering the typelib system-wide\n", + debugstr_guid(libid), wVerMajor, wVerMinor, lcid, syskind); + return UnRegisterTypeLib(libid, wVerMajor, wVerMinor, lcid, syskind); +} + /*======================= ITypeLib implementation =======================*/ typedef struct tagTLBCustData @@ -6017,13 +6060,13 @@ static HRESULT WINAPI ITypeInfo_fnInvoke( unsigned int var_index; TYPEKIND type_kind; HRESULT hres; - const TLBFuncDesc *pFuncInfo = This->funclist; + const TLBFuncDesc *pFuncInfo; TRACE("(%p)(%p,id=%d,flags=0x%08x,%p,%p,%p,%p)\n", This,pIUnk,memid,wFlags,pDispParams,pVarResult,pExcepInfo,pArgErr ); - if( pFuncInfo->funcdesc.wFuncFlags == FUNCFLAG_FRESTRICTED ) + if( This->TypeAttr.wTypeFlags & TYPEFLAG_FRESTRICTED ) return DISP_E_MEMBERNOTFOUND; if (!pDispParams) @@ -6045,7 +6088,8 @@ static HRESULT WINAPI ITypeInfo_fnInvoke( * FUNCDESC for dispinterfaces and we want the real function description */ for (pFuncInfo = This->funclist; pFuncInfo; pFuncInfo=pFuncInfo->next) if ((memid == pFuncInfo->funcdesc.memid) && - (wFlags & pFuncInfo->funcdesc.invkind)) + (wFlags & pFuncInfo->funcdesc.invkind) && + (pFuncInfo->funcdesc.wFuncFlags & FUNCFLAG_FRESTRICTED) == 0) break; if (pFuncInfo) { diff --git a/dll/win32/oleaut32/typelib2.c b/dll/win32/oleaut32/typelib2.c index 1096ea8ada6..92d4ab036d6 100644 --- a/dll/win32/oleaut32/typelib2.c +++ b/dll/win32/oleaut32/typelib2.c @@ -317,7 +317,7 @@ static int ctl2_find_guid( while (offset != -1) { guidentry = (MSFT_GuidEntry *)&This->typelib_segment_data[MSFT_SEG_GUID][offset]; - if (!memcmp(guidentry, guid, sizeof(GUID))) return offset; + if (IsEqualGUID(guidentry, guid)) return offset; offset = guidentry->next_hash; } @@ -1695,7 +1695,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnAddRefTypeInfo( impinfo.oGuid = guid_offset; *phRefType = ctl2_alloc_importinfo(This->typelib, &impinfo)+1; - if(!memcmp(&guid.guid, &IID_IDispatch, sizeof(GUID))) + if(IsEqualGUID(&guid.guid, &IID_IDispatch)) This->typelib->typelib_header.dispatchpos = *phRefType; } @@ -2469,7 +2469,7 @@ static HRESULT WINAPI ICreateTypeInfo2_fnLayOut( return hres; } - if(!memcmp(&typeattr->guid, &IID_IDispatch, sizeof(IDispatch))) + if(IsEqualGUID(&typeattr->guid, &IID_IDispatch)) This->typeinfo->flags |= TYPEFLAG_FDISPATCHABLE; This->typeinfo->datatype2 += (typeattr->cFuncs<<16) + 1; diff --git a/drivers/filesystems/cdfs/cdfs.h b/drivers/filesystems/cdfs/cdfs.h index 3f686d34228..3b114efdfee 100644 --- a/drivers/filesystems/cdfs/cdfs.h +++ b/drivers/filesystems/cdfs/cdfs.h @@ -142,7 +142,7 @@ typedef struct _CDINFO ULONG JolietLevel; ULONG RootStart; ULONG RootSize; - WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH]; + WCHAR VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]; ULONG VolumeLabelLength; ULONG SerialNumber; } CDINFO, *PCDINFO; diff --git a/drivers/filesystems/cdfs/fsctl.c b/drivers/filesystems/cdfs/fsctl.c index 897c08155c7..95db2eae124 100644 --- a/drivers/filesystems/cdfs/fsctl.c +++ b/drivers/filesystems/cdfs/fsctl.c @@ -73,11 +73,24 @@ CdfsGetPVDData(PUCHAR Buffer, /* Extract the volume label */ pc = Pvd->VolumeId; pw = CdInfo->VolumeLabel; - for (i = 0; i < MAXIMUM_VOLUME_LABEL_LENGTH && *pc != ' '; i++) + for (i = 0; i < MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR); i++) { *pw++ = (WCHAR)*pc++; } *pw = 0; + + /* Trim trailing spaces */ + while (pw > CdInfo->VolumeLabel) + { + if (*--pw != ' ') break; + + /* Remove the space */ + *pw = '\0'; + + /* Decrease size */ + i--; + } + CdInfo->VolumeLabelLength = i * sizeof(WCHAR); CdInfo->VolumeSpaceSize = Pvd->VolumeSpaceSizeL; diff --git a/subsystems/win32/win32k/eng/xlate.c b/subsystems/win32/win32k/eng/xlate.c index 0dc9ac0ae24..a1ec18913a1 100644 --- a/subsystems/win32/win32k/eng/xlate.c +++ b/subsystems/win32/win32k/eng/xlate.c @@ -83,24 +83,45 @@ EXLATEOBJ_iXlateRGBto555(PEXLATEOBJ pxlo, ULONG iColor) { ULONG iNewColor; + /* Copy blue */ + iColor >>= 3; + iNewColor = iColor & 0x1F; + + /* Copy green */ + iColor >>= 3; + iNewColor |= iColor & 0x3E0; + + /* Copy red */ + iColor >>= 3; + iNewColor |= iColor & 0x7C00; + + return iNewColor; +} + +ULONG +FASTCALL +EXLATEOBJ_iXlateBGRto555(PEXLATEOBJ pxlo, ULONG iColor) +{ + ULONG iNewColor; + /* Copy red */ iColor <<= 7; iNewColor = iColor & 0x7C00; /* Copy green */ iColor >>= 13; - iNewColor |= iColor & 0x3E0; + iNewColor |= (iColor & 0x3E0); - /* Copy green */ + /* Copy blue */ iColor >>= 13; - iNewColor |= iColor & 0x1F; + iNewColor |= (iColor & 0x1F); return iNewColor; } ULONG FASTCALL -EXLATEOBJ_iXlateBGRto555(PEXLATEOBJ pxlo, ULONG iColor) +EXLATEOBJ_iXlateRGBto565(PEXLATEOBJ pxlo, ULONG iColor) { ULONG iNewColor; @@ -109,19 +130,19 @@ EXLATEOBJ_iXlateBGRto555(PEXLATEOBJ pxlo, ULONG iColor) iNewColor = iColor & 0x1f; /* Copy green */ - iColor >>= 3; - iNewColor |= (iColor & 0x3E0); + iColor >>= 2; + iNewColor |= (iColor & 0x7E0); /* Copy red */ iColor >>= 3; - iNewColor |= (iColor & 0x7C00); + iNewColor |= (iColor & 0xF800); return iNewColor; } ULONG FASTCALL -EXLATEOBJ_iXlateRGBto565(PEXLATEOBJ pxlo, ULONG iColor) +EXLATEOBJ_iXlateBGRto565(PEXLATEOBJ pxlo, ULONG iColor) { ULONG iNewColor; @@ -140,27 +161,6 @@ EXLATEOBJ_iXlateRGBto565(PEXLATEOBJ pxlo, ULONG iColor) return iNewColor; } -ULONG -FASTCALL -EXLATEOBJ_iXlateBGRto565(PEXLATEOBJ pxlo, ULONG iColor) -{ - ULONG iNewColor; - - /* Copy blue */ - iColor >>= 3; - iNewColor = iColor & 0x1f; - - /* Copy green */ - iColor >>= 2; - iNewColor |= (iColor & 0x7E0); - - /* Copy red */ - iColor >>= 3; - iNewColor |= (iColor & 0xF800); - - return iNewColor; -} - ULONG FASTCALL EXLATEOBJ_iXlateRGBtoPal(PEXLATEOBJ pexlo, ULONG iColor) @@ -175,7 +175,7 @@ EXLATEOBJ_iXlate555toRGB(PEXLATEOBJ pxlo, ULONG iColor) ULONG iNewColor; /* Copy blue */ - iNewColor = gajXlate5to8[iColor & 0x1F] << 16; + iNewColor = gajXlate5to8[iColor & 0x1F]; /* Copy green */ iColor >>= 5; @@ -183,7 +183,7 @@ EXLATEOBJ_iXlate555toRGB(PEXLATEOBJ pxlo, ULONG iColor) /* Copy red */ iColor >>= 5; - iNewColor |= gajXlate5to8[iColor & 0x1F]; + iNewColor |= gajXlate5to8[iColor & 0x1F] << 16; return iNewColor; } @@ -195,7 +195,7 @@ EXLATEOBJ_iXlate555toBGR(PEXLATEOBJ pxlo, ULONG iColor) ULONG iNewColor; /* Copy blue */ - iNewColor = gajXlate5to8[iColor & 0x1F]; + iNewColor = gajXlate5to8[iColor & 0x1F] << 16; /* Copy green */ iColor >>= 5; @@ -203,7 +203,7 @@ EXLATEOBJ_iXlate555toBGR(PEXLATEOBJ pxlo, ULONG iColor) /* Copy red */ iColor >>= 5; - iNewColor |= gajXlate5to8[iColor & 0x1F] << 16; + iNewColor |= gajXlate5to8[iColor & 0x1F]; return iNewColor; } @@ -260,7 +260,7 @@ EXLATEOBJ_iXlate565toRGB(PEXLATEOBJ pexlo, ULONG iColor) ULONG iNewColor; /* Copy blue */ - iNewColor = gajXlate5to8[iColor & 0x1F] << 16; + iNewColor = gajXlate5to8[iColor & 0x1F]; /* Copy green */ iColor >>= 5; @@ -268,7 +268,7 @@ EXLATEOBJ_iXlate565toRGB(PEXLATEOBJ pexlo, ULONG iColor) /* Copy red */ iColor >>= 6; - iNewColor |= gajXlate5to8[iColor & 0x1F]; + iNewColor |= gajXlate5to8[iColor & 0x1F] << 16; return iNewColor; } @@ -280,15 +280,15 @@ EXLATEOBJ_iXlate565toBGR(PEXLATEOBJ pexlo, ULONG iColor) ULONG iNewColor; /* Copy blue */ - iNewColor = gajXlate5to8[iColor & 0x1F]; + iNewColor = gajXlate5to8[iColor & 0x1F] << 16; /* Copy green */ iColor >>= 5; iNewColor |= gajXlate6to8[iColor & 0x3F] << 8; - /* Copy blue */ + /* Copy red */ iColor >>= 6; - iNewColor |= gajXlate5to8[iColor & 0x1F] << 16; + iNewColor |= gajXlate5to8[iColor & 0x1F]; return iNewColor; }