Skip to content

Instantly share code, notes, and snippets.

@chuckleplant
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chuckleplant/5adaae89bc247f1987e5 to your computer and use it in GitHub Desktop.
Save chuckleplant/5adaae89bc247f1987e5 to your computer and use it in GitHub Desktop.
Run several ofApps for OF v0.8.4
void resetWindow()
{
ofAppGLFWWindow * glfwWindow = dynamic_cast<ofAppGLFWWindow*>(ofGetWindowPtr());
GLFWwindow* windowP = glfwWindow->getGLFWWindow();
glfwSetWindowShouldClose(windowP, 0);
}
void removeOfAppListeners()
{
ofRemoveListener(ofEvents().setup,ofGetAppPtr(),&ofBaseApp::setup,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().update,ofGetAppPtr(),&ofBaseApp::update,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().draw,ofGetAppPtr(),&ofBaseApp::draw,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().exit,ofGetAppPtr(),&ofBaseApp::exit,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().keyPressed,ofGetAppPtr(),&ofBaseApp::keyPressed,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().keyReleased,ofGetAppPtr(),&ofBaseApp::keyReleased,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().mouseMoved,ofGetAppPtr(),&ofBaseApp::mouseMoved,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().mouseDragged,ofGetAppPtr(),&ofBaseApp::mouseDragged,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().mousePressed,ofGetAppPtr(),&ofBaseApp::mousePressed,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().mouseReleased,ofGetAppPtr(),&ofBaseApp::mouseReleased,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().mouseScrolled,ofGetAppPtr(),&ofBaseApp::mouseScrolled,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().windowEntered,ofGetAppPtr(),&ofBaseApp::windowEntry,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().windowResized,ofGetAppPtr(),&ofBaseApp::windowResized,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().messageEvent,ofGetAppPtr(),&ofBaseApp::messageReceived,OF_EVENT_ORDER_APP);
ofRemoveListener(ofEvents().fileDragEvent,ofGetAppPtr(),&ofBaseApp::dragged,OF_EVENT_ORDER_APP);
}
// This can be used to make sure ofSetupOpenGL is called just once,
// not really needed here but might be in other types of OF setups
static void setupOpenGLOnce()
{
if(ofGetWindowPtr() != NULL)
{
ofSetupOpenGL(1024, 768, OF_WINDOW);
}
}
class myApp : public ofApp
{
void setup()
{
//...
ofGetWindowPtr()->windowShouldClose();
}
void update()
{
}
void draw()
{
}
}
void main()
{
setupOpenGLOnce();
// Running first app...
ofRunApp(make_shared<myApp>());
resetWindow();
removeOfAppListeners();
// Running second app...
ofRunApp(make_shared<myApp>());
resetWindow();
removeOfAppListeners();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment