Kaydet (Commit) 66b17023 authored tarafından Jan Holesovsky's avatar Jan Holesovsky

windows: Improve logging.

Change-Id: I15e6d240b3c94af07e9b39cc16efb581869729f2
üst 3852d469
......@@ -183,7 +183,7 @@ LRESULT CALLBACK SalFrameWndProcW( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM l
void EmitTimerCallback();
void SalTestMouseLeave();
bool ImplWriteLastError( DWORD lastError, const char *szApiCall );
void ImplWriteLastError(DWORD lastError, const char *szApiCall);
long ImplHandleSalObjKeyMsg( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam );
long ImplHandleSalObjSysCharMsg( HWND hWnd, WPARAM wParam, LPARAM lParam );
......
......@@ -23,6 +23,10 @@
#include <postmac.h>
#endif
#if defined( WNT )
#include <win/saldata.hxx>
#endif
using namespace com::sun::star;
#if defined( UNX ) && !defined MACOSX && !defined IOS && !defined ANDROID
......@@ -765,7 +769,8 @@ bool OpenGLContext::init(HDC hDC, HWND hWnd)
bool OpenGLContext::ImplInit()
{
SAL_INFO("vcl.opengl", "OpenGLContext::ImplInit----start");
PIXELFORMATDESCRIPTOR PixelFormatFront = // PixelFormat Tells Windows How We Want Things To Be
// PixelFormat tells Windows how we want things to be
PIXELFORMATDESCRIPTOR PixelFormatFront =
{
sizeof(PIXELFORMATDESCRIPTOR),
1, // Version Number
......@@ -813,17 +818,25 @@ bool OpenGLContext::ImplInit()
return false;
}
SetPixelFormat(m_aGLWin.hDC, WindowPix, &PixelFormatFront);
if (!SetPixelFormat(m_aGLWin.hDC, WindowPix, &PixelFormatFront))
{
ImplWriteLastError(GetLastError(), "SetPixelFormat in OpenGLContext::ImplInit");
SAL_WARN("vcl.opengl", "SetPixelFormat failed");
return false;
}
m_aGLWin.hRC = wglCreateContext(m_aGLWin.hDC);
if (m_aGLWin.hRC == NULL)
{
ImplWriteLastError(GetLastError(), "wglCreateContext in OpenGLContext::ImplInit");
SAL_WARN("vcl.opengl", "wglCreateContext failed");
return false;
}
if (!wglMakeCurrent(m_aGLWin.hDC, m_aGLWin.hRC))
{
SAL_WARN("vcl.opengl", "wglMakeCurrent failed: " << GetLastError());
ImplWriteLastError(GetLastError(), "wglMakeCurrent in OpenGLContext::ImplInit");
SAL_WARN("vcl.opengl", "wglMakeCurrent failed");
return false;
}
......
......@@ -5974,64 +5974,27 @@ bool ImplHandleGlobalMsg( HWND hWnd, UINT nMsg, WPARAM wParam, LPARAM lParam, LR
return bResult;
}
bool ImplWriteLastError( DWORD lastError, const char *szApiCall )
void ImplWriteLastError(DWORD lastError, const char *szApiCall)
{
static int first=1;
// if VCL_LOGFILE_ENABLED is set, Win32 API error messages can be written
// to %TMP%/vcl.log or %TEMP%/vcl.log
static char *logEnabled = getenv("VCL_LOGFILE_ENABLED");
if( logEnabled )
{
bool bSuccess = FALSE;
static char *szTmp = getenv("TMP");
if( !szTmp || !*szTmp )
szTmp = getenv("TEMP");
if( szTmp && *szTmp )
{
char fname[5000];
strcpy( fname, szTmp );
if( fname[strlen(fname) - 1] != '\\' )
strcat( fname, "\\");
strcat( fname, "vcl.log" );
FILE *fp = fopen( fname, "a" ); // always append
if( fp )
{
if( first )
{
first = 0;
fprintf( fp, "Process ID: %ld (0x%lx)\n", GetCurrentProcessId(), GetCurrentProcessId() );
}
time_t aclock;
time( &aclock ); // Get time in seconds
struct tm *newtime = localtime( &aclock ); // Convert time to struct tm form
fprintf( fp, asctime( newtime ) ); // print time stamp
fprintf( fp, "%s returned %lu (0x%lx)\n", szApiCall, lastError, lastError );
bSuccess = TRUE; // may be FormatMessage fails but we wrote at least the error code
LPVOID lpMsgBuf;
if (FormatMessageA(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
lastError,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPSTR) &lpMsgBuf,
0,
NULL ))
{
fprintf( fp, " %s\n", (LPSTR)lpMsgBuf );
LocalFree( lpMsgBuf );
}
fclose( fp );
}
}
return bSuccess;
#if OSL_DEBUG_LEVEL > 0
LPVOID lpMsgBuf;
if (FormatMessageA(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
lastError & 0xffff,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL ))
{
SAL_WARN("vcl", "API call: " << szApiCall << " returned " << lastError << " (0x" << std::hex << lastError << "): " << (LPTSTR) lpMsgBuf);
LocalFree(lpMsgBuf);
}
else
return TRUE;
SAL_WARN("vcl", "API call: " << szApiCall << " returned " << lastError << " (0x" << std::hex << lastError << ")");
#endif
}
#ifdef _WIN32
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment