From ff224527c04f48218bb8fbeab04fce2c7e09db6c Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sun, 11 Apr 2010 13:42:21 +0000 Subject: [PATCH] 2010-04-11 15:41 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbqt/hbqt_destruct.cpp + Added trace calls. (pls correct me if there is a typo, I don't have capacity to rebuild QT components these days) --- harbour/ChangeLog | 5 ++++ harbour/contrib/hbqt/hbqt_destruct.cpp | 38 ++++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 2998e6a057..216077fc19 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,11 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-04-11 15:41 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * contrib/hbqt/hbqt_destruct.cpp + + Added trace calls. (pls correct me if there is a typo, + I don't have capacity to rebuild QT components these days) + 2010-04-11 13:50 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * contrib/hbmzip/minizip.dif * contrib/hbmzip/ioapi.h diff --git a/harbour/contrib/hbqt/hbqt_destruct.cpp b/harbour/contrib/hbqt/hbqt_destruct.cpp index e431d60361..fdea2b60cf 100644 --- a/harbour/contrib/hbqt/hbqt_destruct.cpp +++ b/harbour/contrib/hbqt/hbqt_destruct.cpp @@ -83,30 +83,52 @@ const HB_GC_FUNCS * hbqt_gcFuncs( void ) void * hbqt_gcpointerFromItem( PHB_ITEM pObj ) { - QGC_POINTER * p = ( QGC_POINTER * ) hb_itemGetPtrGC( pObj, hbqt_gcFuncs() ); + QGC_POINTER * p; + + HB_TRACE( HB_TR_DEBUG, ( "hbqt_gcpointerFromItem( %p )", pObj ) ); + + p = ( QGC_POINTER * ) hb_itemGetPtrGC( pObj, hbqt_gcFuncs() ); if( p && p->ph ) return p->ph; else if( hb_itemGetPtr( pObj ) ) + { + HB_TRACE( HB_TR_DEBUG, ( "hbqt_gcpointerFromItem(): returns raw pointer: %p", hb_itemGetPtr( pObj ) ) ); return hb_itemGetPtr( pObj ); /* TOFIX: In what cases is this needed? Reference counting to avoid referring to freed pointers? */ + } else + { + HB_TRACE( HB_TR_DEBUG, ( "hbqt_gcpointerFromItem(): returns NULL" ) ); return NULL; /* TODO: Still better if RTE. */ + } } void * hbqt_gcpointer( int iParam ) { - QGC_POINTER * p = ( QGC_POINTER * ) hb_parptrGC( hbqt_gcFuncs(), iParam ); + QGC_POINTER * p; + + HB_TRACE( HB_TR_DEBUG, ( "hbqt_gcpointer( %d )", iParam ) ); + + p = ( QGC_POINTER * ) hb_parptrGC( hbqt_gcFuncs(), iParam ); if( p && p->ph ) return p->ph; else if( HB_ISPOINTER( iParam ) ) + { + HB_TRACE( HB_TR_DEBUG, ( "hbqt_gcpointer(): returns raw pointer: %p", hb_parptr( iParam ) ) ); return hb_parptr( iParam ); /* TOFIX: In what cases is this needed? Reference counting to avoid referring to freed pointers? */ + } else + { + HB_TRACE( HB_TR_DEBUG, ( "hbqt_gcpointer(): returns NULL" ) ); return NULL; /* TODO: Still better if RTE. */ + } } void * hbqt_pPtrFromItem( PHB_ITEM pObj ) { + HB_TRACE( HB_TR_DEBUG, ( "hbqt_pPtrFromItem( %p )", pObj ) ); + if( hb_itemType( pObj ) == HB_IT_OBJECT ) { hb_vmPushSymbol( hb_dynsymSymbol( hb_dynsymFindName( "PPTR" ) ) ); @@ -118,12 +140,19 @@ void * hbqt_pPtrFromItem( PHB_ITEM pObj ) else if( hb_itemType( pObj ) == HB_IT_POINTER ) return hbqt_gcpointerFromItem( pObj ); else + { + HB_TRACE( HB_TR_DEBUG, ( "hbqt_pPtrFromItem(): returns NULL" ) ); return NULL; /* TODO: Still better if RTE. */ + } } void * hbqt_pPtrFromObj( int iParam ) { - PHB_ITEM pObj = hb_param( iParam, HB_IT_ANY ); + PHB_ITEM pObj; + + HB_TRACE( HB_TR_DEBUG, ( "hbqt_pPtrFromObj( %d )", iParam ) ); + + pObj = hb_param( iParam, HB_IT_ANY ); if( hb_itemType( pObj ) == HB_IT_OBJECT ) { @@ -136,7 +165,10 @@ void * hbqt_pPtrFromObj( int iParam ) else if( hb_itemType( pObj ) == HB_IT_POINTER ) return hbqt_gcpointer( iParam ); else + { + HB_TRACE( HB_TR_DEBUG, ( "hbqt_pPtrFromObj(): returns NULL" ) ); return NULL; /* TODO: Still better if RTE. */ + } } HB_FUNC( HBQT_SETCODECFORCSTRINGS )