changeset 2446:8193f62a541d

Remove some useless complexity from resource system .. could remove more.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 10 Mar 2020 00:20:05 +0200
parents fa089a430121
children b0f25a42fd23
files src/dmres.c src/dmres.h
diffstat 2 files changed, 21 insertions(+), 77 deletions(-) [+]
line wrap: on
line diff
--- a/src/dmres.c	Mon Mar 09 22:37:00 2020 +0200
+++ b/src/dmres.c	Tue Mar 10 00:20:05 2020 +0200
@@ -315,6 +315,10 @@
 {
     "Stdio",
 
+    dm_stdio_fopen,
+    dm_stdio_fclose,
+    dm_stdio_preload,
+
     dm_stdio_freset,
     dm_stdio_ferror,
     dm_stdio_fseek,
@@ -325,16 +329,16 @@
     dm_stdio_fputc,
     dm_stdio_fread,
     dm_stdio_fwrite,
-
-    dm_stdio_fopen,
-    dm_stdio_fclose,
-    dm_stdio_preload
 };
 
 DMResourceOps dfStdioFHOps =
 {
     "StdioFH",
 
+    NULL,
+    NULL,
+    NULL,
+
     dm_stdio_freset,
     dm_stdio_ferror,
     dm_stdio_fseek,
@@ -346,9 +350,6 @@
     dm_stdio_fread,
     dm_stdio_fwrite,
 
-    NULL,
-    NULL,
-    NULL
 };
 #endif
 
@@ -737,6 +738,10 @@
 {
     "PackFS",
 
+    dm_pack_fopen,
+    dm_pack_fclose,
+    dm_pack_preload,
+
     dm_mem_freset,
     dm_mem_ferror,
     dm_mem_fseek,
@@ -748,9 +753,6 @@
     dm_mem_fread,
     NULL,
 
-    dm_pack_fopen,
-    dm_pack_fclose,
-    dm_pack_preload,
 };
 #endif
 
@@ -759,6 +761,10 @@
 {
     "MemIO",
 
+    NULL,
+    NULL,
+    NULL,
+
     dm_mem_freset,
     dm_mem_ferror,
     dm_mem_fseek,
@@ -769,10 +775,6 @@
     dm_mem_fputc,
     dm_mem_fread,
     dm_mem_fwrite,
-
-    NULL,
-    NULL,
-    NULL
 };
 
 
@@ -856,20 +858,7 @@
 
     // Check if the data is preloaded
     if ((ret = handle->fops->fopen(handle)) == DMERR_OK)
-    {
         dmResourceRef(handle);
-        if (handle->flags & DMF_TEMPORARY)
-        {
-            handle->flags &= ~DMF_TEMPORARY;
-            dmResourceInsert(lib, handle);
-        }
-    }
-    else
-    if (handle->flags & DMF_TEMPORARY)
-    {
-        dmResourceFree(handle);
-        *phandle = handle = NULL;
-    }
 
     dmfreset(handle);
     return ret;
@@ -966,63 +955,54 @@
 
 int dmferror(DMResource *fh)
 {
-    fh->atime = time(NULL);
     return fh->fops->ferror(fh);
 }
 
 
 int dmfseek(DMResource *fh, const off_t offset, const int whence)
 {
-    fh->atime = time(NULL);
     return fh->fops->fseek(fh, offset, whence);
 }
 
 
 off_t dmfsize(DMResource *fh)
 {
-    fh->atime = time(NULL);
     return fh->fops->fsize(fh);
 }
 
 
 off_t dmftell(DMResource *fh)
 {
-    fh->atime = time(NULL);
     return fh->fops->ftell(fh);
 }
 
 
 BOOL dmfeof(DMResource *fh)
 {
-    fh->atime = time(NULL);
     return fh->fops->feof(fh);
 }
 
 
 int dmfgetc(DMResource *fh)
 {
-    fh->atime = time(NULL);
     return fh->fops->fgetc(fh);
 }
 
 
 int dmfputc(const int val, DMResource *fh)
 {
-    fh->atime = time(NULL);
     return fh->fops->fputc(val, fh);
 }
 
 
 size_t dmfread(void *ptr, size_t size, size_t nmemb, DMResource *fh)
 {
-    fh->atime = time(NULL);
     return fh->fops->fread(ptr, size, nmemb, fh);
 }
 
 
 size_t dmfwrite(const void *ptr, size_t size, size_t nmemb, DMResource *fh)
 {
-    fh->atime = time(NULL);
     return fh->fops->fwrite(ptr, size, nmemb, fh);
 }
 
@@ -1058,7 +1038,6 @@
     int res;
 
     dmLockLibMutex(node->lib);
-    node->atime = time(NULL);
     res = ++node->refcount;
     dmUnlockLibMutex(node->lib);
 
@@ -1310,33 +1289,6 @@
 }
 
 
-void dmResourcePrune(DMResourceLib *lib, const int agems, int const flags)
-{
-    DMResource *node;
-    const int stamp = time(NULL);
-    dmLockLibMutex(lib);
-
-    for (node = lib->resources; node != NULL; node = node->next)
-    {
-        // Check if node has refcount of 0 and is
-        // not marked as persistent resource
-        if (node->refcount == 0 &&
-            (node->flags & DMF_PERSIST) == 0 &&
-            (node->flags & (DMF_LOADED_RES | DMF_LOADED_RAW)))
-        {
-            if (((flags & DMPRUNE_ATIME) && stamp - node->atime >= agems) ||
-                ((flags & DMPRUNE_MTIME) && stamp - node->mtime >= agems))
-            {
-                dmResourceFreeResData(node);
-                dmResourceFreeRawData(node);
-            }
-        }
-    }
-
-    dmUnlockLibMutex(lib);
-}
-
-
 /* Helper resource access routines
  */
 int dmvfprintf(DMResource *fh, const char *fmt, va_list ap)
--- a/src/dmres.h	Mon Mar 09 22:37:00 2020 +0200
+++ b/src/dmres.h	Tue Mar 10 00:20:05 2020 +0200
@@ -22,12 +22,6 @@
  */
 enum
 {
-    DMPRUNE_ATIME   = 0x0001,
-    DMPRUNE_MTIME   = 0x0002,
-};
-
-enum
-{
     DRF_USE_PACK    = 0x0001,
     DRF_USE_STDIO   = 0x0002,
     DRF_PRELOAD_RAW = 0x0004,
@@ -38,7 +32,6 @@
 {
     DMF_PERSIST     = 0x0001, // Persist loaded RAW resource
     DMF_COMPRESSED  = 0x0002, // Resource is compressed in PACK file, otherwise raw
-    DMF_TEMPORARY   = 0x0004,
     DMF_PACK_MASK   = 0x00ff, // Mask for flags that may be specified in PACK
 
     DMF_UNALLOCATED = 0x1000, // The raw data is not allocated, so do not free it
@@ -57,8 +50,6 @@
 typedef struct DMResource
 {
     // Timestamps (in seconds from time())
-    int    mtime,              // When resource was loaded
-           atime;              // Last accessed (dmResourceRef()/unref)
     int    refcount;           // Reference count
 
     int    flags;              // Resource flags (DMF_*)
@@ -116,6 +107,10 @@
 {
     char    *name;
 
+    int     (*fopen)(DMResource *);
+    void    (*fclose)(DMResource *);
+    int     (*preload)(DMResource *);
+
     int     (*freset)(DMResource *);
     int     (*ferror)(DMResource *);
     int     (*fseek)(DMResource *, const off_t, const int);
@@ -127,9 +122,6 @@
     size_t  (*fread)(void *, const size_t, const size_t, DMResource *);
     size_t  (*fwrite)(const void *, const size_t, const size_t, DMResource *);
 
-    int     (*fopen)(DMResource *);
-    void    (*fclose)(DMResource *);
-    int     (*preload)(DMResource *);
 } DMResourceOps;
 
 
@@ -138,7 +130,6 @@
 int          dmResourcesInit(DMResourceLib **lib, const char *filename, const char *path, const int flags, int (*classifier)(DMResource *));
 int          dmResourcesClose(DMResourceLib *lib);
 
-void         dmResourcesPrune(DMResourceLib *lib, const int agems, int const flags);
 int          dmResourcesPreload(DMResourceLib *lib, BOOL start, int *loaded, int *total);
 
 DMResource * dmResourceNew(DMResourceLib *lib, const char *filename, const size_t size, const int flags);
@@ -146,6 +137,7 @@
 void         dmResourceInsert(DMResourceLib *lib, DMResource * node);
 void         dmResourceDelete(DMResourceLib *lib, DMResource * node);
 DMResource * dmResourceFind(DMResourceLib *lib, const char *filename);
+
 int          dmResourceRef(DMResource *);
 int          dmResourceUnref(DMResource *);