Annotation of hatari/src/gui-sdl/dlgHalt.c, revision 1.1

1.1     ! root        1: /*
        !             2:   Hatari - dlgHalt.c - Emulation halt + reset handling alertbox
        !             3: 
        !             4:   Copyright (C) 2015 by Eero Tamminen
        !             5: 
        !             6:   This file is distributed under the GNU General Public License, version 2
        !             7:   or at your option any later version. Read the file gpl.txt for details.
        !             8: */
        !             9: const char DlgHalt_fileid[] = "Hatari dlgHalt.c : " __DATE__ " " __TIME__;
        !            10: 
        !            11: #include <string.h>
        !            12: 
        !            13: #include "main.h"
        !            14: #include "reset.h"
        !            15: #include "debugui.h"
        !            16: #include "dialog.h"
        !            17: #include "screen.h"
        !            18: #include "sdlgui.h"
        !            19: 
        !            20: #define DLGHALT_WARM   2
        !            21: #define DLGHALT_COLD   3
        !            22: #define DLGHALT_DEBUG  4
        !            23: #define DLGHALT_QUIT   5
        !            24: 
        !            25: /* The "Halt"-dialog: */
        !            26: static SGOBJ haltdlg[] = {
        !            27:        { SGBOX,  0, 0, 0,0, 52,7, NULL },
        !            28:        { SGTEXT, 0, 0, 2,1, 48,1, "Detected double bus/address error => CPU halted!" },
        !            29:        { SGBUTTON, SG_DEFAULT, 0,  6,3, 12,1, "_Warm reset" },
        !            30:        { SGBUTTON, 0,          0,  6,5, 12,1, "_Cold reset" },
        !            31:        { SGBUTTON, 0,          0, 28,3, 18,1, "Console _debugger" },
        !            32:        { SGBUTTON, SG_CANCEL,  0, 28,5, 18,1, "_Quit Hatari" },
        !            33:        { -1, 0, 0, 0,0, 0,0, NULL }
        !            34: };
        !            35: 
        !            36: 
        !            37: /*-----------------------------------------------------------------------*/
        !            38: /**
        !            39:  * Show the "halt" dialog
        !            40:  */
        !            41: void Dialog_HaltDlg(void)
        !            42: {
        !            43:        bool show = SDL_ShowCursor(SDL_QUERY);
        !            44: #if WITH_SDL2
        !            45:        bool mode = SDL_GetRelativeMouseMode();
        !            46:        SDL_SetRelativeMouseMode(SDL_FALSE);
        !            47: #endif
        !            48:        SDL_ShowCursor(SDL_ENABLE);
        !            49: 
        !            50:        SDLGui_CenterDlg(haltdlg);
        !            51:        switch (SDLGui_DoDialog(haltdlg, NULL, false)) {
        !            52: 
        !            53:        case DLGHALT_WARM:
        !            54:                /* Reset to exit 'halt' state (resets CPU and regs.spcflags) */
        !            55:                Reset_Warm();
        !            56:                break;
        !            57:        case DLGHALT_COLD:
        !            58:                /* Warm reset isn't always enough to restore emulated system to working state */
        !            59:                Reset_Cold();
        !            60:                break;
        !            61:        case DLGHALT_DEBUG:
        !            62:                /* Call the debugger, restore screen so user sees whats on it */
        !            63:                SDL_UpdateRect(sdlscrn, 0,0, 0,0);
        !            64:                DebugUI(REASON_CPU_EXCEPTION);
        !            65:                break;
        !            66:        default:
        !            67:                /* DLGHALTQUIT, SDLGUI_QUIT and GUI errors */
        !            68:                if (bQuitProgram) {
        !            69:                        /* got here again, cold reset emulation to make sure we actually can exit */
        !            70:                        fputs("Halt dialog invoked during Hatari shutdown, doing emulation cold reset...\n", stderr);
        !            71:                        Reset_Cold();
        !            72:                } else {
        !            73:                        bQuitProgram = true;
        !            74:                }
        !            75:        }
        !            76:        SDL_ShowCursor(show);
        !            77: #if WITH_SDL2
        !            78:        SDL_SetRelativeMouseMode(mode);
        !            79: #endif
        !            80: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.