void IOFWAsyncStreamReceiver::free() { fControl->closeGate(); #ifdef DCL_MODE deactivate(); // free dcl program if( fdclProgram ) { FreeAsyncStreamRxDCLProgram(fdclProgram); fdclProgram = NULL; } // free the buffer if( fBufDesc ) { fBufDesc->release(); fBufDesc = NULL; } #else if( fListener ) { fListener->Deactivate(); fListener->release(); fListener = NULL; } // free the buffer if( fBufDesc ) { fBufDesc->release(); fBufDesc = NULL; } #endif removeAllListeners(); if ( fAsyncStreamClients ) { fAsyncStreamClients->release(); fAsyncStreamClients = NULL; } if( fAsyncStreamClientIterator ) { fAsyncStreamClientIterator->release(); fAsyncStreamClientIterator = NULL; } fControl->openGate(); OSObject::free(); }
void DeviceOrientationController::suspendEventsForAllListeners(DOMWindow* window) { if (!m_listeners.contains(window)) return; int count = m_listeners.count(window); removeAllListeners(window); while (count--) m_suspendedListeners.add(window); }
Object::~Object() { ObjectExtra* extra = _objectExtra; if (extra != &Object_extraNull) { // Delete all children. err_t err = _removeAll(); if (FOG_IS_ERROR(err)) { Logger::error("Fog::Object", "~Object", "_removeAll() failed, error=%u.", err); } // Delete all connections. if (!extra->_forwardConnection.isEmpty()) { removeAllListeners(); } _objectExtra = &Object_extraNull; ObjectExtra_destroy(extra); } // Delete all posted events. if (_events) { AutoLock locked(Object::_internalLock); // Set "wasDeleted" for all pending events. Event* ev = _events; while (ev) { // Event will be deleted by an event loop, we need only to mark it for // deletion so it won't be processed (called). ev->_wasDeleted = 1; // Go to previous, because newest pending events are stored first. ev = ev->_prev; } } }