From 867a8fa63340a3e2bbafde0a3903ed9a11c97636 Mon Sep 17 00:00:00 2001 From: Pritpal Bedi Date: Tue, 12 Jun 2012 02:34:58 +0000 Subject: [PATCH] 2012-06-11 19:29 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) * contrib/hbqt/qtcore/hbqt_bind.cpp * contrib/hbqt/qtcore/hbqt_pointer.cpp + Implemented: [*D=1*] token of methods in .qth for __HBQT_REVAMP__. This changes the ownership of an object from Harbour to Qt. --- harbour/ChangeLog | 6 ++++++ harbour/contrib/hbqt/qtcore/hbqt_bind.cpp | 19 +++++++------------ harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp | 8 +++++++- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 3e86bb0c16..2ea83c588c 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,12 @@ The license applies to all entries newer than 2009-04-28. */ +2012-06-11 19:29 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com) + * contrib/hbqt/qtcore/hbqt_bind.cpp + * contrib/hbqt/qtcore/hbqt_pointer.cpp + + Implemented: [*D=1*] token of methods in .qth for __HBQT_REVAMP__. + This changes the ownership of an object from Harbour to Qt. + 2012-06-12 04:17 UTC+0200 Viktor Szakats (harbour syenar.net) * contrib/hbhttpd/log.prg * contrib/hbtip/log.prg diff --git a/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp b/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp index 01e6e1ad5b..bedba65623 100644 --- a/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp +++ b/harbour/contrib/hbqt/qtcore/hbqt_bind.cpp @@ -110,7 +110,7 @@ static void hbqt_bind_init( void* cargo ) PHB_ITEM hbqt_bindGetHbObject( PHB_ITEM pItem, void * qtObject, const char * szClassName, PHBQT_DEL_FUNC pDelFunc, int iFlags ) { - #if 1 + #if 0 char * pname = ( char* ) hb_xgrab( 200 ); char * pname1 = ( char* ) hb_xgrab( 200 ); HB_TRACE( HB_TR_DEBUG, ( ".................HARBOUR_REQUEST_BIND_OBJECT( %p, %i, %s, %s, %s ).................", qtObject, iFlags, szClassName, hb_procname( 0, pname, HB_TRUE ), hb_procname( 1, pname1, HB_TRUE ) ) ); @@ -310,7 +310,6 @@ void * hbqt_bindGetQtObject( PHB_ITEM pObject ) } HBQT_BIND_UNLOCK } - return qtObject; } @@ -374,7 +373,7 @@ void hbqt_bindDestroyHbObject( PHB_ITEM pObject ) else { void * oobj = bind->qtObject; - HB_TRACE( HB_TR_DEBUG, ( "HARBOUR_DESTROY_ABOUT_TO..........( %p )", oobj ) ); + HB_TRACE( HB_TR_DEBUG, ( "HARBOUR_DESTROY_ABOUT_TO..........( %p )........ %s", oobj, bind->szClassName ) ); * bind_ptr = bind->next; if( bind->pDelFunc != NULL ) { @@ -389,14 +388,7 @@ void hbqt_bindDestroyHbObject( PHB_ITEM pObject ) } else { - if( fObject ) - { - HB_TRACE( HB_TR_DEBUG, ( "HARBOUR_DESTROYED_NOT_OWNED_BY_HARBOUR( %p )...%s", bind->qtObject, obj->metaObject()->className() ) ); - } - else - { - HB_TRACE( HB_TR_DEBUG, ( "HARBOUR_DESTROYED_NOT_OWNED_BY_HARBOUR( %p )", bind->qtObject ) ); - } + HB_TRACE( HB_TR_DEBUG, ( "HARBOUR_DESTROYED_NOT_OWNED_BY_HARBOUR( %p )...%s", bind->qtObject, bind->szClassName ) ); * bind_ptr = bind->next; hb_xfree( bind ); } @@ -505,7 +497,10 @@ void hbqt_bindSetOwner( void * qtObject, HB_BOOL fOwner ) { if( bind->qtObject == qtObject ) { - bind->iFlags = ( fOwner ? bind->iFlags | HBQT_BIT_OWNER : bind->iFlags & ~( HBQT_BIT_OWNER ) ); + if( fOwner == HB_TRUE ) + bind->iFlags = bind->iFlags | HBQT_BIT_OWNER; + else + bind->iFlags = bind->iFlags & ~( HBQT_BIT_OWNER ); break; } bind = bind->next; diff --git a/harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp b/harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp index 49e728957f..70fe8292ba 100644 --- a/harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp +++ b/harbour/contrib/hbqt/qtcore/hbqt_pointer.cpp @@ -248,7 +248,12 @@ void hbqt_errRT_ARG( void ) void hbqt_par_detach_ptrGC( int iParam ) { HB_TRACE( HB_TR_DEBUG, ( "hbqt_par_detach_ptrGC( %d )", iParam ) ); - +#ifdef __HBQT_REVAMP__ + if( HB_ISOBJECT( iParam ) ) + { + hbqt_bindSetOwner( hbqt_bindGetQtObject( hb_param( iParam, HB_IT_OBJECT ) ), HB_FALSE ); + } +#else if( HB_ISOBJECT( iParam ) ) { PHB_ITEM pObj = hb_param( iParam, HB_IT_ANY ); @@ -263,6 +268,7 @@ void hbqt_par_detach_ptrGC( int iParam ) if( p && p->ph ) p->bNew = false; } +#endif } HB_FUNC( __HBQT_ISPOINTER )