wine/programs/wineconsole wineconsole.c wineco ...
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Nov 3 05:32:52 CST 2005
ChangeSet ID: 21077
CVSROOT: /opt/cvs-commit
Module name: wine
Changes by: julliard at winehq.org 2005/11/03 05:32:52
Modified files:
programs/wineconsole: wineconsole.c winecon_private.h dialog.c
Log message:
Eric Pouech <eric.pouech at wanadoo.fr>
Fixed wineconsole startup when restoring registry settings.
Patch: http://cvs.winehq.org/patch.py?id=21077
Old revision New revision Changes Path
1.38 1.39 +55 -13 wine/programs/wineconsole/wineconsole.c
1.13 1.14 +1 -1 wine/programs/wineconsole/winecon_private.h
1.22 1.23 +1 -1 wine/programs/wineconsole/dialog.c
Index: wine/programs/wineconsole/wineconsole.c
diff -u -p wine/programs/wineconsole/wineconsole.c:1.38 wine/programs/wineconsole/wineconsole.c:1.39
--- wine/programs/wineconsole/wineconsole.c:1.38 3 Nov 2005 11:32:52 -0000
+++ wine/programs/wineconsole/wineconsole.c 3 Nov 2005 11:32:52 -0000
@@ -372,10 +372,9 @@ int WINECON_GrabChanges(struct inner_dat
* of server side equivalent and visual parts.
* If force is FALSE, only the changed items are modified.
*/
-void WINECON_SetConfig(struct inner_data* data,
- const struct config_data* cfg, BOOL force)
+void WINECON_SetConfig(struct inner_data* data, const struct config_data* cfg)
{
- if (force || data->curcfg.cursor_size != cfg->cursor_size ||
+ if (data->curcfg.cursor_size != cfg->cursor_size ||
data->curcfg.cursor_visible != cfg->cursor_visible)
{
CONSOLE_CURSOR_INFO cinfo;
@@ -390,23 +389,23 @@ void WINECON_SetConfig(struct inner_
/* this shall update (through notif) curcfg */
SetConsoleCursorInfo(data->hConOut, &cinfo);
}
- if (force || data->curcfg.history_size != cfg->history_size)
+ if (data->curcfg.history_size != cfg->history_size)
{
data->curcfg.history_size = cfg->history_size;
WINECON_SetHistorySize(data->hConIn, cfg->history_size);
}
- if (force || data->curcfg.history_nodup != cfg->history_nodup)
+ if (data->curcfg.history_nodup != cfg->history_nodup)
{
data->curcfg.history_nodup = cfg->history_nodup;
WINECON_SetHistoryMode(data->hConIn, cfg->history_nodup);
}
data->curcfg.menu_mask = cfg->menu_mask;
data->curcfg.quick_edit = cfg->quick_edit;
- if (force || 1 /* FIXME: font info has changed */)
+ if (1 /* FIXME: font info has changed */)
{
data->fnSetFont(data, cfg->face_name, cfg->cell_height, cfg->font_weight);
}
- if (force || data->curcfg.def_attr != cfg->def_attr)
+ if (data->curcfg.def_attr != cfg->def_attr)
{
data->curcfg.def_attr = cfg->def_attr;
SetConsoleTextAttribute(data->hConOut, cfg->def_attr);
@@ -420,8 +419,8 @@ void WINECON_SetConfig(struct inner_
* for <B> (window / ScreenBuffer)
* The Change<A><B> actually modify the <B> dimension of <A>.
*/
-#define TstSBfWidth() (force || data->curcfg.sb_width != cfg->sb_width)
-#define TstWinWidth() (force || data->curcfg.win_width != cfg->win_width)
+#define TstSBfWidth() (data->curcfg.sb_width != cfg->sb_width)
+#define TstWinWidth() (data->curcfg.win_width != cfg->win_width)
#define ChgSBfWidth() do {c.X = cfg->sb_width; \
c.Y = data->curcfg.sb_height;\
@@ -432,8 +431,8 @@ void WINECON_SetConfig(struct inner_
pos.Bottom = 0; \
SetConsoleWindowInfo(data->hConOut, FALSE, &pos);\
} while (0)
-#define TstSBfHeight() (force || data->curcfg.sb_height != cfg->sb_height)
-#define TstWinHeight() (force || data->curcfg.win_height != cfg->win_height)
+#define TstSBfHeight() (data->curcfg.sb_height != cfg->sb_height)
+#define TstWinHeight() (data->curcfg.win_height != cfg->win_height)
/* since we're going to apply height after width is done, we use width as defined
* in cfg, and not in data->curcfg because if won't be updated yet */
@@ -495,7 +494,7 @@ void WINECON_SetConfig(struct inner_
#undef ChgWinHeight
data->curcfg.exit_on_die = cfg->exit_on_die;
- if (force || data->curcfg.edition_mode != cfg->edition_mode)
+ if (data->curcfg.edition_mode != cfg->edition_mode)
{
data->curcfg.edition_mode = cfg->edition_mode;
WINECON_SetEditionMode(data->hConIn, cfg->edition_mode);
@@ -524,6 +523,48 @@ static void WINECON_Delete(struct inner_
}
/******************************************************************
+ * WINECON_GetServerConfig
+ *
+ * Fills data->curcfg with the actual configuration running in the server
+ * (getting real information on the server, and not relying on cached
+ * information in data)
+ */
+static BOOL WINECON_GetServerConfig(struct inner_data* data)
+{
+ BOOL ret;
+
+ SERVER_START_REQ(get_console_input_info)
+ {
+ req->handle = data->hConIn;
+ ret = !wine_server_call_err( req );
+ data->curcfg.history_size = reply->history_size;
+ data->curcfg.history_nodup = reply->history_mode;
+ data->curcfg.edition_mode = reply->edition_mode;
+ }
+ SERVER_END_REQ;
+ if (!ret) return FALSE;
+ SERVER_START_REQ(get_console_output_info)
+ {
+ req->handle = data->hConOut;
+ ret = !wine_server_call_err( req );
+ data->curcfg.cursor_size = reply->cursor_size;
+ data->curcfg.cursor_visible = reply->cursor_visible;
+ data->curcfg.def_attr = reply->attr;
+ data->curcfg.sb_width = reply->width;
+ data->curcfg.sb_height = reply->height;
+ data->curcfg.win_width = reply->win_right - reply->win_left + 1;
+ data->curcfg.win_height = reply->win_bottom - reply->win_top + 1;
+ }
+ SERVER_END_REQ;
+ WINECON_DumpConfig("first cfg: ", &data->curcfg);
+ data->cells = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+ data->curcfg.sb_width * data->curcfg.sb_height * sizeof(CHAR_INFO));
+ if (!data->cells) WINECON_Fatal("OOM\n");
+
+ return ret;
+}
+
+/******************************************************************
* WINECON_Init
*
* Initialisation part I. Creation of server object (console input and
@@ -613,7 +654,8 @@ static struct inner_data* WINECON_Init(H
switch ((*backend)(data))
{
case init_success:
- WINECON_SetConfig(data, &cfg, TRUE);
+ WINECON_GetServerConfig(data);
+ WINECON_SetConfig(data, &cfg);
data->curcfg.registry = cfg.registry;
WINECON_DumpConfig("fint", &data->curcfg);
return data;
Index: wine/programs/wineconsole/winecon_private.h
diff -u -p wine/programs/wineconsole/winecon_private.h:1.13 wine/programs/wineconsole/winecon_private.h:1.14
--- wine/programs/wineconsole/winecon_private.h:1.13 3 Nov 2005 11:32:52 -0000
+++ wine/programs/wineconsole/winecon_private.h 3 Nov 2005 11:32:52 -0000
@@ -85,7 +85,7 @@ extern BOOL WINECON_GetConsoleTitle(HAND
extern void WINECON_FetchCells(struct inner_data* data, int upd_tp, int upd_bm);
extern int WINECON_GrabChanges(struct inner_data* data);
extern VOID WINECON_SetConfig(struct inner_data* data,
- const struct config_data* cfg, BOOL force);
+ const struct config_data* cfg);
/* from registry.c */
extern void WINECON_RegLoad(const WCHAR* appname, struct config_data* cfg);
extern void WINECON_RegSave(const struct config_data* cfg);
Index: wine/programs/wineconsole/dialog.c
diff -u -p wine/programs/wineconsole/dialog.c:1.22 wine/programs/wineconsole/dialog.c:1.23
--- wine/programs/wineconsole/dialog.c:1.22 3 Nov 2005 11:32:52 -0000
+++ wine/programs/wineconsole/dialog.c 3 Nov 2005 11:32:52 -0000
@@ -844,7 +844,7 @@ BOOL WCUSER_GetProperties(struct inner_d
}
}
- if (modify_session) WINECON_SetConfig(data, &di.config, FALSE);
+ if (modify_session) WINECON_SetConfig(data, &di.config);
if (save) WINECON_RegSave(&di.config);
return TRUE;
More information about the wine-cvs
mailing list