From: Tangles Date: Wed, 22 Jan 2020 14:22:32 +0000 (+1100) Subject: add redraw command to redraw the banner when info might change X-Git-Tag: v1.6.1-roc-dev~34 X-Git-Url: https://skyeroc.xyz/gitweb/?a=commitdiff_plain;h=0f01f2dec300617bce7ffd38e1b84539037ebc4f;p=dgamelaunch add redraw command to redraw the banner when info might change --- diff --git a/config.l b/config.l index 73def40..52a29d0 100644 --- a/config.l +++ b/config.l @@ -138,6 +138,7 @@ play_game { yylval.i = DGLCMD_PLAYGAME; return TYPE_DGLCMD1; } play_if_exist { yylval.i = DGLCMD_PLAY_IF_EXIST; return TYPE_DGLCMD2; } submenu { yylval.i = DGLCMD_SUBMENU; return TYPE_DGLCMD1; } return { yylval.i = DGLCMD_RETURN; return TYPE_DGLCMD0; } +redraw { yylval.i = DGLCMD_REDRAW; return TYPE_DGLCMD0; } rawprint { yylval.i = DGLCMD_RAWPRINT; return TYPE_DGLCMD1; } DEFINE { return TYPE_DEFINE_GAME; } diff --git a/dgamelaunch.c b/dgamelaunch.c index 9845eba..eea98ac 100644 --- a/dgamelaunch.c +++ b/dgamelaunch.c @@ -2173,7 +2173,7 @@ int readprefs () { FILE *upf; - struct userpref **cpref = &userprefs; + struct userpref **cpref; int prefcount = 0; char buf[256]; char *p; @@ -2183,6 +2183,7 @@ readprefs () freeprefs(); upf = fopen(userpref_path, "r"); if (!upf) return -1; + cpref = &userprefs; while (fgets(buf, 256, upf)) { /* first token is 'name' - must start with letter */ /* skip over any leading non-letter garbage */ @@ -2860,6 +2861,12 @@ runmenuloop(struct dg_menu *menu) tmpopt = tmpopt->next; } } + if (redraw_banner) { + redraw_banner = 0; + freebanner(&ban); + loadbanner(menu->banner_fn, &ban); + doclear = 1; + } if (return_from_submenu) { freebanner(&ban); diff --git a/dgamelaunch.h b/dgamelaunch.h index d851612..f561f6a 100644 --- a/dgamelaunch.h +++ b/dgamelaunch.h @@ -80,6 +80,7 @@ typedef enum DGLCMD_PLAYGAME, /* play_game "foo" */ DGLCMD_PLAY_IF_EXIST, /* play_if_exist "game" "file" */ DGLCMD_SUBMENU, /* submenu "foo" */ + DGLCMD_REDRAW, /* redraw */ DGLCMD_RETURN /* return */ } dglcmd_actions; @@ -278,6 +279,7 @@ extern int set_max; extern int selected_game; extern int return_from_submenu; +extern int redraw_banner; extern struct dg_globalconfig globalconfig; diff --git a/dgl-common.c b/dgl-common.c index 0bccdeb..514b361 100644 --- a/dgl-common.c +++ b/dgl-common.c @@ -58,6 +58,7 @@ int curses_resize = 0; int selected_game = 0; int return_from_submenu = 0; +int redraw_banner = 0; char *userpref_path = NULL; mode_t default_fmode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH; @@ -411,6 +412,9 @@ dgl_exec_cmdqueue_w(struct dg_cmdpart *queue, int game, struct dg_user *me, char if (p1) runmenuloop(dgl_find_menu(p1)); break; + case DGLCMD_REDRAW: + redraw_banner = 1; + break; case DGLCMD_RETURN: return_from_submenu = 1; break;