/** RemoveHandler(BHandler* handler) @case handler is NULL @param handler NULL @results RemoveHandler() returns false. R5 implementation seg faults; we've fixed that. */ void TRemoveHandlerTest::RemoveHandler1() { BLooper Looper; #ifndef TEST_R5 CPPUNIT_ASSERT(!Looper.RemoveHandler(NULL)); #endif }
/** RemoveHandler(BHandler* handler) @case handler doesn't belong to this looper, looper is unlocked @param handler Valid BHandler pointer, not assigned to looper @results */ void TRemoveHandlerTest::RemoveHandler4() { DEBUGGER_ESCAPE; BLooper Looper; BHandler Handler; Looper.Unlock(); CPPUNIT_ASSERT(!Looper.RemoveHandler(&Handler)); }
/** RemoveHandler(BHandler* handler) @case Valid looper and handler; handler has filters @param handler Valid BHandler pointer @results RemoveHandler() returns true handler->FilterList() returns NULL after removal */ void TRemoveHandlerTest::RemoveHandler5() { BLooper Looper; BHandler Handler; BMessageFilter* MessageFilter = new BMessageFilter('1234'); Handler.AddFilter(MessageFilter); Looper.AddHandler(&Handler); CPPUNIT_ASSERT(Looper.RemoveHandler(&Handler)); CPPUNIT_ASSERT(Handler.FilterList()); }
BHandler::~BHandler() { if (LockLooper()) { BLooper* looper = Looper(); looper->RemoveHandler(this); looper->Unlock(); } // remove all filters if (fFilters) { int32 count = fFilters->CountItems(); for (int32 i = 0; i < count; i++) delete (BMessageFilter*)fFilters->ItemAtFast(i); delete fFilters; } // remove all observers (the observer list manages itself) delete fObserverList; // free rest free(fName); gDefaultTokens.RemoveToken(fToken); }
/** RemoveHandler(BHandler* handler) @case handler doesn't belong to this looper @param handler Valid BHandler pointer, not assigned to looper @results */ void TRemoveHandlerTest::RemoveHandler2() { BLooper Looper; BHandler Handler; CPPUNIT_ASSERT(!Looper.RemoveHandler(&Handler)); }