예제 #1
0
void Window::vUpdateScreen()
{
    if (m_eCartridge == CartridgeGB) {
        if (gbBorderOn) {
            m_iScreenWidth = m_iSGBScreenWidth;
            m_iScreenHeight = m_iSGBScreenHeight;
            gbBorderLineSkip = m_iSGBScreenWidth;
            gbBorderColumnSkip = (m_iSGBScreenWidth - m_iGBScreenWidth) / 2;
            gbBorderRowSkip = (m_iSGBScreenHeight - m_iGBScreenHeight) / 2;
        } else {
            m_iScreenWidth = m_iGBScreenWidth;
            m_iScreenHeight = m_iGBScreenHeight;
            gbBorderLineSkip = m_iGBScreenWidth;
            gbBorderColumnSkip = 0;
            gbBorderRowSkip = 0;
        }
    } else if (m_eCartridge == CartridgeGBA) {
        m_iScreenWidth = m_iGBAScreenWidth;
        m_iScreenHeight = m_iGBAScreenHeight;
    }

    g_return_if_fail(m_iScreenWidth >= 1 && m_iScreenHeight >= 1);

    m_poScreenArea->vSetSize(m_iScreenWidth, m_iScreenHeight);
    m_poScreenArea->vSetScale(m_poDisplayConfig->oGetKey<int>("scale"));

    resize(1, 1);

    if (emulating) {
        vDrawScreen();
    } else {
        vDrawDefaultScreen();
    }
}
예제 #2
0
void Window::vOnFileClose()
{
  if (m_eCartridge != CartridgeNone)
  {
    soundPause();
    vStopEmu();
    vSetDefaultTitle();
    vDrawDefaultScreen();
    vSaveBattery();
    vSaveCheats();
    m_stEmulator.emuCleanUp();
    m_eCartridge = CartridgeNone;
    emulating = 0;

    vUpdateGameSlots();

    for (std::list<Gtk::Widget *>::iterator it = m_listSensitiveWhenPlaying.begin();
         it != m_listSensitiveWhenPlaying.end();
         it++)
    {
      (*it)->set_sensitive(false);
    }

    m_poFilePauseItem->set_active(false);
  }
}