Annotation of hatari/src/gui-sdl/dlgHalt.c, revision 1.1.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.