foxygit / doom Log in
commit ff61aa8695321e21b349583b4b43f19084d870c4
Author:     Fabian Greffrath <fabian@greffrath.com>
AuthorDate: Mon Nov 2 13:48:32 2015 +0100
Commit:     Fabian Greffrath <fabian@greffrath.com>
CommitDate: Mon Nov 2 13:48:32 2015 +0100

    disk icon: Move check for accumulated read bytes to i_video.c
---
 src/i_video.c | 12 +++++++++++-
 src/i_video.h |  2 ++
 src/w_wad.c   | 20 ++------------------
 3 files changed, 15 insertions(+), 19 deletions(-)

diff --git a/src/i_video.c b/src/i_video.c
index 91b6a7f9..17d28897 100644
--- a/src/i_video.c
+++ b/src/i_video.c
@@ -175,6 +175,12 @@ int png_screenshots = 0;

 int show_diskicon = 1;

+// Only display the disk icon if more then this much bytes have been read
+// during the previous tic.
+
+static const int diskicon_threshold = 20*1024;
+int diskicon_readbytes = 0;
+
 // if true, I_VideoBuffer is screen->pixels

 static boolean native_surface;
@@ -961,12 +967,16 @@ void I_FinishUpdate (void)

     if (show_diskicon && disk_indicator == disk_on)
     {
-	V_BeginRead();
+	if (diskicon_readbytes >= diskicon_threshold)
+	{
+	    V_BeginRead();
+	}
     }
     else if (disk_indicator == disk_dirty)
     {
 	disk_indicator = disk_off;
     }
+    diskicon_readbytes = 0;

     // draw to screen

diff --git a/src/i_video.h b/src/i_video.h
index 46144d2b..0663796e 100644
--- a/src/i_video.h
+++ b/src/i_video.h
@@ -151,6 +151,8 @@ extern int screen_height;
 extern int screen_bpp;
 extern int fullscreen;
 extern int aspect_ratio_correct;
+
 extern int show_diskicon;
+extern int diskicon_readbytes;

 #endif
diff --git a/src/w_wad.c b/src/w_wad.c
index a01ef952..c26fb0f7 100644
--- a/src/w_wad.c
+++ b/src/w_wad.c
@@ -26,7 +26,6 @@

 #include "doomtype.h"

-#include "d_loop.h" // gametic
 #include "i_swap.h"
 #include "i_system.h"
 #include "i_video.h"
@@ -341,32 +340,17 @@ void W_ReadLump(lumpindex_t lump, void *dest)
 {
     int c;
     lumpinfo_t *l;
-    static int lasttic, readbytes;
-
-    // Only display the disk icon if more then this much bytes have been read
-    // during the previous tic.
-
-    const int threshold = 20*1024;

     if (lump >= numlumps)
     {
         I_Error ("W_ReadLump: %i >= numlumps", lump);
     }

-    if (gametic > lasttic)
-    {
-        lasttic = gametic;
-        readbytes = 0;
-    }
-
     l = lumpinfo[lump];

-    readbytes += l->size;
+    diskicon_readbytes += l->size;

-    if (readbytes >= threshold)
-    {
-        disk_indicator = disk_on;
-    }
+    disk_indicator = disk_on;

     c = W_Read(l->wad_file, l->position, dest, l->size);