[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Stratagus-CVS] stratagus/src/ui ui.c
From: |
address@hidden |
Subject: |
[Stratagus-CVS] stratagus/src/ui ui.c |
Date: |
14 Jan 2004 17:19:24 +1100 |
CVSROOT: /home/strat
Module name: stratagus
Changes by: <address@hidden> 04/01/14 17:19:24
Modified files:
src/ui : ui.c
Log message:
Fixed memory leak loading the UI more than once
Patches:
Index: stratagus/src/ui/ui.c
diff -u stratagus/src/ui/ui.c:1.94 stratagus/src/ui/ui.c:1.95
--- stratagus/src/ui/ui.c:1.94 Sat Jan 10 06:58:47 2004
+++ stratagus/src/ui/ui.c Wed Jan 14 17:19:23 2004
@@ -27,7 +27,7 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
//
-// $Id: ui.c,v 1.94 2004/01/09 19:58:47 jsalmon3 Exp $
+// $Id: ui.c,v 1.95 2004/01/14 06:19:23 jsalmon3 Exp $
//@{
@@ -78,6 +78,36 @@
/**
+** Clean the user interface graphics
+*/
+local void CleanUIGraphics(UI* ui)
+{
+ MenuPanel* menupanel;
+ int i;
+
+ for (i = 0; i < ui->NumFillers; ++i) {
+ VideoSaveFree(ui->Filler[i].Graphic);
+ }
+ VideoSaveFree(ui->Resource.Graphic);
+
+ for (i = 0; i < MaxCosts + 2; ++i) {
+ VideoSaveFree(ui->Resources[i].Icon.Graphic);
+ }
+
+ VideoSaveFree(ui->InfoPanel.Graphic);
+ VideoSaveFree(ui->ButtonPanel.Graphic);
+ VideoSaveFree(ui->MenuPanel.Graphic);
+ VideoSaveFree(ui->MinimapPanel.Graphic);
+ VideoSaveFree(ui->StatusLine.Graphic);
+
+ menupanel = ui->MenuPanels;
+ while (menupanel) {
+ VideoSaveFree(menupanel->Panel.Graphic);
+ menupanel = menupanel->Next;
+ }
+}
+
+/**
** Initialize the user interface.
**
** The function looks through ::UI_Table, to find a matching user
@@ -124,8 +154,7 @@
vps[i].MapY = TheUI.Viewports[i].MapY;
}
- // FIXME: overwrites already set slots?
- // ARI: Yes, it does :(((
+ CleanUIGraphics(&TheUI);
TheUI = *UI_Table[best];
TheUI.Offset640X = (VideoWidth - 640) / 2;
@@ -658,7 +687,7 @@
int i;
CLprintf(file, "\n;;; -----------------------------------------\n");
- CLprintf(file, ";;; MODULE: ui $Id: ui.c,v 1.94 2004/01/09 19:58:47
jsalmon3 Exp $\n\n");
+ CLprintf(file, ";;; MODULE: ui $Id: ui.c,v 1.95 2004/01/14 06:19:23
jsalmon3 Exp $\n\n");
// Contrast, Brightness, Saturation
CLprintf(file, "(set-contrast! %d)\n", TheUI.Contrast);
@@ -789,31 +818,8 @@
{
int i;
int j;
- MenuPanel* menupanel;
-
- //
- // Free the graphics. FIXME: if they are shared this will
crash.
- //
- for (i = 0; i < TheUI.NumFillers; ++i) {
- VideoSaveFree(TheUI.Filler[i].Graphic);
- }
- VideoSaveFree(TheUI.Resource.Graphic);
-
- for (i = 0; i < MaxCosts + 2; ++i) {
- VideoSaveFree(TheUI.Resources[i].Icon.Graphic);
- }
- VideoSaveFree(TheUI.InfoPanel.Graphic);
- VideoSaveFree(TheUI.ButtonPanel.Graphic);
- VideoSaveFree(TheUI.MenuPanel.Graphic);
- VideoSaveFree(TheUI.MinimapPanel.Graphic);
- VideoSaveFree(TheUI.StatusLine.Graphic);
-
- menupanel = TheUI.MenuPanels;
- while (menupanel) {
- VideoSaveFree(menupanel->Panel.Graphic);
- menupanel = menupanel->Next;
- }
+ CleanUIGraphics(&TheUI);
//
// Free the available user interfaces.
@@ -843,9 +849,6 @@
free(TitleScreens);
TitleScreens = NULL;
}
-
- // FIXME: Johns: Implement this correctly or we will lose memory!
- DebugLevel0Fn("FIXME: not completely written\n");
memset(&TheUI, 0, sizeof(TheUI));
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Stratagus-CVS] stratagus/src/ui ui.c,
address@hidden <=