void Buffer::write(void* hostPtr) { if (clBuffer == NULL) { clBuffer = resourceManager->createBuffer(size); } writeEvent = resourceManager->enqueueWriteBuffer(*clBuffer, hostPtr, allEvents(), device); }
Buffer::~Buffer() { if (clBuffer != NULL) { cl::Event::waitForEvents(allEvents()); delete clBuffer; } }
void connectControllerAndModel( Controller* controller, CharmDataModel* model ) { QObject::connect( controller, SIGNAL(eventAdded(Event)), model, SLOT(addEvent(Event)) ); QObject::connect( controller, SIGNAL(eventModified(Event)), model, SLOT(modifyEvent(Event)) ); QObject::connect( controller, SIGNAL(eventDeleted(Event)), model, SLOT(deleteEvent(Event)) ); QObject::connect( controller, SIGNAL(allEvents(EventList)), model, SLOT(setAllEvents(EventList)) ); QObject::connect( controller, SIGNAL(definedTasks(TaskList)), model, SLOT(setAllTasks(TaskList)) ); QObject::connect( controller, SIGNAL(taskAdded(Task)), model, SLOT(addTask(Task)) ); QObject::connect( controller, SIGNAL(taskUpdated(Task)), model, SLOT(modifyTask(Task)) ); QObject::connect( controller, SIGNAL(taskDeleted(Task)), model, SLOT(deleteTask(Task)) ); }
void Controller::stateChanged( State previous, State next ) { Q_UNUSED( previous ); switch( next ) { case Connected: { // yes, it is that simple: TaskList tasks = m_storage->getAllTasks(); // tell the view about the existing tasks; if ( ! Task::checkForUniqueTaskIds( tasks ) ) { throw CharmException( tr( "The Charm database is corrupted, it contains duplicate task ids. " "Please have it looked after by a professional." ) ); } if ( ! Task::checkForTreeness( tasks ) ) { throw CharmException( tr( "The Charm database is corrupted, the tasks do not form a tree. " "Please have it looked after by a professional." ) ); } emit definedTasks( tasks ); EventList events = m_storage->getAllEvents(); emit allEvents( events ); } break; case Disconnecting: { emit readyToQuit(); if ( m_storage ) { // this will still leave Qt complaining about a repeated connection // qDebug() << "Application::enterConnectingState: closing existing storage interface"; m_storage->disconnect(); delete m_storage; m_storage = nullptr; } } break; default: break; }; if ( m_storage ) { emit currentBackendStatus( m_storage->description() ); m_storage->stateChanged( previous ); } }