Kill winmmshim, remove dead files

This commit is contained in:
Drake Arconis
2016-01-16 13:14:09 -05:00
parent 1d2995666f
commit a5b03d1c0f
15 changed files with 6 additions and 3033 deletions

View File

@@ -1,81 +0,0 @@
->> Features implemented in Ascent:
In-World:
-------------------------------------------------
* Alpha skins and Tattoo Layers
* Inventory Pre-caching
* Avatar Radar
* Multiple Attachment Points
* Idle time of avatars around you (Not perfect)
* Client tags/coloring for various clients, and extra client definitions
* Force Away button to fake being away if you really want to avoid someone :V
* Double-Click teleport (Not all the functionality of Emerald yet)
Preferences (Options are in Ascent Options):
* Disable Look At
* Disable Point At and beam end
* Fetch inventory in background on login (No waiting for caching when searching)
* Display your client tag to yourself
* Display your client tag color to yourself
* Rez objects as land group when possible
* Some settings can now be saved per account after changing an option in the preferences. Currently affected settings:
Edit Beam color
Client Tag Color
Communication Window:
- Friend List:
* Friend List Online/Total counts (Not perfect)
* Shows what rights your friends have given you (Mod, See on map, Online)
Chat Bar:
* Emerald-style Chatbar as Commandline (See Preferences)
* MU-style poses.
* OOC Auto-close.
Instant Messages:
* MU-style poses.
* OOC Auto-close.
Advanced -> Ascent:
* Fake Away Status
* Force Ground Sit (Lets you sit anywhere)
* Phantom Avatar (Prevents you visually from being pushed.)
* Toggle IM Notification (Ability to hide '%n is typing...' notification from being sent.)
* Close All Dialogs
* Message Log
* Message Builder
* Sound Explorer
* Asset Blacklist
* AO options
Object Pie Menus:
* Measure: Select on one object, then another, to get the exact distance between the two
* Data: Reports prim rotation and position in a format usable in LSL scripts.
* Script Counter
Self Pie Menu:
* Animation Explorer
Agent Pie Menus:
* Script Counter
* Copy Agent UUID
* Debug
Parcel Window:
-------------------------------------------------
- General tab:
- Objects tab:
* In Sim/Online/Offline indicators for Parcel Object Owner listings (Online is currently wonky - This is an issue with SL, Emerald has the same problem.)
Build Window:
-------------------------------------------------
- General tab:
* Last Owner shown in Build "General" Tab
* Group object is set to has a "View" button to see the group's profile
* Copy Object Key button
- Build Tab:
* Copy/Paste Position buttons
* Copy/Paste Size buttons
* Copy/Paste Rotation buttons
* Copy/Paste Primitive Parameters buttons
Known issues:
Online/Total counts in the friends list sometimes go haywire. Not often or by a large margin, but it happens.

View File

@@ -1,5 +0,0 @@
SLASSET_LIBS_WIN32=http://automated-builds-secondlife-com.s3.amazonaws.com/oss-viewer/export/slviewer-win32-libs-oss-viewer-1.23.4.0.zip
SLASSET_MD5=http://automated-builds-secondlife-com.s3.amazonaws.com/oss-viewer/export/md5sums-oss-viewer-1.23.4.0.txt
SLASSET_LIBS_DARWIN=http://automated-builds-secondlife-com.s3.amazonaws.com/oss-viewer/export/slviewer-darwin-libs-oss-viewer-1.23.4.0.tar.gz
SLASSET_ART=http://automated-builds-secondlife-com.s3.amazonaws.com/oss-viewer/export/slviewer-artwork-oss-viewer-1.23.4.0.zip
SLASSET_LIBS_LINUXI386=http://automated-builds-secondlife-com.s3.amazonaws.com/oss-viewer/export/slviewer-linux-libs-oss-viewer-1.23.4.0.tar.gz

View File

@@ -1,5 +0,0 @@
For full release notes, see:
http://wiki.secondlife.com/wiki/Release_Notes
For a log of viewer changes, see:
doc/viewer-changes.txt

View File

View File

@@ -322,11 +322,6 @@ class WindowsManifest(ViewerManifest):
self.path("media_plugin_webkit.dll")
self.end_prefix()
# Plugin volume control
if not self.is_win64() and self.prefix(src='../plugins/winmmshim/%s' % self.args['configuration'], dst=""):
self.path("winmm.dll")
self.end_prefix()
# For WebKit/Qt plugin runtimes
if self.prefix(src=self.args['configuration']+"/llplugin", dst="llplugin"):
self.path("libeay32.dll")

View File

@@ -13,9 +13,5 @@ if (WINDOWS OR DARWIN)
add_subdirectory(quicktime)
endif (WINDOWS OR DARWIN)
if (WINDOWS AND WORD_SIZE EQUAL 32)
add_subdirectory(winmmshim)
endif (WINDOWS AND WORD_SIZE EQUAL 32)
add_subdirectory(example_basic)
add_subdirectory(example_media)

View File

@@ -42,44 +42,14 @@ private:
VolumeCatcherImpl();
~VolumeCatcherImpl();
typedef void (WINAPI *set_volume_func_t)(F32);
typedef void (WINAPI *set_mute_func_t)(bool);
set_volume_func_t mSetVolumeFunc;
set_mute_func_t mSetMuteFunc;
// tests if running on Vista, 7, 8 + once in CTOR
bool isWindowsVistaOrHigher();
F32 mVolume;
F32 mPan;
bool mSystemIsVistaOrHigher;
};
bool VolumeCatcherImpl::isWindowsVistaOrHigher()
{
OSVERSIONINFO osvi;
ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
return osvi.dwMajorVersion >= 6;
}
VolumeCatcherImpl::VolumeCatcherImpl()
: mVolume(1.0f), // default volume is max
mPan(0.f) // default pan is centered
{
mSystemIsVistaOrHigher = isWindowsVistaOrHigher();
if ( ! mSystemIsVistaOrHigher )
{
HMODULE handle = ::LoadLibrary(L"winmm.dll");
if(handle)
{
mSetVolumeFunc = (set_volume_func_t)::GetProcAddress(handle, "setPluginVolume");
mSetMuteFunc = (set_mute_func_t)::GetProcAddress(handle, "setPluginMute");
}
}
}
VolumeCatcherImpl::~VolumeCatcherImpl()
@@ -90,26 +60,12 @@ void VolumeCatcherImpl::setVolume(F32 volume)
{
mVolume = volume;
if ( mSystemIsVistaOrHigher )
{
// set both left/right to same volume
// TODO: use pan value to set independently
DWORD left_channel = (DWORD)(mVolume * 65535.0f);
DWORD right_channel = (DWORD)(mVolume * 65535.0f);
DWORD hw_volume = left_channel << 16 | right_channel;
::waveOutSetVolume(NULL, hw_volume);
}
else
{
if (mSetMuteFunc)
{
mSetMuteFunc(volume == 0.f);
}
if (mSetVolumeFunc)
{
mSetVolumeFunc(mVolume);
}
}
// set both left/right to same volume
// TODO: use pan value to set independently
DWORD left_channel = (DWORD)(mVolume * 65535.0f);
DWORD right_channel = (DWORD)(mVolume * 65535.0f);
DWORD hw_volume = left_channel << 16 | right_channel;
::waveOutSetVolume(NULL, hw_volume);
}
void VolumeCatcherImpl::setPan(F32 pan)

View File

@@ -1,40 +0,0 @@
# -*- cmake -*-
project(winmm_shim)
### winmm_shim
# *HACK - override msvcrt implementation (intialized on 00-Common) to be
# statically linked for winmm.dll this relies on vc taking the last flag on
# the command line
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
set(winmm_shim_SOURCE_FILES
forwarding_api.cpp
winmm_shim.cpp
)
set(winmm_shim_HEADER_FILES
forwarding_api.h
winmm.def
)
list(APPEND winmm_shim_SOURCE_FILES ${winmm_shim_HEADER_FILES})
set_source_files_properties(${media_plugin_webkit_HEADER_FILES}
PROPERTIES HEADER_FILE_ONLY TRUE)
add_library(winmm_shim
SHARED
${winmm_shim_SOURCE_FILES}
)
if (WINDOWS)
set_target_properties(
winmm_shim
PROPERTIES
LINK_FLAGS "/MANIFEST:NO"
OUTPUT_NAME "winmm"
)
endif (WINDOWS)

File diff suppressed because it is too large Load Diff

View File

@@ -1,390 +0,0 @@
/**
* @file forwarding_api.h
* @brief forwards winmm API calls to real winmm.dll
*
* $LicenseInfo:firstyear=2010&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
// this turns off __declspec(dllimport) for the functions declared in mmsystem.h
#define _WINMM_
#include <windows.h>
#include <mmsystem.h>
void init_function_pointers(HMODULE winmm_handle);
void ll_winmm_shim_initialize();
typedef VOID (*LPTASKCALLBACK)(DWORD_PTR dwInst);
typedef LRESULT (WINAPI *CloseDriver_type)( HDRVR hDriver, LPARAM lParam1, LPARAM lParam2);
extern CloseDriver_type CloseDriver_orig;
typedef HDRVR (WINAPI *OpenDriver_type)( LPCWSTR szDriverName, LPCWSTR szSectionName, LPARAM lParam2);
extern OpenDriver_type OpenDriver_orig;
typedef LRESULT (WINAPI *SendDriverMessage_type)( HDRVR hDriver, UINT message, LPARAM lParam1, LPARAM lParam2);
extern SendDriverMessage_type SendDriverMessage_orig;
typedef HMODULE (WINAPI *DrvGetModuleHandle_type)( HDRVR hDriver);
extern DrvGetModuleHandle_type DrvGetModuleHandle_orig;
typedef HMODULE (WINAPI *GetDriverModuleHandle_type)( HDRVR hDriver);
extern GetDriverModuleHandle_type GetDriverModuleHandle_orig;
typedef LRESULT (WINAPI *DefDriverProc_type)( DWORD_PTR dwDriverIdentifier, HDRVR hdrvr, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
extern DefDriverProc_type DefDriverProc_orig;
typedef BOOL (WINAPI *DriverCallback_type)(DWORD dwCallBack, DWORD dwFlags, HDRVR hdrvr, DWORD msg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2);
extern DriverCallback_type DriverCallback_orig;
typedef UINT (WINAPI *mmsystemGetVersion_type)(void);
extern mmsystemGetVersion_type mmsystemGetVersion_orig;
typedef BOOL (WINAPI *sndPlaySoundA_type)( LPCSTR pszSound, UINT fuSound);
extern sndPlaySoundA_type sndPlaySoundA_orig;
typedef BOOL (WINAPI *sndPlaySoundW_type)( LPCWSTR pszSound, UINT fuSound);
extern sndPlaySoundW_type sndPlaySoundW_orig;
typedef BOOL (WINAPI *PlaySoundA_type)( LPCSTR pszSound, HMODULE hmod, DWORD fdwSound);
extern PlaySoundA_type PlaySoundA_orig;
typedef BOOL (WINAPI *PlaySoundW_type)( LPCWSTR pszSound, HMODULE hmod, DWORD fdwSound);
extern PlaySoundW_type PlaySoundW_orig;
typedef UINT (WINAPI *waveOutGetNumDevs_type)(void);
extern waveOutGetNumDevs_type waveOutGetNumDevs_orig;
typedef MMRESULT (WINAPI *waveOutGetDevCapsA_type)( UINT_PTR uDeviceID, LPWAVEOUTCAPSA pwoc, UINT cbwoc);
extern waveOutGetDevCapsA_type waveOutGetDevCapsA_orig;
typedef MMRESULT (WINAPI *waveOutGetDevCapsW_type)( UINT_PTR uDeviceID, LPWAVEOUTCAPSW pwoc, UINT cbwoc);
extern waveOutGetDevCapsW_type waveOutGetDevCapsW_orig;
typedef MMRESULT (WINAPI *waveOutGetVolume_type)( HWAVEOUT hwo, LPDWORD pdwVolume);
extern waveOutGetVolume_type waveOutGetVolume_orig;
typedef MMRESULT (WINAPI *waveOutSetVolume_type)( HWAVEOUT hwo, DWORD dwVolume);
extern waveOutSetVolume_type waveOutSetVolume_orig;
typedef MMRESULT (WINAPI *waveOutGetErrorTextA_type)( MMRESULT mmrError, LPSTR pszText, UINT cchText);
extern waveOutGetErrorTextA_type waveOutGetErrorTextA_orig;
typedef MMRESULT (WINAPI *waveOutGetErrorTextW_type)( MMRESULT mmrError, LPWSTR pszText, UINT cchText);
extern waveOutGetErrorTextW_type waveOutGetErrorTextW_orig;
typedef MMRESULT (WINAPI *waveOutOpen_type)( LPHWAVEOUT phwo, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
extern waveOutOpen_type waveOutOpen_orig;
typedef MMRESULT (WINAPI *waveOutClose_type)( HWAVEOUT hwo);
extern waveOutClose_type waveOutClose_orig;
typedef MMRESULT (WINAPI *waveOutPrepareHeader_type)( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh);
extern waveOutPrepareHeader_type waveOutPrepareHeader_orig;
typedef MMRESULT (WINAPI *waveOutUnprepareHeader_type)( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh);
extern waveOutUnprepareHeader_type waveOutUnprepareHeader_orig;
typedef MMRESULT (WINAPI *waveOutWrite_type)( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh);
extern waveOutWrite_type waveOutWrite_orig;
typedef MMRESULT (WINAPI *waveOutPause_type)( HWAVEOUT hwo);
extern waveOutPause_type waveOutPause_orig;
typedef MMRESULT (WINAPI *waveOutRestart_type)( HWAVEOUT hwo);
extern waveOutRestart_type waveOutRestart_orig;
typedef MMRESULT (WINAPI *waveOutReset_type)( HWAVEOUT hwo);
extern waveOutReset_type waveOutReset_orig;
typedef MMRESULT (WINAPI *waveOutBreakLoop_type)( HWAVEOUT hwo);
extern waveOutBreakLoop_type waveOutBreakLoop_orig;
typedef MMRESULT (WINAPI *waveOutGetPosition_type)( HWAVEOUT hwo, LPMMTIME pmmt, UINT cbmmt);
extern waveOutGetPosition_type waveOutGetPosition_orig;
typedef MMRESULT (WINAPI *waveOutGetPitch_type)( HWAVEOUT hwo, LPDWORD pdwPitch);
extern waveOutGetPitch_type waveOutGetPitch_orig;
typedef MMRESULT (WINAPI *waveOutSetPitch_type)( HWAVEOUT hwo, DWORD dwPitch);
extern waveOutSetPitch_type waveOutSetPitch_orig;
typedef MMRESULT (WINAPI *waveOutGetPlaybackRate_type)( HWAVEOUT hwo, LPDWORD pdwRate);
extern waveOutGetPlaybackRate_type waveOutGetPlaybackRate_orig;
typedef MMRESULT (WINAPI *waveOutSetPlaybackRate_type)( HWAVEOUT hwo, DWORD dwRate);
extern waveOutSetPlaybackRate_type waveOutSetPlaybackRate_orig;
typedef MMRESULT (WINAPI *waveOutGetID_type)( HWAVEOUT hwo, LPUINT puDeviceID);
extern waveOutGetID_type waveOutGetID_orig;
typedef MMRESULT (WINAPI *waveOutMessage_type)( HWAVEOUT hwo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
extern waveOutMessage_type waveOutMessage_orig;
typedef UINT (WINAPI *waveInGetNumDevs_type)(void);
extern waveInGetNumDevs_type waveInGetNumDevs_orig;
typedef MMRESULT (WINAPI *waveInGetDevCapsA_type)( UINT_PTR uDeviceID, LPWAVEINCAPSA pwic, UINT cbwic);
extern waveInGetDevCapsA_type waveInGetDevCapsA_orig;
typedef MMRESULT (WINAPI *waveInGetDevCapsW_type)( UINT_PTR uDeviceID, LPWAVEINCAPSW pwic, UINT cbwic);
extern waveInGetDevCapsW_type waveInGetDevCapsW_orig;
typedef MMRESULT (WINAPI *waveInGetErrorTextA_type)(MMRESULT mmrError, LPSTR pszText, UINT cchText);
extern waveInGetErrorTextA_type waveInGetErrorTextA_orig;
typedef MMRESULT (WINAPI *waveInGetErrorTextW_type)(MMRESULT mmrError, LPWSTR pszText, UINT cchText);
extern waveInGetErrorTextW_type waveInGetErrorTextW_orig;
typedef MMRESULT (WINAPI *waveInOpen_type)( LPHWAVEIN phwi, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
extern waveInOpen_type waveInOpen_orig;
typedef MMRESULT (WINAPI *waveInClose_type)( HWAVEIN hwi);
extern waveInClose_type waveInClose_orig;
typedef MMRESULT (WINAPI *waveInPrepareHeader_type)( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
extern waveInPrepareHeader_type waveInPrepareHeader_orig;
typedef MMRESULT (WINAPI *waveInUnprepareHeader_type)( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
extern waveInUnprepareHeader_type waveInUnprepareHeader_orig;
typedef MMRESULT (WINAPI *waveInAddBuffer_type)( HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
extern waveInAddBuffer_type waveInAddBuffer_orig;
typedef MMRESULT (WINAPI *waveInStart_type)( HWAVEIN hwi);
extern waveInStart_type waveInStart_orig;
typedef MMRESULT (WINAPI *waveInStop_type)( HWAVEIN hwi);
extern waveInStop_type waveInStop_orig;
typedef MMRESULT (WINAPI *waveInReset_type)( HWAVEIN hwi);
extern waveInReset_type waveInReset_orig;
typedef MMRESULT (WINAPI *waveInGetPosition_type)( HWAVEIN hwi, LPMMTIME pmmt, UINT cbmmt);
extern waveInGetPosition_type waveInGetPosition_orig;
typedef MMRESULT (WINAPI *waveInGetID_type)( HWAVEIN hwi, LPUINT puDeviceID);
extern waveInGetID_type waveInGetID_orig;
typedef MMRESULT (WINAPI *waveInMessage_type)( HWAVEIN hwi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
extern waveInMessage_type waveInMessage_orig;
typedef UINT (WINAPI *midiOutGetNumDevs_type)(void);
extern midiOutGetNumDevs_type midiOutGetNumDevs_orig;
typedef MMRESULT (WINAPI *midiStreamOpen_type)( LPHMIDISTRM phms, LPUINT puDeviceID, DWORD cMidi, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
extern midiStreamOpen_type midiStreamOpen_orig;
typedef MMRESULT (WINAPI *midiStreamClose_type)( HMIDISTRM hms);
extern midiStreamClose_type midiStreamClose_orig;
typedef MMRESULT (WINAPI *midiStreamProperty_type)( HMIDISTRM hms, LPBYTE lppropdata, DWORD dwProperty);
extern midiStreamProperty_type midiStreamProperty_orig;
typedef MMRESULT (WINAPI *midiStreamPosition_type)( HMIDISTRM hms, LPMMTIME lpmmt, UINT cbmmt);
extern midiStreamPosition_type midiStreamPosition_orig;
typedef MMRESULT (WINAPI *midiStreamOut_type)( HMIDISTRM hms, LPMIDIHDR pmh, UINT cbmh);
extern midiStreamOut_type midiStreamOut_orig;
typedef MMRESULT (WINAPI *midiStreamPause_type)( HMIDISTRM hms);
extern midiStreamPause_type midiStreamPause_orig;
typedef MMRESULT (WINAPI *midiStreamRestart_type)( HMIDISTRM hms);
extern midiStreamRestart_type midiStreamRestart_orig;
typedef MMRESULT (WINAPI *midiStreamStop_type)( HMIDISTRM hms);
extern midiStreamStop_type midiStreamStop_orig;
typedef MMRESULT (WINAPI *midiConnect_type)( HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved);
extern midiConnect_type midiConnect_orig;
typedef MMRESULT (WINAPI *midiDisconnect_type)( HMIDI hmi, HMIDIOUT hmo, LPVOID pReserved);
extern midiDisconnect_type midiDisconnect_orig;
typedef MMRESULT (WINAPI *midiOutGetDevCapsA_type)( UINT_PTR uDeviceID, LPMIDIOUTCAPSA pmoc, UINT cbmoc);
extern midiOutGetDevCapsA_type midiOutGetDevCapsA_orig;
typedef MMRESULT (WINAPI *midiOutGetDevCapsW_type)( UINT_PTR uDeviceID, LPMIDIOUTCAPSW pmoc, UINT cbmoc);
extern midiOutGetDevCapsW_type midiOutGetDevCapsW_orig;
typedef MMRESULT (WINAPI *midiOutGetVolume_type)( HMIDIOUT hmo, LPDWORD pdwVolume);
extern midiOutGetVolume_type midiOutGetVolume_orig;
typedef MMRESULT (WINAPI *midiOutSetVolume_type)( HMIDIOUT hmo, DWORD dwVolume);
extern midiOutSetVolume_type midiOutSetVolume_orig;
typedef MMRESULT (WINAPI *midiOutGetErrorTextA_type)( MMRESULT mmrError, LPSTR pszText, UINT cchText);
extern midiOutGetErrorTextA_type midiOutGetErrorTextA_orig;
typedef MMRESULT (WINAPI *midiOutGetErrorTextW_type)( MMRESULT mmrError, LPWSTR pszText, UINT cchText);
extern midiOutGetErrorTextW_type midiOutGetErrorTextW_orig;
typedef MMRESULT (WINAPI *midiOutOpen_type)( LPHMIDIOUT phmo, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
extern midiOutOpen_type midiOutOpen_orig;
typedef MMRESULT (WINAPI *midiOutClose_type)( HMIDIOUT hmo);
extern midiOutClose_type midiOutClose_orig;
typedef MMRESULT (WINAPI *midiOutPrepareHeader_type)( HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh);
extern midiOutPrepareHeader_type midiOutPrepareHeader_orig;
typedef MMRESULT (WINAPI *midiOutUnprepareHeader_type)(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh);
extern midiOutUnprepareHeader_type midiOutUnprepareHeader_orig;
typedef MMRESULT (WINAPI *midiOutShortMsg_type)( HMIDIOUT hmo, DWORD dwMsg);
extern midiOutShortMsg_type midiOutShortMsg_orig;
typedef MMRESULT (WINAPI *midiOutLongMsg_type)(HMIDIOUT hmo, LPMIDIHDR pmh, UINT cbmh);
extern midiOutLongMsg_type midiOutLongMsg_orig;
typedef MMRESULT (WINAPI *midiOutReset_type)( HMIDIOUT hmo);
extern midiOutReset_type midiOutReset_orig;
typedef MMRESULT (WINAPI *midiOutCachePatches_type)( HMIDIOUT hmo, UINT uBank, LPWORD pwpa, UINT fuCache);
extern midiOutCachePatches_type midiOutCachePatches_orig;
typedef MMRESULT (WINAPI *midiOutCacheDrumPatches_type)( HMIDIOUT hmo, UINT uPatch, LPWORD pwkya, UINT fuCache);
extern midiOutCacheDrumPatches_type midiOutCacheDrumPatches_orig;
typedef MMRESULT (WINAPI *midiOutGetID_type)( HMIDIOUT hmo, LPUINT puDeviceID);
extern midiOutGetID_type midiOutGetID_orig;
typedef MMRESULT (WINAPI *midiOutMessage_type)( HMIDIOUT hmo, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
extern midiOutMessage_type midiOutMessage_orig;
typedef UINT (WINAPI *midiInGetNumDevs_type)(void);
extern midiInGetNumDevs_type midiInGetNumDevs_orig;
typedef MMRESULT (WINAPI *midiInGetDevCapsA_type)( UINT_PTR uDeviceID, LPMIDIINCAPSA pmic, UINT cbmic);
extern midiInGetDevCapsA_type midiInGetDevCapsA_orig;
typedef MMRESULT (WINAPI *midiInGetDevCapsW_type)( UINT_PTR uDeviceID, LPMIDIINCAPSW pmic, UINT cbmic);
extern midiInGetDevCapsW_type midiInGetDevCapsW_orig;
typedef MMRESULT (WINAPI *midiInGetErrorTextA_type)( MMRESULT mmrError, LPSTR pszText, UINT cchText);
extern midiInGetErrorTextA_type midiInGetErrorTextA_orig;
typedef MMRESULT (WINAPI *midiInGetErrorTextW_type)( MMRESULT mmrError, LPWSTR pszText, UINT cchText);
extern midiInGetErrorTextW_type midiInGetErrorTextW_orig;
typedef MMRESULT (WINAPI *midiInOpen_type)( LPHMIDIIN phmi, UINT uDeviceID, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
extern midiInOpen_type midiInOpen_orig;
typedef MMRESULT (WINAPI *midiInClose_type)( HMIDIIN hmi);
extern midiInClose_type midiInClose_orig;
typedef MMRESULT (WINAPI *midiInPrepareHeader_type)( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh);
extern midiInPrepareHeader_type midiInPrepareHeader_orig;
typedef MMRESULT (WINAPI *midiInUnprepareHeader_type)( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh);
extern midiInUnprepareHeader_type midiInUnprepareHeader_orig;
typedef MMRESULT (WINAPI *midiInAddBuffer_type)( HMIDIIN hmi, LPMIDIHDR pmh, UINT cbmh);
extern midiInAddBuffer_type midiInAddBuffer_orig;
typedef MMRESULT (WINAPI *midiInStart_type)( HMIDIIN hmi);
extern midiInStart_type midiInStart_orig;
typedef MMRESULT (WINAPI *midiInStop_type)( HMIDIIN hmi);
extern midiInStop_type midiInStop_orig;
typedef MMRESULT (WINAPI *midiInReset_type)( HMIDIIN hmi);
extern midiInReset_type midiInReset_orig;
typedef MMRESULT (WINAPI *midiInGetID_type)( HMIDIIN hmi, LPUINT puDeviceID);
extern midiInGetID_type midiInGetID_orig;
typedef MMRESULT (WINAPI *midiInMessage_type)( HMIDIIN hmi, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
extern midiInMessage_type midiInMessage_orig;
typedef UINT (WINAPI *auxGetNumDevs_type)(void);
extern auxGetNumDevs_type auxGetNumDevs_orig;
typedef MMRESULT (WINAPI *auxGetDevCapsA_type)( UINT_PTR uDeviceID, LPAUXCAPSA pac, UINT cbac);
extern auxGetDevCapsA_type auxGetDevCapsA_orig;
typedef MMRESULT (WINAPI *auxGetDevCapsW_type)( UINT_PTR uDeviceID, LPAUXCAPSW pac, UINT cbac);
extern auxGetDevCapsW_type auxGetDevCapsW_orig;
typedef MMRESULT (WINAPI *auxSetVolume_type)( UINT uDeviceID, DWORD dwVolume);
extern auxSetVolume_type auxSetVolume_orig;
typedef MMRESULT (WINAPI *auxGetVolume_type)( UINT uDeviceID, LPDWORD pdwVolume);
extern auxGetVolume_type auxGetVolume_orig;
typedef MMRESULT (WINAPI *auxOutMessage_type)( UINT uDeviceID, UINT uMsg, DWORD_PTR dw1, DWORD_PTR dw2);
extern auxOutMessage_type auxOutMessage_orig;
typedef UINT (WINAPI *mixerGetNumDevs_type)(void);
extern mixerGetNumDevs_type mixerGetNumDevs_orig;
typedef MMRESULT (WINAPI *mixerGetDevCapsA_type)( UINT_PTR uMxId, LPMIXERCAPSA pmxcaps, UINT cbmxcaps);
extern mixerGetDevCapsA_type mixerGetDevCapsA_orig;
typedef MMRESULT (WINAPI *mixerGetDevCapsW_type)( UINT_PTR uMxId, LPMIXERCAPSW pmxcaps, UINT cbmxcaps);
extern mixerGetDevCapsW_type mixerGetDevCapsW_orig;
typedef MMRESULT (WINAPI *mixerOpen_type)( LPHMIXER phmx, UINT uMxId, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen);
extern mixerOpen_type mixerOpen_orig;
typedef MMRESULT (WINAPI *mixerClose_type)( HMIXER hmx);
extern mixerClose_type mixerClose_orig;
typedef DWORD (WINAPI *mixerMessage_type)( HMIXER hmx, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
extern mixerMessage_type mixerMessage_orig;
typedef MMRESULT (WINAPI *mixerGetLineInfoA_type)( HMIXEROBJ hmxobj, LPMIXERLINEA pmxl, DWORD fdwInfo);
extern mixerGetLineInfoA_type mixerGetLineInfoA_orig;
typedef MMRESULT (WINAPI *mixerGetLineInfoW_type)( HMIXEROBJ hmxobj, LPMIXERLINEW pmxl, DWORD fdwInfo);
extern mixerGetLineInfoW_type mixerGetLineInfoW_orig;
typedef MMRESULT (WINAPI *mixerGetID_type)( HMIXEROBJ hmxobj, UINT FAR *puMxId, DWORD fdwId);
extern mixerGetID_type mixerGetID_orig;
typedef MMRESULT (WINAPI *mixerGetLineControlsA_type)( HMIXEROBJ hmxobj, LPMIXERLINECONTROLSA pmxlc, DWORD fdwControls);
extern mixerGetLineControlsA_type mixerGetLineControlsA_orig;
typedef MMRESULT (WINAPI *mixerGetLineControlsW_type)( HMIXEROBJ hmxobj, LPMIXERLINECONTROLSW pmxlc, DWORD fdwControls);
extern mixerGetLineControlsW_type mixerGetLineControlsW_orig;
typedef MMRESULT (WINAPI *mixerGetControlDetailsA_type)( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
extern mixerGetControlDetailsA_type mixerGetControlDetailsA_orig;
typedef MMRESULT (WINAPI *mixerGetControlDetailsW_type)( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
extern mixerGetControlDetailsW_type mixerGetControlDetailsW_orig;
typedef MMRESULT (WINAPI *mixerSetControlDetails_type)( HMIXEROBJ hmxobj, LPMIXERCONTROLDETAILS pmxcd, DWORD fdwDetails);
extern mixerSetControlDetails_type mixerSetControlDetails_orig;
typedef DWORD (WINAPI *mmGetCurrentTask_type)(void);
extern mmGetCurrentTask_type mmGetCurrentTask_orig;
typedef void (WINAPI *mmTaskBlock_type)(DWORD);
extern mmTaskBlock_type mmTaskBlock_orig;
typedef UINT (WINAPI *mmTaskCreate_type)(LPTASKCALLBACK, HANDLE*, DWORD_PTR);
extern mmTaskCreate_type mmTaskCreate_orig;
typedef BOOL (WINAPI *mmTaskSignal_type)(DWORD);
extern mmTaskSignal_type mmTaskSignal_orig;
typedef VOID (WINAPI *mmTaskYield_type)(VOID);
extern mmTaskYield_type mmTaskYield_orig;
typedef MMRESULT (WINAPI *timeGetSystemTime_type)( LPMMTIME pmmt, UINT cbmmt);
extern timeGetSystemTime_type timeGetSystemTime_orig;
typedef DWORD (WINAPI *timeGetTime_type)(void);
extern timeGetTime_type timeGetTime_orig;
typedef MMRESULT (WINAPI *timeSetEvent_type)( UINT uDelay, UINT uResolution, LPTIMECALLBACK fptc, DWORD_PTR dwUser, UINT fuEvent);
extern timeSetEvent_type timeSetEvent_orig;
typedef MMRESULT (WINAPI *timeKillEvent_type)( UINT uTimerID);
extern timeKillEvent_type timeKillEvent_orig;
typedef MMRESULT (WINAPI *timeGetDevCaps_type)( LPTIMECAPS ptc, UINT cbtc);
extern timeGetDevCaps_type timeGetDevCaps_orig;
typedef MMRESULT (WINAPI *timeBeginPeriod_type)( UINT uPeriod);
extern timeBeginPeriod_type timeBeginPeriod_orig;
typedef MMRESULT (WINAPI *timeEndPeriod_type)( UINT uPeriod);
extern timeEndPeriod_type timeEndPeriod_orig;
typedef UINT (WINAPI *joyGetNumDevs_type)(void);
extern joyGetNumDevs_type joyGetNumDevs_orig;
typedef MMRESULT (WINAPI *joyConfigChanged_type)(DWORD dwFlags);
extern joyConfigChanged_type joyConfigChanged_orig;
typedef MMRESULT (WINAPI *joyGetDevCapsA_type)( UINT_PTR uJoyID, LPJOYCAPSA pjc, UINT cbjc);
extern joyGetDevCapsA_type joyGetDevCapsA_orig;
typedef MMRESULT (WINAPI *joyGetDevCapsW_type)( UINT_PTR uJoyID, LPJOYCAPSW pjc, UINT cbjc);
extern joyGetDevCapsW_type joyGetDevCapsW_orig;
typedef MMRESULT (WINAPI *joyGetPos_type)( UINT uJoyID, LPJOYINFO pji);
extern joyGetPos_type joyGetPos_orig;
typedef MMRESULT (WINAPI *joyGetPosEx_type)( UINT uJoyID, LPJOYINFOEX pji);
extern joyGetPosEx_type joyGetPosEx_orig;
typedef MMRESULT (WINAPI *joyGetThreshold_type)( UINT uJoyID, LPUINT puThreshold);
extern joyGetThreshold_type joyGetThreshold_orig;
typedef MMRESULT (WINAPI *joyReleaseCapture_type)( UINT uJoyID);
extern joyReleaseCapture_type joyReleaseCapture_orig;
typedef MMRESULT (WINAPI *joySetCapture_type)( HWND hwnd, UINT uJoyID, UINT uPeriod, BOOL fChanged);
extern joySetCapture_type joySetCapture_orig;
typedef MMRESULT (WINAPI *joySetThreshold_type)( UINT uJoyID, UINT uThreshold);
extern joySetThreshold_type joySetThreshold_orig;
typedef BOOL (WINAPI *mciDriverNotify_type)(HANDLE hwndCallback, UINT uDeviceID, UINT uStatus);
extern mciDriverNotify_type mciDriverNotify_orig;
typedef UINT (WINAPI *mciDriverYield_type)(UINT uDeviceID);
extern mciDriverYield_type mciDriverYield_orig;
typedef FOURCC (WINAPI *mmioStringToFOURCCA_type)( LPCSTR sz, UINT uFlags);
extern mmioStringToFOURCCA_type mmioStringToFOURCCA_orig;
typedef FOURCC (WINAPI *mmioStringToFOURCCW_type)( LPCWSTR sz, UINT uFlags);
extern mmioStringToFOURCCW_type mmioStringToFOURCCW_orig;
typedef LPMMIOPROC (WINAPI *mmioInstallIOProcA_type)( FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags);
extern mmioInstallIOProcA_type mmioInstallIOProcA_orig;
typedef LPMMIOPROC (WINAPI *mmioInstallIOProcW_type)( FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags);
extern mmioInstallIOProcW_type mmioInstallIOProcW_orig;
typedef HMMIO (WINAPI *mmioOpenA_type)( LPSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen);
extern mmioOpenA_type mmioOpenA_orig;
typedef HMMIO (WINAPI *mmioOpenW_type)( LPWSTR pszFileName, LPMMIOINFO pmmioinfo, DWORD fdwOpen);
extern mmioOpenW_type mmioOpenW_orig;
typedef MMRESULT (WINAPI *mmioRenameA_type)( LPCSTR pszFileName, LPCSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename);
extern mmioRenameA_type mmioRenameA_orig;
typedef MMRESULT (WINAPI *mmioRenameW_type)( LPCWSTR pszFileName, LPCWSTR pszNewFileName, LPCMMIOINFO pmmioinfo, DWORD fdwRename);
extern mmioRenameW_type mmioRenameW_orig;
typedef MMRESULT (WINAPI *mmioClose_type)( HMMIO hmmio, UINT fuClose);
extern mmioClose_type mmioClose_orig;
typedef LONG (WINAPI *mmioRead_type)( HMMIO hmmio, HPSTR pch, LONG cch);
extern mmioRead_type mmioRead_orig;
typedef LONG (WINAPI *mmioWrite_type)( HMMIO hmmio, const char _huge* pch, LONG cch);
extern mmioWrite_type mmioWrite_orig;
typedef LONG (WINAPI *mmioSeek_type)( HMMIO hmmio, LONG lOffset, int iOrigin);
extern mmioSeek_type mmioSeek_orig;
typedef MMRESULT (WINAPI *mmioGetInfo_type)( HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuInfo);
extern mmioGetInfo_type mmioGetInfo_orig;
typedef MMRESULT (WINAPI *mmioSetInfo_type)( HMMIO hmmio, LPCMMIOINFO pmmioinfo, UINT fuInfo);
extern mmioSetInfo_type mmioSetInfo_orig;
typedef MMRESULT (WINAPI *mmioSetBuffer_type)( HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer, UINT fuBuffer);
extern mmioSetBuffer_type mmioSetBuffer_orig;
typedef MMRESULT (WINAPI *mmioFlush_type)( HMMIO hmmio, UINT fuFlush);
extern mmioFlush_type mmioFlush_orig;
typedef MMRESULT (WINAPI *mmioAdvance_type)( HMMIO hmmio, LPMMIOINFO pmmioinfo, UINT fuAdvance);
extern mmioAdvance_type mmioAdvance_orig;
typedef LRESULT (WINAPI *mmioSendMessage_type)( HMMIO hmmio, UINT uMsg, LPARAM lParam1, LPARAM lParam2);
extern mmioSendMessage_type mmioSendMessage_orig;
typedef MMRESULT (WINAPI *mmioDescend_type)( HMMIO hmmio, LPMMCKINFO pmmcki, const MMCKINFO FAR* pmmckiParent, UINT fuDescend);
extern mmioDescend_type mmioDescend_orig;
typedef MMRESULT (WINAPI *mmioAscend_type)( HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuAscend);
extern mmioAscend_type mmioAscend_orig;
typedef MMRESULT (WINAPI *mmioCreateChunk_type)(HMMIO hmmio, LPMMCKINFO pmmcki, UINT fuCreate);
extern mmioCreateChunk_type mmioCreateChunk_orig;
typedef MCIERROR (WINAPI *mciSendCommandA_type)( MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
extern mciSendCommandA_type mciSendCommandA_orig;
typedef MCIERROR (WINAPI *mciSendCommandW_type)( MCIDEVICEID mciId, UINT uMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
extern mciSendCommandW_type mciSendCommandW_orig;
typedef MCIERROR (WINAPI *mciSendStringA_type)( LPCSTR lpstrCommand, LPSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback);
extern mciSendStringA_type mciSendStringA_orig;
typedef MCIERROR (WINAPI *mciSendStringW_type)( LPCWSTR lpstrCommand, LPWSTR lpstrReturnString, UINT uReturnLength, HWND hwndCallback);
extern mciSendStringW_type mciSendStringW_orig;
typedef MCIDEVICEID (WINAPI *mciGetDeviceIDA_type)( LPCSTR pszDevice);
extern mciGetDeviceIDA_type mciGetDeviceIDA_orig;
typedef MCIDEVICEID (WINAPI *mciGetDeviceIDW_type)( LPCWSTR pszDevice);
extern mciGetDeviceIDW_type mciGetDeviceIDW_orig;
typedef MCIDEVICEID (WINAPI *mciGetDeviceIDFromElementIDA_type)( DWORD dwElementID, LPCSTR lpstrType );
extern mciGetDeviceIDFromElementIDA_type mciGetDeviceIDFromElementIDA_orig;
typedef MCIDEVICEID (WINAPI *mciGetDeviceIDFromElementIDW_type)( DWORD dwElementID, LPCWSTR lpstrType );
extern mciGetDeviceIDFromElementIDW_type mciGetDeviceIDFromElementIDW_orig;
typedef DWORD_PTR (WINAPI *mciGetDriverData_type)(UINT uDeviceID);
extern mciGetDriverData_type mciGetDriverData_orig;
typedef BOOL (WINAPI *mciGetErrorStringA_type)( MCIERROR mcierr, LPSTR pszText, UINT cchText);
extern mciGetErrorStringA_type mciGetErrorStringA_orig;
typedef BOOL (WINAPI *mciGetErrorStringW_type)( MCIERROR mcierr, LPWSTR pszText, UINT cchText);
extern mciGetErrorStringW_type mciGetErrorStringW_orig;
typedef BOOL (WINAPI *mciSetDriverData_type)(UINT uDeviceID, DWORD_PTR dwData);
extern mciSetDriverData_type mciSetDriverData_orig;
typedef BOOL (WINAPI *mciSetYieldProc_type)( MCIDEVICEID mciId, YIELDPROC fpYieldProc, DWORD dwYieldData);
extern mciSetYieldProc_type mciSetYieldProc_orig;
typedef BOOL (WINAPI *mciFreeCommandResource_type)(UINT uTable);
extern mciFreeCommandResource_type mciFreeCommandResource_orig;
typedef HTASK (WINAPI *mciGetCreatorTask_type)( MCIDEVICEID mciId);
extern mciGetCreatorTask_type mciGetCreatorTask_orig;
typedef YIELDPROC (WINAPI *mciGetYieldProc_type)( MCIDEVICEID mciId, LPDWORD pdwYieldData);
extern mciGetYieldProc_type mciGetYieldProc_orig;
typedef UINT (WINAPI *mciLoadCommandResource_type)(HANDLE hInstance, LPCWSTR lpResName, UINT wType);
extern mciLoadCommandResource_type mciLoadCommandResource_orig;
typedef BOOL (WINAPI *mciExecute_type)(LPCSTR pszCommand);
extern mciExecute_type mciExecute_orig;

View File

@@ -1,218 +0,0 @@
;
; winmm.def
;
; Exports for WINMM DLL
;
LIBRARY WINMM
EXPORTS
CloseDriver
DefDriverProc
DriverCallback
DrvGetModuleHandle
GetDriverModuleHandle
;MigrateAllDrivers
;MigrateSoundEvents
;NotifyCallbackData
OpenDriver
;PlaySound
PlaySoundA
PlaySoundW
SendDriverMessage
;WOW32DriverCallback
;WOW32ResolveMultiMediaHandle
;WOWAppExit
;WinmmLogoff
;WinmmLogon
;aux32Message
auxGetDevCapsA
auxGetDevCapsW
auxGetNumDevs
auxGetVolume
auxOutMessage
auxSetVolume
;gfxAddGfx
;gfxBatchChange
;gfxCreateGfxFactoriesList
;gfxCreateZoneFactoriesList
;gfxDestroyDeviceInterfaceList
;gfxEnumerateGfxs
;gfxLogoff
;gfxLogon
;gfxModifyGfx
;gfxOpenGfx
;gfxRemoveGfx
;joy32Message
joyConfigChanged
joyGetDevCapsA
joyGetDevCapsW
joyGetNumDevs
joyGetPos
joyGetPosEx
joyGetThreshold
joyReleaseCapture
joySetCapture
joySetThreshold
;mci32Message
mciDriverNotify
mciDriverYield
mciExecute
mciFreeCommandResource
mciGetCreatorTask
mciGetDeviceIDA
mciGetDeviceIDFromElementIDA
mciGetDeviceIDFromElementIDW
mciGetDeviceIDW
mciGetDriverData
mciGetErrorStringA
mciGetErrorStringW
mciGetYieldProc
mciLoadCommandResource
mciSendCommandA
mciSendCommandW
mciSendStringA
mciSendStringW
mciSetDriverData
mciSetYieldProc
;mid32Message
midiConnect
midiDisconnect
midiInAddBuffer
midiInClose
midiInGetDevCapsA
midiInGetDevCapsW
midiInGetErrorTextA
midiInGetErrorTextW
midiInGetID
midiInGetNumDevs
midiInMessage
midiInOpen
midiInPrepareHeader
midiInReset
midiInStart
midiInStop
midiInUnprepareHeader
midiOutCacheDrumPatches
midiOutCachePatches
midiOutClose
midiOutGetDevCapsA
midiOutGetDevCapsW
midiOutGetErrorTextA
midiOutGetErrorTextW
midiOutGetID
midiOutGetNumDevs
midiOutGetVolume
midiOutLongMsg
midiOutMessage
midiOutOpen
midiOutPrepareHeader
midiOutReset
midiOutSetVolume
midiOutShortMsg
midiOutUnprepareHeader
midiStreamClose
midiStreamOpen
midiStreamOut
midiStreamPause
midiStreamPosition
midiStreamProperty
midiStreamRestart
midiStreamStop
mixerClose
mixerGetControlDetailsA
mixerGetControlDetailsW
mixerGetDevCapsA
mixerGetDevCapsW
mixerGetID
mixerGetLineControlsA
mixerGetLineControlsW
mixerGetLineInfoA
mixerGetLineInfoW
mixerGetNumDevs
mixerMessage
mixerOpen
mixerSetControlDetails
;mmDrvInstall
mmGetCurrentTask
mmTaskBlock
mmTaskCreate
mmTaskSignal
mmTaskYield
mmioAdvance
mmioAscend
mmioClose
mmioCreateChunk
mmioDescend
mmioFlush
mmioGetInfo
mmioInstallIOProcA
mmioInstallIOProcW
mmioOpenA
mmioOpenW
mmioRead
mmioRenameA
mmioRenameW
mmioSeek
mmioSendMessage
mmioSetBuffer
mmioSetInfo
mmioStringToFOURCCA
mmioStringToFOURCCW
mmioWrite
mmsystemGetVersion
;mod32Message
;mxd32Message
sndPlaySoundA
sndPlaySoundW
;tid32Message
timeBeginPeriod
timeEndPeriod
timeGetDevCaps
timeGetSystemTime
timeGetTime
timeKillEvent
timeSetEvent
waveInAddBuffer
waveInClose
waveInGetDevCapsA
waveInGetDevCapsW
waveInGetErrorTextA
waveInGetErrorTextW
waveInGetID
waveInGetNumDevs
waveInGetPosition
waveInMessage
waveInOpen
waveInPrepareHeader
waveInReset
waveInStart
waveInStop
waveInUnprepareHeader
waveOutBreakLoop
waveOutClose
waveOutGetDevCapsA
waveOutGetDevCapsW
waveOutGetErrorTextA
waveOutGetErrorTextW
waveOutGetID
waveOutGetNumDevs
waveOutGetPitch
waveOutGetPlaybackRate
waveOutGetPosition
waveOutGetVolume
waveOutMessage
waveOutOpen
waveOutPause
waveOutPrepareHeader
waveOutReset
waveOutRestart
waveOutSetPitch
waveOutSetPlaybackRate
waveOutSetVolume
waveOutUnprepareHeader
waveOutWrite
;wid32Message
;winmmSetDebugLevel
;wod32Message
setPluginVolume
setPluginMute

View File

@@ -1,200 +0,0 @@
/**
* @file winmmshim.cpp
* @brief controls volume level of process by intercepting calls to winmm.dll
*
* $LicenseInfo:firstyear=2010&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
#include "forwarding_api.h"
#include <xmmintrin.h>
#include <map>
#include <math.h>
using std::wstring;
static float sVolumeLevel = 1.f;
static bool sMute = false;
static CRITICAL_SECTION sCriticalSection;
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
InitializeCriticalSection(&sCriticalSection);
return TRUE;
}
void ll_winmm_shim_initialize(){
static bool initialized = false;
// do this only once
EnterCriticalSection(&sCriticalSection);
if (!initialized)
{ // bind to original winmm.dll
TCHAR system_path[MAX_PATH];
TCHAR dll_path[MAX_PATH];
::GetSystemDirectory(system_path, MAX_PATH);
// grab winmm.dll from system path, where it should live
wsprintf(dll_path, "%s\\winmm.dll", system_path);
HMODULE winmm_handle = ::LoadLibrary(dll_path);
if (winmm_handle != NULL)
{ // we have a dll, let's get out pointers!
initialized = true;
init_function_pointers(winmm_handle);
::OutputDebugStringA("WINMM_SHIM.DLL: real winmm.dll initialized successfully\n");
}
else
{
// failed to initialize real winmm.dll
::OutputDebugStringA("WINMM_SHIM.DLL: Failed to initialize real winmm.dll\n");
}
}
LeaveCriticalSection(&sCriticalSection);
}
extern "C"
{
// tracks the requested format for a given waveout buffer
struct WaveOutFormat
{
WaveOutFormat(int bits_per_sample)
: mBitsPerSample(bits_per_sample)
{}
int mBitsPerSample;
};
typedef std::map<HWAVEOUT, WaveOutFormat*> wave_out_map_t;
static wave_out_map_t sWaveOuts;
MMRESULT WINAPI waveOutOpen( LPHWAVEOUT phwo, UINT uDeviceID, LPCWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen)
{
ll_winmm_shim_initialize();
if (pwfx->wFormatTag != WAVE_FORMAT_PCM
|| (pwfx->wBitsPerSample != 8 && pwfx->wBitsPerSample != 16))
{ // uncompressed 8 and 16 bit sound are the only types we support
return WAVERR_BADFORMAT;
}
MMRESULT result = waveOutOpen_orig(phwo, uDeviceID, pwfx, dwCallback, dwInstance, fdwOpen);
if (result == MMSYSERR_NOERROR
&& ((fdwOpen & WAVE_FORMAT_QUERY) == 0)) // not just querying for format support
{ // remember the requested bits per sample, and associate with the given handle
WaveOutFormat* wave_outp = new WaveOutFormat(pwfx->wBitsPerSample);
sWaveOuts.insert(std::make_pair(*phwo, wave_outp));
}
return result;
}
MMRESULT WINAPI waveOutClose( HWAVEOUT hwo)
{
ll_winmm_shim_initialize();
wave_out_map_t::iterator found_it = sWaveOuts.find(hwo);
if (found_it != sWaveOuts.end())
{ // forget what we know about this handle
delete found_it->second;
sWaveOuts.erase(found_it);
}
return waveOutClose_orig( hwo);
}
MMRESULT WINAPI waveOutWrite( HWAVEOUT hwo, LPWAVEHDR pwh, UINT cbwh)
{
ll_winmm_shim_initialize();
MMRESULT result = MMSYSERR_NOERROR;
if (sMute)
{ // zero out the audio buffer when muted
memset(pwh->lpData, 0, pwh->dwBufferLength);
}
else if (sVolumeLevel != 1.f)
{ // need to apply volume level
wave_out_map_t::iterator found_it = sWaveOuts.find(hwo);
if (found_it != sWaveOuts.end())
{
WaveOutFormat* formatp = found_it->second;
switch (formatp->mBitsPerSample){
case 8:
{
char volume = (char)(sVolumeLevel * 127.f);
for (unsigned int i = 0; i < pwh->dwBufferLength; i++)
{
// unsigned multiply doesn't use most significant bit, so shift by 7 bits
// to get resulting value back into 8 bits
pwh->lpData[i] = (pwh->lpData[i] * volume) >> 7;
}
break;
}
case 16:
{
short volume_16 = (short)(sVolumeLevel * 32767.f);
// copy volume level 4 times into 64 bit MMX register
__m64 volume_64 = _mm_set_pi16(volume_16, volume_16, volume_16, volume_16);
__m64* sample_64;
__m64* last_sample_64 = (__m64*)(pwh->lpData + pwh->dwBufferLength - sizeof(__m64));
// for everything that can be addressed in 64 bit multiples...
for (sample_64 = (__m64*)pwh->lpData;
sample_64 <= last_sample_64;
++sample_64)
{
//...multiply the samples by the volume...
__m64 scaled_sample = _mm_mulhi_pi16(*sample_64, volume_64);
// ...and shift left 1 bit since an unsigned multiple loses the most significant bit
// 0x7FFF * 0x7FFF = 0x3fff0001
// 0x3fff0001 << 1 = 0x7ffe0002
// notice that the LSB is always 0...should consider dithering
*sample_64 = _mm_slli_pi16(scaled_sample, 1);
}
// the captain has turned off the MMX sign, you are now free to use floating point registers
_mm_empty();
// finish remaining samples that didn't fit into 64 bit register
for (short* sample_16 = (short*)sample_64;
sample_16 < (short*)(pwh->lpData + pwh->dwBufferLength);
++sample_16)
{
*sample_16 = (*sample_16 * volume_16) >> 15;
}
break;
}
default:
// don't do anything
break;
}
}
}
return waveOutWrite_orig( hwo, pwh, cbwh);
}
void WINAPI setPluginVolume(float volume)
{
sVolumeLevel = volume;
}
void WINAPI setPluginMute(bool mute)
{
sMute = mute;
}
}

View File

@@ -1,54 +0,0 @@
#!/usr/bin/env python
#
# Print the build information embedded in a header file.
#
# Expects to be invoked from the command line with a file name and a
# list of directories to search. The file name will be one of the
# following:
#
# llversionserver.h
# llversionviewer.h
#
# The directory list that follows will include indra/llcommon, where
# these files live.
import errno, os, re
def get_version(filename):
fp = open(filename)
data = fp.read()
fp.close()
vals = {}
m = re.search('const S32 LL_VERSION_MAJOR = (\d+);', data)
vals['major'] = m.group(1)
m = re.search('const S32 LL_VERSION_MINOR = (\d+);', data)
vals['minor'] = m.group(1)
m = re.search('const S32 LL_VERSION_PATCH = (\d+);', data)
vals['patch'] = m.group(1)
m = re.search('const S32 LL_VERSION_BUILD = (\d+);', data)
vals['build'] = m.group(1)
return "%(major)s.%(minor)s.%(patch)s.%(build)s" % vals
if __name__ == '__main__':
import sys
try:
for path in sys.argv[2:]:
name = os.path.join(path, sys.argv[1])
try:
print get_version(name)
break
except OSError, err:
if err.errno != errno.ENOENT:
raise
else:
print >> sys.stderr, 'File not found:', sys.argv[1]
sys.exit(1)
except AttributeError:
print >> sys.stderr, 'Error: malformatted file: ', name
sys.exit(1)
except IndexError:
print >> sys.stderr, ('Usage: %s llversion[...].h [directories]' %
sys.argv[0])

View File

@@ -1,306 +0,0 @@
#!/usr/bin/python
"""\
@file update_version_files.py
@brief Update all of the various files in the repository to a new
version number, instead of having to figure it out by hand
$LicenseInfo:firstyear=2006&license=viewergpl$
Copyright (c) 2006-2009, Linden Research, Inc.
Second Life Viewer Source Code
The source code in this file ("Source Code") is provided by Linden Lab
to you under the terms of the GNU General Public License, version 2.0
("GPL"), unless you have obtained a separate licensing agreement
("Other License"), formally executed by you and Linden Lab. Terms of
the GPL can be found in doc/GPL-license.txt in this distribution, or
online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
There are special exceptions to the terms and conditions of the GPL as
it is applied to this Source Code. View the full text of the exception
in the file doc/FLOSS-exception.txt in this software distribution, or
online at
http://secondlifegrid.net/programs/open_source/licensing/flossexception
By copying, modifying or distributing this software, you acknowledge
that you have read and understood your obligations described above,
and agree to abide by those obligations.
ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
COMPLETENESS OR PERFORMANCE.
$/LicenseInfo$
"""
import sys
import os.path
def add_indra_lib_path():
root = os.path.realpath(__file__)
# always insert the directory of the script in the search path
dir = os.path.dirname(root)
if dir not in sys.path:
sys.path.insert(0, dir)
# Now go look for indra/lib/python in the parent dies
while root != os.path.sep:
root = os.path.dirname(root)
dir = os.path.join(root, 'indra', 'lib', 'python')
if os.path.isdir(dir):
if dir not in sys.path:
sys.path.insert(0, dir)
return root
else:
print >>sys.stderr, "This script is not inside a valid installation."
sys.exit(1)
add_indra_lib_path()
import getopt, os, re, commands
from indra.util import llversion
svn = os.path.expandvars("${SVN}")
if not svn or svn == "${SVN}": svn = "svn"
def usage():
print "Usage:"
print sys.argv[0] + """ [options]
Options:
--version
Specify the version string to replace current version.
--skip-on-branch
Specify a regular expression against which the current branch
is matched. If it matches, then leave version strings alone.
Use this to avoid changing version strings on release candidate
builds.
--server
Update llversionserver.h only with new version
--viewer
Update llversionviewer.h only with new version
--channel
Specify the viewer channel string to replace current channel.
--server_channel
Specify the server channel string to replace current channel.
--src-root
Location of source tree
--verbose
--help
Print this message and exit.
Common Uses:
# Update server and viewer build numbers to the current SVN revision:
update_version_files.py
# Update build numbers unless we are on a release branch:
update_version_files.py --skip-on-branch='^Branch_'
# Update server and viewer version numbers explicitly:
update_version_files.py --version=1.18.1.6
# Update just the viewer version number explicitly:
update_version_files.py --viewer --version=1.18.1.6
# Update just the server build number to the current SVN revision:
update_version_files.py --server
# Update the viewer channel
update_version_files.py --channel="First Look Puppeteering"
# Update the server channel
update_version_files.py --server_channel="Het Grid"
"""
def _getstatusoutput(cmd):
"""Return Win32 (status, output) of executing cmd
in a shell."""
if os.path.sep != "/":
# stupid #%#$$ windows
cmd = 'cmd.exe /c "'+cmd+'"'
pipe = os.popen(cmd, 'r')
text = pipe.read()
sts = pipe.close()
if sts is None: sts = 0
if text[-1:] == '\n': text = text[:-1]
return sts, text
re_map = {}
#re_map['filename'] = (('pattern', 'replacement'),
# ('pattern', 'replacement')
re_map['indra/llcommon/llversionviewer.h'] = \
(('const S32 LL_VERSION_MAJOR = (\d+);',
'const S32 LL_VERSION_MAJOR = %(VER_MAJOR)s;'),
('const S32 LL_VERSION_MINOR = (\d+);',
'const S32 LL_VERSION_MINOR = %(VER_MINOR)s;'),
('const S32 LL_VERSION_PATCH = (\d+);',
'const S32 LL_VERSION_PATCH = %(VER_PATCH)s;'),
('const S32 LL_VERSION_BUILD = (\d+);',
'const S32 LL_VERSION_BUILD = %(VER_BUILD)s;'),
('const char \* const LL_CHANNEL = "(.+)";',
'const char * const LL_CHANNEL = "%(VIEWER_CHANNEL)s";'))
re_map['indra/newview/res/viewerRes.rc'] = \
(('FILEVERSION [0-9,]+',
'FILEVERSION %(VER_MAJOR)s,%(VER_MINOR)s,%(VER_PATCH)s,%(VER_BUILD)s'),
('PRODUCTVERSION [0-9,]+',
'PRODUCTVERSION %(VER_MAJOR)s,%(VER_MINOR)s,%(VER_PATCH)s,%(VER_BUILD)s'),
('VALUE "FileVersion", "[0-9.]+"',
'VALUE "FileVersion", "%(VER_MAJOR)s.%(VER_MINOR)s.%(VER_PATCH)s.%(VER_BUILD)s"'),
('VALUE "ProductVersion", "[0-9.]+"',
'VALUE "ProductVersion", "%(VER_MAJOR)s.%(VER_MINOR)s.%(VER_PATCH)s.%(VER_BUILD)s"'))
# Trailing ',' in top level tuple is special form to avoid parsing issues with one element tuple
re_map['indra/newview/Info-SecondLife.plist'] = \
(('<key>CFBundleVersion</key>\n\t<string>[0-9.]+</string>',
'<key>CFBundleVersion</key>\n\t<string>%(VER_MAJOR)s.%(VER_MINOR)s.%(VER_PATCH)s.%(VER_BUILD)s</string>'),)
re_map['indra/newview/Info-Snowglobe.plist'] = \
(('<key>CFBundleVersion</key>\n\t<string>[0-9.]+</string>',
'<key>CFBundleVersion</key>\n\t<string>%(VER_MAJOR)s.%(VER_MINOR)s.%(VER_PATCH)s.%(VER_BUILD)s</string>'),)
# This will probably only work as long as InfoPlist.strings is NOT UTF16, which is should be...
re_map['indra/newview/English.lproj/InfoPlist.strings'] = \
(('CFBundleShortVersionString = "Second Life version [0-9.]+";',
'CFBundleShortVersionString = "Second Life version %(VER_MAJOR)s.%(VER_MINOR)s.%(VER_PATCH)s.%(VER_BUILD)s";'),
('CFBundleGetInfoString = "Second Life version [0-9.]+',
'CFBundleGetInfoString = "Second Life version %(VER_MAJOR)s.%(VER_MINOR)s.%(VER_PATCH)s.%(VER_BUILD)s'))
version_re = re.compile('(\d+).(\d+).(\d+).(\d+)')
svn_branch_re = re.compile('^URL:\s+\S+/([^/\s]+)$', re.MULTILINE)
svn_revision_re = re.compile('^Last Changed Rev: (\d+)$', re.MULTILINE)
def main():
script_path = os.path.dirname(__file__)
src_root = script_path + "/../"
verbose = False
opts, args = getopt.getopt(sys.argv[1:],
"",
['version=',
'channel=',
'server_channel=',
'skip-on-branch=',
'src-root=',
'verbose',
'viewer',
'help'])
update_viewer = False
new_version = None
new_viewer_channel = None
skip_on_branch_re = None
for o,a in opts:
if o in ('--version'):
new_version = a
if o in ('--skip-on-branch'):
skip_on_branch_re = re.compile(a)
if o in ('--channel'):
new_viewer_channel = a
if o in ('--src-root'):
src_root = a
if o in ('--verbose'):
verbose = True
if o in ('--server'):
update_server = True
if o in ('--viewer'):
update_viewer = True
if o in ('--help'):
usage()
return 0
if not(update_viewer):
update_viewer = True
# Get current channel/version from llversion*.h
try:
viewer_channel = llversion.get_viewer_channel()
viewer_version = llversion.get_viewer_version()
except IOError:
print "Viewer version file not present, skipping..."
viewer_channel = None
viewer_version = None
update_viewer = False
if verbose:
print "Source Path:", src_root
if viewer_channel != None:
print "Current viewer channel/version: '%(viewer_channel)s' / '%(viewer_version)s'" % locals()
print
# Determine new channel(s)
if new_viewer_channel != None and len(new_viewer_channel) > 0:
viewer_channel = new_viewer_channel
# Determine new version(s)
if new_version:
m = version_re.match(new_version)
if not m:
print "Invalid version string specified!"
return -1
if update_viewer:
viewer_version = new_version
else:
# Assume we're updating just the build number
cl = '%s info "%s"' % (svn, src_root)
status, output = _getstatusoutput(cl)
if verbose:
print
print "svn info output:"
print "----------------"
print output
branch_match = svn_branch_re.search(output)
revision_match = svn_revision_re.search(output)
if not branch_match or not revision_match:
print "Failed to execute svn info, output follows:"
print output
return -1
branch = branch_match.group(1)
revision = revision_match.group(1)
if skip_on_branch_re and skip_on_branch_re.match(branch):
print "Release Candidate Build, leaving version files untouched."
return 0
if update_viewer:
m = version_re.match(viewer_version)
viewer_version = m.group(1)+"."+m.group(2)+"."+m.group(3)+"."+revision
if verbose:
if update_viewer:
print "Setting viewer channel/version: '%(viewer_channel)s' / '%(viewer_version)s'" % locals()
print
# split out version parts
if viewer_version != None:
m = version_re.match(viewer_version)
VER_MAJOR = m.group(1)
VER_MINOR = m.group(2)
VER_PATCH = m.group(3)
VER_BUILD = m.group(4)
# For readability and symmetry with version strings:
VIEWER_CHANNEL = viewer_channel
# Iterate through all of the files in the map, and apply the
# substitution filters
for filename in re_map.keys():
try:
# Read the entire file into a string
full_fn = src_root + '/' + filename
file = open(full_fn,"r")
file_str = file.read()
file.close()
if verbose:
print "Processing file:",filename
for rule in re_map[filename]:
repl = rule[1] % locals()
file_str = re.sub(rule[0], repl, file_str)
file = open(full_fn,"w")
file.write(file_str)
file.close()
except IOError:
print "File %(filename)s not present, skipping..." % locals()
return 0
main()

View File

@@ -1,48 +0,0 @@
#!/bin/sh
echo 'Linden fix for Xcode 4.6 to have 10.6SDK so it can build older branches.'
echo 'Be sure to have the xcode_4.3_for_lion.dmg mounted! This script pulls from that volume!'
echo 'Creating temporary directory. . .'
mkdir temp
pushd temp
echo 'Copying 10.6SDK. . .'
cp -R /Volumes/Xcode/Xcode.app/Contents//Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk .
echo 'Linking darwin10 folders as darwin11. . .'
pushd MacOSX10.6.sdk/Developer/usr/llvm-gcc-4.2/lib/gcc/
ln -s i686-apple-darwin10 i686-apple-darwin11
popd
pushd MacOSX10.6.sdk/usr/lib/gcc/
ln -s i686-apple-darwin10 i686-apple-darwin11
popd
pushd MacOSX10.6.sdk/usr/lib/
ln -s i686-apple-darwin10 i686-apple-darwin11
popd
echo 'Changing ownership and moving SDK to machine. . . Password required for sudo commands.'
sudo chown -R root:wheel MacOSX10.6.sdk
sudo mv MacOSX10.6.sdk/ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
popd
rm -rf temp
echo 'Xcode fix complete.'