From 81aaba495a5d4923cdbfee29f05e7fbfb87bed9c Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sat, 23 Apr 2011 00:08:55 +0000 Subject: [PATCH] 2011-04-23 02:07 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * INSTALL + Added TROUBLESHOOTING/9.: how to submit logs to dev list. Please read it. * src/rtl/diskspac.c * src/rtl/disksphb.c ! Fixed possible MT race condition in DISKSPACE()/HB_DISKSPACE() where no value could be returned. * src/rtl/gtwvt/gtwvt.c * Changed to use WS_EX_COMPOSITED instead of WS_EX_LAYERED. This works on XP and above (previous one also worked on W2K), and I mean this as another round of live testing, as WS_EX_LAYERED turned out to be causing strange flickers (maybe hardware induced, I don't know) on some non-virtualized/non-remote OS installations. Maybe this will work better. If not, even this will be deleted. Then maybe software/DC double-buffering will be the ultimate soltion. % Dropped fiddling with SetLayeredWindowAttributes() call. * Formatting. * contrib/make.hbs + Added 'verbose' keyword. Equivalent to HB_BUILD_VERBOSE=yes. + Added 'rebuild' keyword. (Equivalent to 'clean all') * contrib/3rd/sqlite3/sqlite3.hbp ! Added workaround for gcc/mingw bug in 4.5.0 and 4.5.1 revisions where it shows compile error when iso89 c dialect is selected. Now in 4.5.x gnu89 is used instead to avoid it. * contrib/hbplist - Disabled gtwvg due to build breakage. --- harbour/ChangeLog | 34 ++++++++++++++++++++++ harbour/INSTALL | 11 +++++++ harbour/contrib/3rd/sqlite3/sqlite3.hbp | 3 ++ harbour/contrib/hbplist | 2 +- harbour/contrib/make.hbs | 19 +++++++++++-- harbour/src/rtl/diskspac.c | 4 +-- harbour/src/rtl/disksphb.c | 4 +-- harbour/src/rtl/gtwvt/gtwvt.c | 38 +++++++------------------ 8 files changed, 79 insertions(+), 36 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index eb04e40949..ab2c0c1b38 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,40 @@ The license applies to all entries newer than 2009-04-28. */ +2011-04-23 02:07 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * INSTALL + + Added TROUBLESHOOTING/9.: how to submit logs to dev list. + Please read it. + + * src/rtl/diskspac.c + * src/rtl/disksphb.c + ! Fixed possible MT race condition in DISKSPACE()/HB_DISKSPACE() + where no value could be returned. + + * src/rtl/gtwvt/gtwvt.c + * Changed to use WS_EX_COMPOSITED instead of WS_EX_LAYERED. + This works on XP and above (previous one also worked on W2K), + and I mean this as another round of live testing, as WS_EX_LAYERED + turned out to be causing strange flickers (maybe hardware + induced, I don't know) on some non-virtualized/non-remote + OS installations. Maybe this will work better. If not, even + this will be deleted. Then maybe software/DC double-buffering + will be the ultimate soltion. + % Dropped fiddling with SetLayeredWindowAttributes() call. + * Formatting. + + * contrib/make.hbs + + Added 'verbose' keyword. Equivalent to HB_BUILD_VERBOSE=yes. + + Added 'rebuild' keyword. (Equivalent to 'clean all') + + * contrib/3rd/sqlite3/sqlite3.hbp + ! Added workaround for gcc/mingw bug in 4.5.0 and 4.5.1 + revisions where it shows compile error when iso89 c dialect + is selected. Now in 4.5.x gnu89 is used instead to avoid it. + + * contrib/hbplist + - Disabled gtwvg due to build breakage. + 2011-04-22 16:29 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + config/minix/clang.mk + Added new compiler for minix. [Tamas Tevesz] diff --git a/harbour/INSTALL b/harbour/INSTALL index 951136feee..96a6476522 100644 --- a/harbour/INSTALL +++ b/harbour/INSTALL @@ -1264,6 +1264,17 @@ HARBOUR 8. Try to do no or only small modifications at once to command examples included in this document. If it doesn't work, fall back to documented examples as is. + 9. If everything fails and you are to report a problem to the developers, + make sure to include your OS version/language/CPU architecture, + harbour revision, C compiler name/release and version, environment + variables and verbose log output containing _both stderr and stdout in + one combined stream_ (use 'make > log.txt 2>&1'). Enable verbose + mode using 'HB_BUILD_VERBOSE=yes'. + Complete log output is rarely necessary, but always make sure to include + the top of the output (lines starting with '!') and the area where + problematic behavior occurred. Compress your log using zip or gzip if + it is larger than 25KB. + Without these, your chances are lower to get useful or any response. 11. QUICK START TO BUILD YOUR OWN HARBOUR APPLICATIONS diff --git a/harbour/contrib/3rd/sqlite3/sqlite3.hbp b/harbour/contrib/3rd/sqlite3/sqlite3.hbp index 9ed9d7274a..990de8e1e8 100644 --- a/harbour/contrib/3rd/sqlite3/sqlite3.hbp +++ b/harbour/contrib/3rd/sqlite3/sqlite3.hbp @@ -35,6 +35,9 @@ -cflag=-DSQLITE_THREADSAFE=0{minix} -cflag=-DSQLITE_OMIT_LOAD_EXTENSION=1{minix} +# mingw 4.5.0/4.5.1 revisions fail compiling in iso90 mode. It's fixed in 4.5.2. +-c=gnu90{allgcc&HB_COMP_VER='45'} + sqlite3.c # ORIGIN http://www.sqlite.org/ diff --git a/harbour/contrib/hbplist b/harbour/contrib/hbplist index 2d5a8aa6d3..e0d7f3229d 100644 --- a/harbour/contrib/hbplist +++ b/harbour/contrib/hbplist @@ -3,7 +3,7 @@ # gtalleg/gtalleg.hbp -gtwvg/gtwvg.hbp +#gtwvg/gtwvg.hbp hbblat/hbblat.hbp hbblink/hbblink.hbp hbbz2/hbbz2.hbp # uses: bz2 (locally hosted) diff --git a/harbour/contrib/make.hbs b/harbour/contrib/make.hbs index 42d637f45b..8cd322c9fd 100755 --- a/harbour/contrib/make.hbs +++ b/harbour/contrib/make.hbs @@ -66,6 +66,7 @@ STATIC s_cReBase PROCEDURE Main( ... ) LOCAL hProjectList + LOCAL aParams s_cBase := "" s_cReBase := "" @@ -91,11 +92,17 @@ PROCEDURE Main( ... ) LoadProjectListFromFile( hProjectList, s_cHome + "hbplist" ) LoadProjectListFromString( hProjectList, GetEnv( "HB_BUILD_ADDONS" ) ) + aParams := hb_AParams() + + IF AScanL( aParams, "verbose" ) > 0 + hb_setenv( "HB_BUILD_VERBOSE", "yes" ) + ENDIF + /* Build */ IF Empty( GetEnv( "HB_HOST_BIN_DIR" ) ) - Standalone( hb_AParams(), hProjectList ) + Standalone( aParams, hProjectList ) ELSE - GNUMake( hb_AParams(), hProjectList ) + GNUMake( aParams, hProjectList ) ENDIF RETURN @@ -128,6 +135,8 @@ PROCEDURE Standalone( aParams, hProjectList ) AScanL( aParams, "all" ) > 0 .AND. ; AScanL( aParams, "all" ) > AScanL( aParams, "clean" ) nAction := _ACT_INC_REBUILD + CASE AScanL( aParams, "rebuild" ) > 0 + nAction := _ACT_INC_REBUILD CASE AScanL( aParams, "clean" ) > 0 .AND. ; AScanL( aParams, "install" ) > 0 .AND. ; AScanL( aParams, "install" ) > AScanL( aParams, "clean" ) @@ -154,7 +163,9 @@ PROCEDURE Standalone( aParams, hProjectList ) IF !( Lower( tmp ) == "install" ) .AND. ; !( Lower( tmp ) == "clean" ) .AND. ; !( Lower( tmp ) == "all" ) .AND. ; - !( Lower( tmp ) == "first" ) + !( Lower( tmp ) == "first" ) .AND. ; + !( Lower( tmp ) == "rebuild" ) .AND. ; + !( Lower( tmp ) == "verbose" ) cOptionsUser += " " + tmp @@ -267,6 +278,8 @@ PROCEDURE GNUMake( aParams, hProjectList ) ELSE nAction := _ACT_INC ENDIF + CASE AScanL( aParams, "rebuild" ) > 0 + nAction := _ACT_INC_REBUILD OTHERWISE nAction := _ACT_INC ENDCASE diff --git a/harbour/src/rtl/diskspac.c b/harbour/src/rtl/diskspac.c index 0c8c65ba01..f0d40e6d71 100644 --- a/harbour/src/rtl/diskspac.c +++ b/harbour/src/rtl/diskspac.c @@ -164,9 +164,8 @@ HB_FUNC( DISKSPACE ) static P_GDFSE s_pGetDiskFreeSpaceEx = NULL; static HB_BOOL s_fInit = HB_FALSE; - if( !s_fInit ) + if( ! s_fInit ) { - s_fInit = HB_TRUE; s_pGetDiskFreeSpaceEx = ( P_GDFSE ) #if defined( UNICODE ) GetProcAddress( GetModuleHandle( hb_iswin9x() ? TEXT( "unicows.dll" ) : TEXT( "kernel32.dll" ) ), @@ -175,6 +174,7 @@ HB_FUNC( DISKSPACE ) GetProcAddress( GetModuleHandle( TEXT( "kernel32.dll" ) ), "GetDiskFreeSpaceExA" ); #endif + s_fInit = HB_TRUE; } if( s_pGetDiskFreeSpaceEx ) diff --git a/harbour/src/rtl/disksphb.c b/harbour/src/rtl/disksphb.c index 4bb174c506..dddbf1cb53 100644 --- a/harbour/src/rtl/disksphb.c +++ b/harbour/src/rtl/disksphb.c @@ -225,9 +225,8 @@ HB_FUNC( HB_DISKSPACE ) static P_GDFSE s_pGetDiskFreeSpaceEx = NULL; static HB_BOOL s_fInit = HB_FALSE; - if( !s_fInit ) + if( ! s_fInit ) { - s_fInit = HB_TRUE; s_pGetDiskFreeSpaceEx = ( P_GDFSE ) #if defined( UNICODE ) GetProcAddress( GetModuleHandle( hb_iswin9x() ? TEXT( "unicows.dll" ) : TEXT( "kernel32.dll" ) ), @@ -236,6 +235,7 @@ HB_FUNC( HB_DISKSPACE ) GetProcAddress( GetModuleHandle( TEXT( "kernel32.dll" ) ), "GetDiskFreeSpaceExA" ); #endif + s_fInit = HB_TRUE; } if( s_pGetDiskFreeSpaceEx ) { diff --git a/harbour/src/rtl/gtwvt/gtwvt.c b/harbour/src/rtl/gtwvt/gtwvt.c index 13f5cf69bd..ef9da54038 100644 --- a/harbour/src/rtl/gtwvt/gtwvt.c +++ b/harbour/src/rtl/gtwvt/gtwvt.c @@ -84,8 +84,8 @@ #include "gtwvt.h" -#ifndef WS_EX_LAYERED -#define WS_EX_LAYERED 0x00080000 +#ifndef WS_EX_COMPOSITED +#define WS_EX_COMPOSITED 0x02000000 #endif #ifndef LWA_ALPHA @@ -157,7 +157,7 @@ static void hb_gt_wvt_RegisterClass( HINSTANCE hInstance ) WNDCLASS wndclass; memset( &wndclass, 0, sizeof( wndclass ) ); - wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; + wndclass.style = CS_DBLCLKS; wndclass.lpfnWndProc = hb_gt_wvt_WndProc; /* wndclass.cbClsExtra = 0; */ /* wndclass.cbWndExtra = 0; */ @@ -1879,31 +1879,15 @@ static void hb_gt_wvt_CreateWindow( PHB_GTWVT pWVT ) static HB_BOOL hb_gt_wvt_CreateConsoleWindow( PHB_GTWVT pWVT ) { - if( !pWVT->hWnd ) + if( ! pWVT->hWnd ) { hb_gt_wvt_CreateWindow( pWVT ); - if( !pWVT->hWnd ) + if( ! pWVT->hWnd ) hb_errInternal( 10001, "Failed to create WVT window", NULL, NULL ); #if ! defined( HB_OS_WIN_CE ) if( ! GetSystemMetrics( SM_REMOTESESSION ) ) - { - typedef BOOL ( WINAPI * P_SLWA )( HWND, COLORREF, BYTE, DWORD ); - - P_SLWA pSetLayeredWindowAttributes = ( P_SLWA ) - GetProcAddress( GetModuleHandle( TEXT( "user32.dll" ) ), - "SetLayeredWindowAttributes" ); - - if( pSetLayeredWindowAttributes ) - { - SetWindowLongPtr( pWVT->hWnd, GWL_EXSTYLE, GetWindowLongPtr( pWVT->hWnd, GWL_EXSTYLE ) | WS_EX_LAYERED ); - - pSetLayeredWindowAttributes( pWVT->hWnd, - ( COLORREF ) 0, /* COLORREF crKey */ - 255, /* BYTE bAlpha */ - LWA_ALPHA /* DWORD dwFlags */ ); - } - } + SetWindowLongPtr( pWVT->hWnd, GWL_EXSTYLE, GetWindowLongPtr( pWVT->hWnd, GWL_EXSTYLE ) | WS_EX_COMPOSITED ); #endif /* Set icon */ @@ -1991,12 +1975,10 @@ static HB_BOOL hb_gt_wvt_FullScreen( PHB_GT pGT ) rt.bottom = 0; #ifdef MONITOR_DEFAULTTONEAREST - pMonitorFromWindow = ( P_MFW ) - GetProcAddress( GetModuleHandle( TEXT( "user32.dll" ) ), - "MonitorFromWindow" ); - pGetMonitorInfo = ( P_GMI ) - GetProcAddress( GetModuleHandle( TEXT( "user32.dll" ) ), - "GetMonitorInfo" ); + pMonitorFromWindow = ( P_MFW ) GetProcAddress( GetModuleHandle( TEXT( "user32.dll" ) ), + "MonitorFromWindow" ); + pGetMonitorInfo = ( P_GMI ) GetProcAddress( GetModuleHandle( TEXT( "user32.dll" ) ), + "GetMonitorInfo" ); if( pMonitorFromWindow && pGetMonitorInfo ) {