From: <sag...@us...> - 2011-08-24 15:33:39
|
Revision: 997 http://modplug.svn.sourceforge.net/modplug/?rev=997&view=rev Author: saga-games Date: 2011-08-24 15:33:32 +0000 (Wed, 24 Aug 2011) Log Message: ----------- [Mod] Crash dumps are now named after the thread the crash occured in (f.e. "crash-audio.dmp") [Ref] Moved unhandled exception filtering code to separate file. [Mod] OpenMPT: Version is now 1.20.00.12 Modified Paths: -------------- trunk/OpenMPT/mptrack/MainFrm.cpp trunk/OpenMPT/mptrack/Mptrack.cpp trunk/OpenMPT/mptrack/Mptrack.h trunk/OpenMPT/mptrack/mptrack.vcproj trunk/OpenMPT/mptrack/mptrack_08.vcproj trunk/OpenMPT/mptrack/mptrack_10.vcxproj trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters trunk/OpenMPT/mptrack/version.h Added Paths: ----------- trunk/OpenMPT/mptrack/ExceptionHandler.cpp trunk/OpenMPT/mptrack/ExceptionHandler.h Added: trunk/OpenMPT/mptrack/ExceptionHandler.cpp =================================================================== --- trunk/OpenMPT/mptrack/ExceptionHandler.cpp (rev 0) +++ trunk/OpenMPT/mptrack/ExceptionHandler.cpp 2011-08-24 15:33:32 UTC (rev 997) @@ -0,0 +1,145 @@ +/* + * + * ExceptionHandler.cpp + * -------------------- + * Purpose: Code for handling crashes in OpenMPT. + * Notes : (currently none) + * Authors: OpenMPT Devs + */ + + +#include "stdafx.h" +#include "Mainfrm.h" +#include "snddev.h" +#include "Moddoc.h" +#include "ExceptionHandler.h" +#include "dbghelp.h" + + +void ExceptionHandler::RegisterMainThread() +//----------------------------------------- +{ + ::SetUnhandledExceptionFilter(UnhandledExceptionFilterMain); +} + + +void ExceptionHandler::RegisterAudioThread() +//------------------------------------------ +{ + ::SetUnhandledExceptionFilter(UnhandledExceptionFilterAudio); +} + + +LONG ExceptionHandler::UnhandledExceptionFilterMain(_EXCEPTION_POINTERS *pExceptionInfo) +//-------------------------------------------------------------------------------------- +{ + return UnhandledExceptionFilter(pExceptionInfo, "main"); +} + + +LONG ExceptionHandler::UnhandledExceptionFilterAudio(_EXCEPTION_POINTERS *pExceptionInfo) +//--------------------------------------------------------------------------------------- +{ + return UnhandledExceptionFilter(pExceptionInfo, "audio"); +} + + +typedef BOOL (WINAPI *MINIDUMPWRITEDUMP)(HANDLE hProcess, DWORD dwPid, HANDLE hFile, MINIDUMP_TYPE DumpType, + CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, + CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, + CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam + ); + +// Try to close the audio device and rescue unsaved work if an unhandled exception occours... +LONG ExceptionHandler::UnhandledExceptionFilter(_EXCEPTION_POINTERS *pExceptionInfo, const CString threadName) +//------------------------------------------------------------------------------------------------------------ +{ + CMainFrame* pMainFrame = CMainFrame::GetMainFrame(); + const HWND window = (pMainFrame ? pMainFrame->m_hWnd : NULL); + + // Shut down audio device... + if(pMainFrame) + { + if(pMainFrame->gpSoundDevice) pMainFrame->gpSoundDevice->Reset(); + pMainFrame->audioCloseDevice(); + } + + const CString timestampDir = (CTime::GetCurrentTime()).Format("%Y-%m-%d %H.%M.%S\\"); + CString baseRescuePath; + { + // Create a crash directory + TCHAR tempPath[_MAX_PATH]; + GetTempPath(CountOf(tempPath), tempPath); + baseRescuePath.Format("%sOpenMPT Crash Files\\", tempPath); + if(!PathIsDirectory(baseRescuePath)) + { + CreateDirectory(baseRescuePath, nullptr); + } + baseRescuePath.Append(timestampDir); + if(!PathIsDirectory(baseRescuePath) && !CreateDirectory(baseRescuePath, nullptr)) + { + ::MessageBox(window, "A crash has been detected and OpenMPT will be closed.\nOpenMPT was unable to create a directory for saving debug information and modified files to.", "OpenMPT Crash", MB_ICONERROR); + } + } + + // Create minidump... + HMODULE hDll = ::LoadLibrary("DBGHELP.DLL"); + if (hDll) + { + MINIDUMPWRITEDUMP pDump = (MINIDUMPWRITEDUMP)::GetProcAddress(hDll, "MiniDumpWriteDump"); + if (pDump) + { + const CString filename = baseRescuePath + "crash-" + threadName + ".dmp"; + + HANDLE hFile = ::CreateFile(filename, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (hFile != INVALID_HANDLE_VALUE) + { + _MINIDUMP_EXCEPTION_INFORMATION ExInfo; + + ExInfo.ThreadId = ::GetCurrentThreadId(); + ExInfo.ExceptionPointers = pExceptionInfo; + ExInfo.ClientPointers = NULL; + + pDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &ExInfo, NULL, NULL); + ::CloseHandle(hFile); + } + } + ::FreeLibrary(hDll); + } + + // Rescue modified files... + CDocTemplate *pDocTmpl = theApp.GetModDocTemplate(); + if(pDocTmpl) + { + POSITION pos = pDocTmpl->GetFirstDocPosition(); + CDocument *pDoc; + + int numFiles = 0; + + while((pos != NULL) && ((pDoc = pDocTmpl->GetNextDoc(pos)) != NULL)) + { + CModDoc *pModDoc = (CModDoc *)pDoc; + if(pModDoc->IsModified() && pModDoc->GetSoundFile() != nullptr) + { + if(numFiles == 0) + { + // Show the rescue directory in Explorer... + CTrackApp::OpenDirectory(baseRescuePath); + } + CString filename; + filename.Format("%s%d_%s.%s", baseRescuePath, ++numFiles, pModDoc->GetTitle(), pModDoc->GetSoundFile()->GetModSpecifications().fileExtension); + pModDoc->OnSaveDocument(filename); + } + } + + if(numFiles > 0) + { + CString message; + message.Format("A crash has been detected in the %s thread and OpenMPT will be closed.\n%d modified file%s been rescued to\n\n%s\n\nNote: It cannot be guaranteed that rescued files are still intact.", threadName, numFiles, (numFiles == 1 ? " has" : "s have"), baseRescuePath); + ::MessageBox(window, message, "OpenMPT Crash", MB_ICONERROR); + } + } + + // Let Windows handle the exception... + return EXCEPTION_CONTINUE_SEARCH; +} Added: trunk/OpenMPT/mptrack/ExceptionHandler.h =================================================================== --- trunk/OpenMPT/mptrack/ExceptionHandler.h (rev 0) +++ trunk/OpenMPT/mptrack/ExceptionHandler.h 2011-08-24 15:33:32 UTC (rev 997) @@ -0,0 +1,32 @@ +/* + * + * ExceptionHandler.h + * ------------------ + * Purpose: Header file for crash handler. + * Notes : (currently none) + * Authors: OpenMPT Devs + */ + + +#pragma once +#ifndef EXCEPTIONHANDLER_H +#define EXCEPTIONHANDLER_H + +//==================== +class ExceptionHandler +//==================== +{ +public: + + static void RegisterMainThread(); + static void RegisterAudioThread(); + +protected: + + static LONG WINAPI UnhandledExceptionFilterMain(_EXCEPTION_POINTERS *pExceptionInfo); + static LONG WINAPI UnhandledExceptionFilterAudio(_EXCEPTION_POINTERS *pExceptionInfo); + static LONG UnhandledExceptionFilter(_EXCEPTION_POINTERS *pExceptionInfo, const CString threadName); + +}; + +#endif // EXCEPTIONHANDLER_H Modified: trunk/OpenMPT/mptrack/MainFrm.cpp =================================================================== --- trunk/OpenMPT/mptrack/MainFrm.cpp 2011-08-23 21:48:22 UTC (rev 996) +++ trunk/OpenMPT/mptrack/MainFrm.cpp 2011-08-24 15:33:32 UTC (rev 997) @@ -27,6 +27,7 @@ #include "UpdateCheck.h" #include "CloseMainDialog.h" #include "SelectPluginDialog.h" +#include "ExceptionHandler.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -705,9 +706,7 @@ BOOL bWait; UINT nSleep; -#ifdef WIN32 - ::SetUnhandledExceptionFilter(CTrackApp::UnhandledExceptionFilter); -#endif // WIN32 + ExceptionHandler::RegisterAudioThread(); // -> CODE#0021 // -> DESC="use multimedia timer instead of Sleep() in audio thread" Modified: trunk/OpenMPT/mptrack/Mptrack.cpp =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.cpp 2011-08-23 21:48:22 UTC (rev 996) +++ trunk/OpenMPT/mptrack/Mptrack.cpp 2011-08-24 15:33:32 UTC (rev 997) @@ -19,7 +19,7 @@ #include <shlwapi.h> #include "UpdateCheck.h" #include "../soundlib/StringFixer.h" -#include "dbghelp.h" +#include "ExceptionHandler.h" // rewbs.memLeak #define _CRTDBG_MAP_ALLOC @@ -588,9 +588,7 @@ _CrtSetDebugFillThreshold(0); // Disable buffer filling in secure enhanced CRT functions. #endif -#ifdef WIN32 - ::SetUnhandledExceptionFilter(UnhandledExceptionFilter); -#endif // WIN32 + ExceptionHandler::RegisterMainThread(); m_pModTemplate = NULL; m_pPluginManager = NULL; @@ -923,7 +921,8 @@ } // Open settings if the previous execution was with an earlier version. - if (!cmdInfo.m_bNoSettingsOnNewVersion && MptVersion::ToNum(CMainFrame::GetSettings().gcsPreviousVersion) < MptVersion::num) { + if (!cmdInfo.m_bNoSettingsOnNewVersion && MptVersion::ToNum(CMainFrame::GetSettings().gcsPreviousVersion) < MptVersion::num) + { StopSplashScreen(); ShowChangesDialog(); m_pMainWnd->PostMessage(WM_COMMAND, ID_VIEW_OPTIONS); @@ -931,9 +930,9 @@ EndWaitCursor(); - #ifdef ENABLE_TESTS - MptTest::DoTests(); - #endif +#ifdef ENABLE_TESTS + MptTest::DoTests(); +#endif return TRUE; } @@ -947,8 +946,10 @@ if (glpMidiLibrary) { if (m_szConfigFileName[0]) ExportMidiConfig(m_szConfigFileName); - for (UINT iMidi=0; iMidi<256; iMidi++) { - if (glpMidiLibrary->MidiMap[iMidi]) { + for (UINT iMidi=0; iMidi<256; iMidi++) + { + if (glpMidiLibrary->MidiMap[iMidi]) + { delete[] glpMidiLibrary->MidiMap[iMidi]; } } @@ -1819,54 +1820,6 @@ } -void DrawBitmapButton(HDC hdc, LPRECT lpRect, LPMODPLUGDIB lpdib, int srcx, int srcy, BOOL bPushed) -//------------------------------------------------------------------------------------------------- -{ - RECT rect; - int x = (lpRect->right + lpRect->left) / 2 - 8; - int y = (lpRect->top + lpRect->bottom) / 2 - 8; - HGDIOBJ oldpen = SelectObject(hdc, CMainFrame::penBlack); - rect.left = lpRect->left + 1; - rect.top = lpRect->top + 1; - rect.right = lpRect->right - 1; - rect.bottom = lpRect->bottom - 1; - if (bPushed) - { - ::MoveToEx(hdc, lpRect->left, lpRect->bottom-1, NULL); - ::LineTo(hdc, lpRect->left, lpRect->top); - ::LineTo(hdc, lpRect->right-1, lpRect->top); - ::SelectObject(hdc, CMainFrame::penLightGray); - ::LineTo(hdc, lpRect->right-1, lpRect->bottom-1); - ::LineTo(hdc, lpRect->left, lpRect->bottom-1); - ::MoveToEx(hdc, lpRect->left+1, lpRect->bottom-2, NULL); - ::SelectObject(hdc, CMainFrame::penDarkGray); - ::LineTo(hdc, lpRect->left+1, lpRect->top+1); - ::LineTo(hdc, lpRect->right-2, lpRect->top+1); - rect.left++; - rect.top++; - x++; - y++; - } else - { - ::MoveToEx(hdc, lpRect->right-1, lpRect->top, NULL); - ::LineTo(hdc, lpRect->right-1, lpRect->bottom-1); - ::LineTo(hdc, lpRect->left, lpRect->bottom-1); - ::SelectObject(hdc, CMainFrame::penLightGray); - ::LineTo(hdc, lpRect->left, lpRect->top); - ::LineTo(hdc, lpRect->right-1, lpRect->top); - ::SelectObject(hdc, CMainFrame::penDarkGray); - ::MoveToEx(hdc, lpRect->right-2, lpRect->top+1, NULL); - ::LineTo(hdc, lpRect->right-2, lpRect->bottom-2); - ::LineTo(hdc, lpRect->left+1, lpRect->bottom-2); - rect.right--; - rect.bottom--; - } - ::FillRect(hdc, &rect, CMainFrame::brushGray); - ::SelectObject(hdc, oldpen); - DibBlt(hdc, x, y, 16, 15, srcx, srcy, lpdib); -} - - void DrawButtonRect(HDC hdc, LPRECT lpRect, LPCSTR lpszText, BOOL bDisabled, BOOL bPushed, DWORD dwFlags) //------------------------------------------------------------------------------------------------------- { @@ -1900,103 +1853,6 @@ } -///////////////////////////////////////////////////////////////////////////////////// -// CButtonEx: button with custom bitmap - -BEGIN_MESSAGE_MAP(CButtonEx, CButton) - //{{AFX_MSG_MAP(CButtonEx) - ON_WM_ERASEBKGND() - ON_WM_LBUTTONDBLCLK() - //}}AFX_MSG_MAP -END_MESSAGE_MAP() - - -BOOL CButtonEx::Init(const LPMODPLUGDIB pDib, COLORREF colorkey) -//-------------------------------------------------------------- -{ - COLORREF btnface = GetSysColor(COLOR_BTNFACE); - if (!pDib) return FALSE; - m_Dib = *pDib; - m_srcRect.left = 0; - m_srcRect.top = 0; - m_srcRect.right = 16; - m_srcRect.bottom = 15; - for (UINT i=0; i<16; i++) - { - COLORREF rgb = RGB(m_Dib.bmiColors[i].rgbRed, m_Dib.bmiColors[i].rgbGreen, m_Dib.bmiColors[i].rgbBlue); - if (rgb == colorkey) - { - m_Dib.bmiColors[i].rgbRed = GetRValue(btnface); - m_Dib.bmiColors[i].rgbGreen = GetGValue(btnface); - m_Dib.bmiColors[i].rgbBlue = GetBValue(btnface); - } - } - return TRUE; -} - - -void CButtonEx::SetPushState(BOOL bPushed) -//---------------------------------------- -{ - m_bPushed = bPushed; -} - - -BOOL CButtonEx::SetSourcePos(int x, int y, int cx, int cy) -//-------------------------------------------------------- -{ - m_srcRect.left = x; - m_srcRect.top = y; - m_srcRect.right = cx; - m_srcRect.bottom = cy; - return TRUE; -} - - -BOOL CButtonEx::AlignButton(HWND hwndPrev, int dx) -//------------------------------------------------ -{ - HWND hwndParent = ::GetParent(m_hWnd); - if (!hwndParent) return FALSE; - if (hwndPrev) - { - POINT pt; - RECT rect; - SIZE sz; - ::GetWindowRect(hwndPrev, &rect); - pt.x = rect.left; - pt.y = rect.top; - sz.cx = rect.right - rect.left; - sz.cy = rect.bottom - rect.top; - ::ScreenToClient(hwndParent, &pt); - SetWindowPos(NULL, pt.x + sz.cx + dx, pt.y, 0,0, SWP_NOZORDER|SWP_NOSIZE|SWP_NOACTIVATE); - } - return FALSE; -} - - -BOOL CButtonEx::AlignButton(UINT nIdPrev, int dx) -//----------------------------------------------- -{ - return AlignButton(::GetDlgItem(::GetParent(m_hWnd), nIdPrev), dx); -} - - -void CButtonEx::DrawItem(LPDRAWITEMSTRUCT lpdis) -//---------------------------------------------- -{ - DrawBitmapButton(lpdis->hDC, &lpdis->rcItem, &m_Dib, m_srcRect.left, m_srcRect.top, - ((lpdis->itemState & ODS_SELECTED) || (m_bPushed)) ? TRUE : FALSE); -} - - -void CButtonEx::OnLButtonDblClk(UINT nFlags, CPoint point) -//-------------------------------------------------------- -{ - PostMessage(WM_LBUTTONDOWN, nFlags, MAKELPARAM(point.x, point.y)); -} - - ////////////////////////////////////////////////////////////////////////////////// // Misc functions @@ -2026,9 +1882,7 @@ void CFastBitmap::Init(LPMODPLUGDIB lpTextDib) //-------------------------------------------- { - m_nBlendOffset = 0; // rewbs.buildfix for pattern display bug in debug builds - // & release builds when ran directly from vs.net - + m_nBlendOffset = 0; m_pTextDib = lpTextDib; MemsetZero(m_Dib); m_nTextColor = 0; @@ -2427,107 +2281,6 @@ } -#ifdef WIN32 - -typedef BOOL (WINAPI *MINIDUMPWRITEDUMP)(HANDLE hProcess, DWORD dwPid, HANDLE hFile, MINIDUMP_TYPE DumpType, - CONST PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, - CONST PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, - CONST PMINIDUMP_CALLBACK_INFORMATION CallbackParam - ); - -// Try to close the audio device and rescue unsaved work if an unhandled exception occours... -LONG CTrackApp::UnhandledExceptionFilter(_EXCEPTION_POINTERS *pExceptionInfo) -//--------------------------------------------------------------------------- -{ - CMainFrame* pMainFrame = CMainFrame::GetMainFrame(); - const HWND window = (pMainFrame ? pMainFrame->m_hWnd : NULL); - - // Shut down audio device... - if(pMainFrame) - { - if(pMainFrame->gpSoundDevice) pMainFrame->gpSoundDevice->Reset(); - pMainFrame->audioCloseDevice(); - } - - const CString timestampDir = (CTime::GetCurrentTime()).Format("%Y-%m-%d %H.%M.%S\\"); - CString baseRescuePath; - { - // Create a crash directory - TCHAR tempPath[_MAX_PATH]; - GetTempPath(CountOf(tempPath), tempPath); - baseRescuePath.Format("%sOpenMPT Crash Files\\", tempPath); - CreateDirectory(baseRescuePath, nullptr); - baseRescuePath.Append(timestampDir); - if(!CreateDirectory(baseRescuePath, nullptr)) - { - ::MessageBox(window, "A crash has been detected and OpenMPT will be closed.\nOpenMPT was unable to create a directory for saving debug information and modified files to.", "OpenMPT Crash", MB_ICONERROR); - } - } - - // Create minidump... - HMODULE hDll = ::LoadLibrary("DBGHELP.DLL"); - if (hDll) - { - MINIDUMPWRITEDUMP pDump = (MINIDUMPWRITEDUMP)::GetProcAddress(hDll, "MiniDumpWriteDump"); - if (pDump) - { - const CString filename = baseRescuePath + "crash.dmp"; - - HANDLE hFile = ::CreateFile(filename, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - if (hFile != INVALID_HANDLE_VALUE) - { - _MINIDUMP_EXCEPTION_INFORMATION ExInfo; - - ExInfo.ThreadId = ::GetCurrentThreadId(); - ExInfo.ExceptionPointers = pExceptionInfo; - ExInfo.ClientPointers = NULL; - - pDump(GetCurrentProcess(), GetCurrentProcessId(), hFile, MiniDumpNormal, &ExInfo, NULL, NULL); - ::CloseHandle(hFile); - } - } - ::FreeLibrary(hDll); - } - - // Rescue modified files... - CDocTemplate *pDocTmpl = theApp.GetModDocTemplate(); - if(pDocTmpl) - { - POSITION pos = pDocTmpl->GetFirstDocPosition(); - CDocument *pDoc; - - int numFiles = 0; - - while((pos != NULL) && ((pDoc = pDocTmpl->GetNextDoc(pos)) != NULL)) - { - CModDoc *pModDoc = (CModDoc *)pDoc; - if(pModDoc->IsModified() && pModDoc->GetSoundFile() != nullptr) - { - if(numFiles == 0) - { - // Show the rescue directory in Explorer... - OpenDirectory(baseRescuePath); - } - CString filename; - filename.Format("%s%d_%s.%s", baseRescuePath, ++numFiles, pModDoc->GetTitle(), pModDoc->GetSoundFile()->GetModSpecifications().fileExtension); - pModDoc->OnSaveDocument(filename); - } - } - - if(numFiles > 0) - { - CString message; - message.Format("A crash has been detected and OpenMPT will be closed.\n%d modified file%s been rescued to\n\n%s\n\nNote: It cannot be guaranteed that rescued files are still intact.", numFiles, (numFiles == 1 ? " has" : "s have"), baseRescuePath); - ::MessageBox(window, message, "OpenMPT Crash", MB_ICONERROR); - } - } - - // Let Windows handle the exception... - return EXCEPTION_CONTINUE_SEARCH; -} -#endif // WIN32 - - ////////////////////////////////////////////////////////////////////////////////// // Localized strings Modified: trunk/OpenMPT/mptrack/Mptrack.h =================================================================== --- trunk/OpenMPT/mptrack/Mptrack.h 2011-08-23 21:48:22 UTC (rev 996) +++ trunk/OpenMPT/mptrack/Mptrack.h 2011-08-24 15:33:32 UTC (rev 997) @@ -247,48 +247,12 @@ #ifdef WIN32 // Legacy stuff - bool MoveConfigFile(TCHAR sFileName[_MAX_PATH], TCHAR sSubDir[_MAX_PATH] = "", TCHAR sNewFileName[_MAX_PATH] = ""); + bool MoveConfigFile(TCHAR sFileName[_MAX_PATH], TCHAR sSubDir[_MAX_PATH] = _T(""), TCHAR sNewFileName[_MAX_PATH] = _T("")); #endif // WIN32 -// Exception handling -#ifdef WIN32 -public: - static LONG WINAPI UnhandledExceptionFilter(_EXCEPTION_POINTERS *pExceptionInfo); -#endif // WIN32 - }; -//============================= -class CButtonEx: public CButton -//============================= -{ -protected: - MODPLUGDIB m_Dib; - RECT m_srcRect; - BOOL m_bPushed; - -public: - CButtonEx() { m_Dib.lpDibBits = NULL; m_bPushed = FALSE; } - BOOL Init(const LPMODPLUGDIB pDib, COLORREF colorkey=RGB(0,128,128)); - BOOL SetSourcePos(int x, int y=0, int cx=16, int cy=15); - BOOL AlignButton(UINT nIdPrev, int dx=0); - BOOL AlignButton(const CWnd &wnd, int dx=0) { return AlignButton(wnd.m_hWnd, dx); } - BOOL AlignButton(HWND hwnd, int dx=0); - BOOL GetPushState() const { return m_bPushed; } - void SetPushState(BOOL bPushed); - -protected: - //{{AFX_VIRTUAL(CButtonEx) - virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct); - //}}AFX_VIRTUAL - //{{AFX_MSG(CButtonEx) - afx_msg BOOL OnEraseBkgnd(CDC *) { return TRUE; } - afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); - //}}AFX_MSG - DECLARE_MESSAGE_MAP(); -}; - extern CTrackApp theApp; @@ -366,7 +330,6 @@ RGBQUAD rgb2quad(COLORREF c); // Other bitmap functions -void DrawBitmapButton(HDC hdc, LPRECT lpRect, LPMODPLUGDIB lpdib, int srcx, int srcy, BOOL bPushed); void DrawButtonRect(HDC hdc, LPRECT lpRect, LPCSTR lpszText=NULL, BOOL bDisabled=FALSE, BOOL bPushed=FALSE, DWORD dwFlags=(DT_CENTER|DT_VCENTER)); // Misc functions Modified: trunk/OpenMPT/mptrack/mptrack.vcproj =================================================================== --- trunk/OpenMPT/mptrack/mptrack.vcproj 2011-08-23 21:48:22 UTC (rev 996) +++ trunk/OpenMPT/mptrack/mptrack.vcproj 2011-08-24 15:33:32 UTC (rev 997) @@ -241,6 +241,9 @@ RelativePath=".\EffectVis.cpp"> </File> <File + RelativePath=".\ExceptionHandler.cpp"> + </File> + <File RelativePath="..\soundlib\Fastmix.cpp"> </File> <File @@ -723,6 +726,9 @@ RelativePath="..\soundlib\Endianness.h"> </File> <File + RelativePath=".\ExceptionHandler.h"> + </File> + <File RelativePath=".\fxp.h"> </File> <File Modified: trunk/OpenMPT/mptrack/mptrack_08.vcproj =================================================================== --- trunk/OpenMPT/mptrack/mptrack_08.vcproj 2011-08-23 21:48:22 UTC (rev 996) +++ trunk/OpenMPT/mptrack/mptrack_08.vcproj 2011-08-24 15:33:32 UTC (rev 997) @@ -325,6 +325,10 @@ > </File> <File + RelativePath=".\ExceptionHandler.cpp" + > + </File> + <File RelativePath="..\soundlib\Fastmix.cpp" > </File> @@ -959,6 +963,10 @@ > </File> <File + RelativePath=".\ExceptionHandler.h" + > + </File> + <File RelativePath=".\fxp.h" > </File> Modified: trunk/OpenMPT/mptrack/mptrack_10.vcxproj =================================================================== --- trunk/OpenMPT/mptrack/mptrack_10.vcxproj 2011-08-23 21:48:22 UTC (rev 996) +++ trunk/OpenMPT/mptrack/mptrack_10.vcxproj 2011-08-24 15:33:32 UTC (rev 997) @@ -188,6 +188,7 @@ <ClCompile Include="draw_pat.cpp" /> <ClCompile Include="EffectVis.cpp" /> <ClCompile Include="..\soundlib\Fastmix.cpp" /> + <ClCompile Include="ExceptionHandler.cpp" /> <ClCompile Include="fxp.cpp" /> <ClCompile Include="globals.cpp" /> <ClCompile Include="HyperEdit.cpp" /> @@ -317,6 +318,7 @@ </ItemGroup> <ItemGroup> <ClInclude Include="ACMConvert.h" /> + <ClInclude Include="ExceptionHandler.h" /> <ClInclude Include="PatternRandomizer.h" /> <ClInclude Include="PatternRandomizerGUI.h" /> <ClInclude Include="PatternRandomizerGUIEffect.h" /> Modified: trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters =================================================================== --- trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters 2011-08-23 21:48:22 UTC (rev 996) +++ trunk/OpenMPT/mptrack/mptrack_10.vcxproj.filters 2011-08-24 15:33:32 UTC (rev 997) @@ -424,6 +424,9 @@ <ClCompile Include="ACMConvert.cpp"> <Filter>Source Files</Filter> </ClCompile> + <ClCompile Include="ExceptionHandler.cpp"> + <Filter>Source Files</Filter> + </ClCompile> </ItemGroup> <ItemGroup> <ClInclude Include="AbstractVstEditor.h"> @@ -741,6 +744,9 @@ <ClInclude Include="ACMConvert.h"> <Filter>Header Files</Filter> </ClInclude> + <ClInclude Include="ExceptionHandler.h"> + <Filter>Header Files</Filter> + </ClInclude> </ItemGroup> <ItemGroup> <None Include="res\bitmap1.bmp"> Modified: trunk/OpenMPT/mptrack/version.h =================================================================== --- trunk/OpenMPT/mptrack/version.h 2011-08-23 21:48:22 UTC (rev 996) +++ trunk/OpenMPT/mptrack/version.h 2011-08-24 15:33:32 UTC (rev 997) @@ -15,7 +15,7 @@ #define VER_MAJORMAJOR 1 #define VER_MAJOR 20 #define VER_MINOR 00 -#define VER_MINORMINOR 11 +#define VER_MINORMINOR 12 //Creates version number from version parts that appears in version string. //For example MAKE_VERSION_NUMERIC(1,17,02,28) gives version number of This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |