25 L"/usr/share/sounds/sf2/default-GM.sf2",
26 L"/usr/share/soundfonts/default.sf2",
45 ERR(
"Unable to find system path, default collection will not be available\n");
50 &GUID_DirectMusicAllTypes,
51 &CLSID_DirectMusicAudioPathConfig,
52 &CLSID_DirectMusicBand,
53 &CLSID_DirectMusicContainer,
54 &CLSID_DirectMusicCollection,
55 &CLSID_DirectMusicChordMap,
56 &CLSID_DirectMusicSegment,
57 &CLSID_DirectMusicScript,
58 &CLSID_DirectMusicSong,
59 &CLSID_DirectMusicStyle,
60 &CLSID_DirectMusicGraph,
61 &CLSID_DirectSoundWave
150 WARN(
": not found\n");
159 TRACE(
"(%p)->(): new ref = %lu\n", iface,
ref);
169 TRACE(
"(%p)->(): new ref = %lu\n", iface,
ref);
202 TRACE(
"Found by DMUS_OBJ_OBJECT\n");
209 FIXME(
"Finding DMUS_OBJ_STREAM cached objects currently not supported.\n");
217 TRACE(
"Found by DMUS_OBJ_MEMORY (%d)\n",
230 TRACE(
"Found by DMUS_OBJ_FILENAME | DMUS_OBJ_FULLPATH\n");
243 TRACE(
"Found by DMUS_OBJ_NAME | DMUS_OBJ_CATEGORY\n");
253 TRACE(
"Found by DMUS_OBJ_NAME\n");
263 TRACE(
"Found by DMUS_OBJ_FILENAME\n");
295 ERR(
": guidClass not valid but needed\n");
302 TRACE(
": looking if we have object in the cache or if it can be found via alias\n");
304 if (pExistingEntry) {
306 TRACE(
": already loaded\n");
310 TRACE(
": not loaded yet\n");
311 pObjectEntry = pExistingEntry;
317 TRACE(
": found alias entry for requested object... using stored info\n");
325 TRACE(
": no cache/alias entry found for requested object\n");
330 TRACE(
": loading from URLs not supported yet\n");
353 TRACE(
": loading from resource\n");
357 ERR(
": could not create resource stream\n");
363 ERR(
": could not attach stream to resource\n");
364 IStream_Release (pStream);
371 IStream_AddRef(pStream);
375 FIXME(
": unknown/unsupported way of loading\n");
381 IStream_Release(pStream);
387 IStream_Release(pStream);
388 ERR(
": could not create object\n");
394 IStream_Release(pStream);
396 ERR(
"failed to Query\n");
400 result = IPersistStream_Load (pPersistStream, pStream);
402 IStream_Release(pStream);
403 IPersistStream_Release(pPersistStream);
405 WARN(
": failed to (completely) load object (%#lx)\n",
result);
417 IStream_Release(pStream);
418 IPersistStream_Release(pPersistStream);
420 ERR(
": failed to get descriptor\n");
424 IStream_Release (pStream);
425 IPersistStream_Release (pPersistStream);
429 if (!bCache)
TRACE(
": caching disabled\n");
432 FIXME(
"Skipping cache for DMUS_OBJ_STREAM object\n");
439 pObjectEntry =
calloc(1,
sizeof(*pObjectEntry));
450 TRACE(
": filled in cache entry\n");
505 IStream_AddRef(pStream);
511 ERR(
": could not create resource stream\n");
518 ERR(
": could not attach stream to resource\n");
519 IStream_Release (pStream);
524 ERR(
": no way to get additional info\n");
530 IStream_Release(pStream);
536 IStream_Release(pStream);
543 IStream_Release(pStream);
545 ERR(
": couldn't parse descriptor\n");
555 IStream_Release (pStream);
561 TRACE(
": exactly same entry already exists\n");
567 TRACE(
": adding alias entry with following info:\n");
570 pNewEntry =
calloc(1,
sizeof(*pNewEntry));
598 FIXME(
"clear flag ignored\n");
625 ERR(
": rguidClass invalid CLSID\n");
629 if (!pwzFileExtension)
635 p = wszSearchString +
lstrlenW(wszSearchString);
636 if (
p > wszSearchString &&
p[-1] !=
'\\') *
p++ =
'\\';
646 TRACE(
": no files found\n");
661 TRACE(
": search completed\n");
664 ERR(
": could not get next file\n");
674 IDirectMusicObject *
object)
690 TRACE(
"Object already loaded.\n");
704 IDirectMusicObject *
object)
718 TRACE(
"Looking for the object in cache\n");
726 entry->Desc.dwValidData &= ~DMUS_OBJ_LOADED;
772 This->cache_class &= ~(1 <<
idx);
795 if (dwCount == dwIndex) {
796 *pDesc = pObjectEntry->
Desc;
808 TRACE(
": not found\n");
814 FIXME(
"(%p)->(): stub\n", iface);
826 ERR(
": pObject bad write pointer\n");
830 result = IUnknown_QueryInterface (
pObject, &IID_IDirectMusicObject, (
LPVOID*)&pObjectInterface);
861 TRACE(
": cannot find file\n");
904 else WARN(
"Failed to open GMFilePath registry key, using system fallbacks\n");
924 obj->cache_class = ~0;
929 Desc.
guidClass = CLSID_DirectMusicCollection;
933 if (
FAILED(
hr))
WARN(
"Failed to load the default collection, hr %#lx\n",
hr);
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void list_remove(struct list_entry *entry)
static void list_add_head(struct list_entry *head, struct list_entry *entry)
static void list_init(struct list_entry *head)
static FILEDATA FileData[MAX_FDS]
#define RegCloseKey(hKey)
#define DM_STRUCT_INIT(x)
static HRESULT WINAPI loader_CacheObject(IDirectMusicLoader8 *iface, IDirectMusicObject *object)
static HRESULT WINAPI loader_EnableCache(IDirectMusicLoader8 *iface, REFGUID class, BOOL enable)
static HRESULT WINAPI loader_ClearCache(IDirectMusicLoader8 *iface, REFGUID class)
static const IDirectMusicLoader8Vtbl loader_vtbl
static const GUID * classes[]
static HRESULT WINAPI loader_ScanDirectory(IDirectMusicLoader8 *iface, REFGUID rguidClass, WCHAR *pwzFileExtension, WCHAR *pwzScanFileName)
static HRESULT get_system_default_gm_path(WCHAR *path, UINT max_len)
HRESULT create_dmloader(REFIID lpcGUID, void **ppobj)
static HRESULT WINAPI loader_ReleaseObject(IDirectMusicLoader8 *iface, IDirectMusicObject *object)
static HRESULT get_default_gm_path(WCHAR *path, DWORD max_len)
static struct loader * impl_from_IDirectMusicLoader8(IDirectMusicLoader8 *iface)
static HRESULT WINAPI loader_ReleaseObjectByUnknown(IDirectMusicLoader8 *iface, IUnknown *pObject)
static void get_search_path(struct loader *This, REFGUID class, WCHAR *path)
static HRESULT WINAPI loader_LoadObjectFromFile(IDirectMusicLoader8 *iface, REFGUID rguidClassID, REFIID iidInterfaceID, WCHAR *pwzFilePath, void **ppObject)
static void WINAPI loader_CollectGarbage(IDirectMusicLoader8 *iface)
static int index_from_class(REFCLSID class)
static HRESULT WINAPI loader_SetSearchDirectory(IDirectMusicLoader8 *iface, REFGUID class, WCHAR *path, BOOL clear)
static const WCHAR * system_default_gm_paths[]
static ULONG WINAPI loader_Release(IDirectMusicLoader8 *iface)
static ULONG WINAPI loader_AddRef(IDirectMusicLoader8 *iface)
static HRESULT WINAPI loader_GetObject(IDirectMusicLoader8 *iface, DMUS_OBJECTDESC *pDesc, REFIID riid, void **ppv)
static HRESULT DMUSIC_CopyDescriptor(DMUS_OBJECTDESC *pDst, DMUS_OBJECTDESC *pSrc)
static BOOL is_cache_enabled(struct loader *This, REFCLSID class)
static HRESULT WINAPI loader_QueryInterface(IDirectMusicLoader8 *iface, REFIID riid, void **ppobj)
static HRESULT WINAPI loader_EnumObject(IDirectMusicLoader8 *iface, REFGUID rguidClass, DWORD dwIndex, DMUS_OBJECTDESC *pDesc)
static HRESULT WINAPI loader_SetObject(IDirectMusicLoader8 *iface, DMUS_OBJECTDESC *pDesc)
static struct cache_entry * find_cache_object(struct loader *This, DMUS_OBJECTDESC *desc)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
#define INVALID_HANDLE_VALUE
BOOL WINAPI IsBadReadPtr(IN LPCVOID lp, IN UINT_PTR ucb)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
DWORD WINAPI SearchPathW(IN LPCWSTR lpPath OPTIONAL, IN LPCWSTR lpFileName, IN LPCWSTR lpExtension OPTIONAL, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart OPTIONAL)
BOOL WINAPI FileTimeToLocalFileTime(IN CONST FILETIME *lpFileTime, OUT LPFILETIME lpLocalFileTime)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
_ACRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t)
#define DMUS_E_LOADER_OBJECTNOTFOUND
#define DMUS_E_LOADER_NOCLASSID
#define DMUS_E_LOADER_NOFILENAME
#define DMUS_E_LOADER_FORMATNOTSUPPORTED
#define DMUS_E_LOADER_FAILEDOPEN
#define DMUS_E_LOADER_BADPATH
HRESULT DMUSIC_CreateDirectMusicLoaderResourceStream(void **ppobj)
HRESULT file_stream_create(const WCHAR *path, IStream **ret_iface)
HRESULT loader_stream_create(IDirectMusicLoader *loader, IStream *stream, IStream **ret_iface)
HRESULT WINAPI IDirectMusicLoaderResourceStream_Attach(LPSTREAM iface, LPBYTE pbMemData, LONGLONG llMemLength, LONGLONG llPos)
void dump_DMUS_OBJECTDESC(DMUS_OBJECTDESC *desc)
const char * debugstr_dmguid(const GUID *id)
#define IDirectMusicLoader8_SetObject(p, a)
#define IDirectMusicObject_ParseDescriptor(p, a, b)
#define DMUS_OBJ_FULLPATH
#define IDirectMusicObject_QueryInterface(p, a, b)
#define IDirectMusicLoader_AddRef(p)
#define IDirectMusicObject_Release(p)
#define IDirectMusicLoader_QueryInterface(p, a, b)
#define IDirectMusicObject_AddRef(p)
#define IDirectMusicLoader_Release(p)
#define DMUS_MAX_CATEGORY
#define IDirectMusicLoader_SetObject(p, a)
#define IDirectMusicLoader8_ReleaseObject(p, a)
#define DMUS_OBJ_FILENAME
#define IDirectMusicObject_GetDescriptor(p, a)
#define IDirectMusicLoader8_ClearCache(p, a)
struct IDirectMusicObject * LPDIRECTMUSICOBJECT
#define DMUS_MAX_FILENAME
#define IDirectMusicLoader_GetObject(p, a, b, c)
#define DMUS_OBJ_CATEGORY
GLuint GLuint GLsizei GLenum type
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
struct task_struct * current
D3D11_SHADER_VARIABLE_DESC desc
#define FILE_ATTRIBUTE_DIRECTORY
interface IStream * LPSTREAM
const GUID IID_IPersistStream
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
#define LIST_FOR_EACH_ENTRY(elem, list, type, field)
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
WCHAR wszCategory[DMUS_MAX_CATEGORY]
WCHAR wszFileName[DMUS_MAX_FILENAME]
WCHAR wszName[DMUS_MAX_NAME]
IDirectMusicObject * pObject
WCHAR * search_paths[ARRAY_SIZE(classes)]
IDirectMusicLoader8 IDirectMusicLoader8_iface
#define CONTAINING_RECORD(address, type, field)
#define INVALID_FILE_ATTRIBUTES
DWORD WINAPI GetLastError(void)
#define REGDB_E_CLASSNOTREG
#define ERROR_NO_MORE_FILES
#define HKEY_LOCAL_MACHINE