예제 #1
0
/**
	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
}
예제 #2
0
/**
	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));
}
예제 #3
0
/**
	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());
}
예제 #4
0
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);
}
예제 #5
0
/**
	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));
}