Add screenshot support

This commit is contained in:
Jeffrey Pfau 2014-10-18 16:37:05 -07:00
parent 9efd8f2452
commit 23592af3cc
3 changed files with 21 additions and 0 deletions

View File

@ -64,6 +64,14 @@ void Display::forceDraw() {
}
}
#ifdef USE_PNG
void Display::screenshot() {
GBAThreadInterrupt(m_context);
GBAThreadTakeScreenshot(m_context);
GBAThreadContinue(m_context);
}
#endif
void Display::initializeGL() {
glClearColor(0, 0, 0, 0);
glClear(GL_COLOR_BUFFER_BIT);

View File

@ -20,6 +20,9 @@ public slots:
void startDrawing(const uint32_t* buffer, GBAThread* context);
void stopDrawing();
void forceDraw();
#ifdef USE_PNG
void screenshot();
#endif
protected:
virtual void initializeGL() override;

View File

@ -241,6 +241,16 @@ void Window::setupMenu(QMenuBar* menubar) {
menubar->clear();
QMenu* fileMenu = menubar->addMenu(tr("&File"));
fileMenu->addAction(tr("Load &ROM..."), this, SLOT(selectROM()), QKeySequence::Open);
fileMenu->addSeparator();
#ifdef USE_PNG
QAction* screenshot = new QAction(tr("Take &screenshot"), fileMenu);
screenshot->setShortcut(tr("F12"));
connect(screenshot, SIGNAL(triggered()), m_display, SLOT(screenshot()));
m_gameActions.append(screenshot);
fileMenu->addAction(screenshot);
#endif
#ifndef Q_OS_MAC
fileMenu->addSeparator();
fileMenu->addAction(tr("E&xit"), this, SLOT(close()), QKeySequence::Quit);