2008-07-02 14:35 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)

* contrib/gtwvg/gtwvg.c
  * source/rtl/gtwvt/gtwvt.c
    ! Changed the wat EXIT procedure works.
    ; The change is provided by Ron Pinkas so I have implemented as is.
      Before also I was not finding any problems on Harbour but 
      appln was GPFing on Exit with GTWVG.
    ; TOCHECK: Viktor see if it resolves the EXIT problem you are reporting
This commit is contained in:
Pritpal Bedi
2008-07-02 21:38:06 +00:00
parent 119b2b97c5
commit 39bdab02ce
3 changed files with 53 additions and 22 deletions

View File

@@ -8,6 +8,15 @@
2008-12-31 13:59 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2008-07-02 14:35 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
* contrib/gtwvg/gtwvg.c
* source/rtl/gtwvt/gtwvt.c
! Changed the wat EXIT procedure works.
; The change is provided by Ron Pinkas so I have implemented as is.
Before also I was not finding any problems on Harbour but
appln was GPFing on Exit with GTWVG.
; TOCHECK: Viktor see if it resolves the EXIT problem you are reporting
2008-07-02 22:42 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/hbsqlit3/Makefile
* contrib/Makefile

View File

@@ -170,12 +170,41 @@ static BOOL hb_gt_wvt_Alloc( PHB_GTWVT pWVT )
static void hb_gt_wvt_Free( PHB_GTWVT pWVT )
{
int iIndex;
--s_wvtCount;
s_wvtWindows[pWVT->iHandle] = NULL;
if( pWVT->pszSelectCopy )
hb_xfree( pWVT->pszSelectCopy );
// Detach PRG callback
pWVT->pSymWVT_PAINT = NULL;
pWVT->pSymWVT_SETFOCUS = NULL;
pWVT->pSymWVT_KILLFOCUS = NULL;
pWVT->pSymWVT_MOUSE = NULL;
pWVT->pSymWVT_TIMER = NULL;
pWVT->pSymWVT_KEY = NULL;
for ( iIndex = 0; iIndex < WVT_DLGML_MAX; iIndex++ )
{
if ( pWVT->pFunc[ iIndex ] != NULL && pWVT->iType[ iIndex ] == 2 )
{
hb_itemRelease( ( PHB_ITEM ) pWVT->pFunc[ iIndex ] );
pWVT->pFunc[ iIndex ] = NULL;
}
if ( pWVT->pcbFunc[ iIndex ] != NULL )
{
hb_itemRelease( ( PHB_ITEM ) pWVT->pcbFunc[ iIndex ] );
pWVT->pcbFunc[ iIndex ] = NULL;
}
}
if( pWVT->hWnd )
{
DestroyWindow( pWVT->hWnd );
pWVT->hWnd = NULL;
}
hb_xfree( pWVT );
}
@@ -183,19 +212,14 @@ static void hb_gt_wvt_FreeAll( void )
{
if( s_wvtCount > 0 )
{
int iPos;
int iPos, iIndex;
for ( iPos = 1; iPos < WVT_MAX_WINDOWS; iPos++ )
{
if( s_wvtWindows[ iPos ] != NULL )
if( !s_wvtWindows[ iPos ] == NULL )
{
PHB_GTWVT pWVT;
pWVT = s_wvtWindows[ iPos ];
DestroyWindow( pWVT->hWnd );
pWVT->hWnd = NULL;
hb_gt_wvt_Free( pWVT );
HB_GTSUPER_EXIT( pWVT->pGT );
hb_gt_wvt_Free( s_wvtWindows[ iPos ] );
HB_GTSUPER_EXIT( s_wvtWindows[ iPos ]->pGT );
}
}
}
@@ -1922,19 +1946,14 @@ static void hb_gt_wvt_Exit( PHB_GT pGT )
pWVT = HB_GTWVT_GET( pGT );
HB_GTSUPER_EXIT( pGT );
hb_gt_wvt_FreeAll(); /* MW */
hb_gt_wvt_FreeAll();
if( pWVT )
{
if( pWVT->hWnd )
{
hb_wvt_gtExitGui( pWVT );
DestroyWindow( pWVT->hWnd );
pWVT->hWnd = NULL;
}
if( pWVT->pszSelectCopy )
hb_xfree( pWVT->pszSelectCopy );
UnregisterClass( s_szClassName, ( HINSTANCE ) s_hInstance );
hb_gt_wvt_Free( pWVT );
}

View File

@@ -150,12 +150,20 @@ static BOOL hb_gt_wvt_Alloc( PHB_GTWVT pWVT )
static void hb_gt_wvt_Free( PHB_GTWVT pWVT )
{
int iIndex;
--s_wvtCount;
s_wvtWindows[pWVT->iHandle] = NULL;
if( pWVT->pszSelectCopy )
hb_xfree( pWVT->pszSelectCopy );
if( pWVT->hWnd )
{
DestroyWindow( pWVT->hWnd );
pWVT->hWnd = NULL;
}
hb_xfree( pWVT );
}
@@ -1562,7 +1570,7 @@ static HWND hb_gt_wvt_CreateWindow( HINSTANCE hInstance, HINSTANCE hPrevInstance
NULL, /* menu */
hInstance, /* instance */
NULL ); /* lpParam */
if( hWnd )
{
ShowWindow( hWnd, iCmdShow );
@@ -1657,11 +1665,6 @@ static void hb_gt_wvt_Exit( PHB_GT pGT )
if( pWVT )
{
if( pWVT->hWnd )
{
DestroyWindow( pWVT->hWnd );
pWVT->hWnd = NULL;
}
UnregisterClass( s_szClassName, ( HINSTANCE ) s_hInstance );
hb_gt_wvt_Free( pWVT );
}