< prev index next >

src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp

Print this page

        

*** 863,876 **** /* * Class: sun_awt_shell_Win32ShellFolder2 * Method: extractIcon ! * Signature: (JJZ)J */ JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_extractIcon ! (JNIEnv* env, jclass cls, jlong pIShellFolderL, jlong relativePIDL, jboolean getLargeIcon) { IShellFolder* pIShellFolder = (IShellFolder*)pIShellFolderL; LPITEMIDLIST pidl = (LPITEMIDLIST)relativePIDL; if (pIShellFolder == NULL || pidl == NULL) { return 0; --- 863,877 ---- /* * Class: sun_awt_shell_Win32ShellFolder2 * Method: extractIcon ! * Signature: (JJZZ)J */ JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_extractIcon ! (JNIEnv* env, jclass cls, jlong pIShellFolderL, jlong relativePIDL, ! jboolean getLargeIcon, jboolean getDefaultIcon) { IShellFolder* pIShellFolder = (IShellFolder*)pIShellFolderL; LPITEMIDLIST pidl = (LPITEMIDLIST)relativePIDL; if (pIShellFolder == NULL || pidl == NULL) { return 0;
*** 884,894 **** IID_IExtractIconW, NULL, (void**)&pIcon); if (SUCCEEDED(hres)) { WCHAR szBuf[MAX_PATH]; INT index; UINT flags; ! hres = pIcon->GetIconLocation(GIL_FORSHELL, szBuf, MAX_PATH, &index, &flags); if (SUCCEEDED(hres)) { HICON hIconLarge; hres = pIcon->Extract(szBuf, index, &hIconLarge, &hIcon, (16 << 16) + 32); if (SUCCEEDED(hres)) { if (getLargeIcon) { --- 885,896 ---- IID_IExtractIconW, NULL, (void**)&pIcon); if (SUCCEEDED(hres)) { WCHAR szBuf[MAX_PATH]; INT index; UINT flags; ! UINT uFlags = getDefaultIcon ? GIL_DEFAULTICON : GIL_FORSHELL | GIL_ASYNC; ! hres = pIcon->GetIconLocation(uFlags, szBuf, MAX_PATH, &index, &flags); if (SUCCEEDED(hres)) { HICON hIconLarge; hres = pIcon->Extract(szBuf, index, &hIconLarge, &hIcon, (16 << 16) + 32); if (SUCCEEDED(hres)) { if (getLargeIcon) {
*** 896,905 **** --- 898,910 ---- hIcon = hIconLarge; } else { fn_DestroyIcon((HICON)hIconLarge); } } + } else if (hres == E_PENDING) { + pIcon->Release(); + return E_PENDING; } pIcon->Release(); } return (jlong)hIcon; }
*** 1279,1289 **** * Signature: (V)[BLsun/awt/shell/Win32ShellFolder2$KnownfolderDefenition; */ JNIEXPORT jobjectArray JNICALL Java_sun_awt_shell_Win32ShellFolder2_loadKnownFolders (JNIEnv* env, jclass cls ) { - CoInitialize(NULL); IKnownFolderManager* pkfm = NULL; HRESULT hr = CoCreateInstance(CLSID_KnownFolderManager, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pkfm)); if (!SUCCEEDED(hr)) return NULL; --- 1284,1293 ----
< prev index next >