[PATCH 2/3] dmime: The descriptor is already parsed for the segment form

Michael Stefaniuc mstefani at winehq.org
Thu Mar 15 19:32:25 CDT 2018


Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
---
 dlls/dmime/dmutils.c | 55 ----------------------------------------------------
 dlls/dmime/dmutils.h |  2 --
 dlls/dmime/segment.c | 36 ++--------------------------------
 3 files changed, 2 insertions(+), 91 deletions(-)

diff --git a/dlls/dmime/dmutils.c b/dlls/dmime/dmutils.c
index 75a62a4e8e..9bb8df366b 100644
--- a/dlls/dmime/dmutils.c
+++ b/dlls/dmime/dmutils.c
@@ -92,61 +92,6 @@ HRESULT IDirectMusicUtils_IPersistStream_ParseDescGeneric (DMUS_PRIVATE_CHUNK* p
   return S_OK;
 }
 
-HRESULT IDirectMusicUtils_IPersistStream_ParseUNFOGeneric (DMUS_PRIVATE_CHUNK* pChunk, IStream* pStm, LPDMUS_OBJECTDESC pDesc) {
-
-  LARGE_INTEGER liMove; /* used when skipping chunks */
-
-  /**
-   * don't ask me why, but M$ puts INFO elements in UNFO list sometimes
-   * (though strings seem to be valid unicode) 
-   */
-  switch (pChunk->fccID) {
-
-  case mmioFOURCC('I','N','A','M'):
-  case DMUS_FOURCC_UNAM_CHUNK: {
-    TRACE(": name chunk\n");
-    pDesc->dwValidData |= DMUS_OBJ_NAME;
-    IStream_Read (pStm, pDesc->wszName, pChunk->dwSize, NULL);
-    TRACE(" - wszName: %s\n", debugstr_w(pDesc->wszName));
-    break;
-  }
-
-  case mmioFOURCC('I','A','R','T'):
-  case DMUS_FOURCC_UART_CHUNK: {
-    TRACE(": artist chunk (ignored)\n");
-    liMove.QuadPart = pChunk->dwSize;
-    IStream_Seek (pStm, liMove, STREAM_SEEK_CUR, NULL);
-    break;
-  }
-  case mmioFOURCC('I','C','O','P'):
-  case DMUS_FOURCC_UCOP_CHUNK: {
-    TRACE(": copyright chunk (ignored)\n");
-    liMove.QuadPart = pChunk->dwSize;
-    IStream_Seek (pStm, liMove, STREAM_SEEK_CUR, NULL);
-    break;
-  }
-  case mmioFOURCC('I','S','B','J'):
-  case DMUS_FOURCC_USBJ_CHUNK: {
-    TRACE(": subject chunk (ignored)\n");
-    liMove.QuadPart = pChunk->dwSize;
-    IStream_Seek (pStm, liMove, STREAM_SEEK_CUR, NULL);
-    break;
-  }
-  case mmioFOURCC('I','C','M','T'):
-  case DMUS_FOURCC_UCMT_CHUNK: {
-    TRACE(": comment chunk (ignored)\n");
-    liMove.QuadPart = pChunk->dwSize;
-    IStream_Seek (pStm, liMove, STREAM_SEEK_CUR, NULL);
-    break;
-  }
-  default:
-    /* not handled */
-    return S_FALSE;
-  }
-
-  return S_OK;
-}
-
 HRESULT IDirectMusicUtils_IPersistStream_ParseReference (LPPERSISTSTREAM iface, DMUS_PRIVATE_CHUNK* pChunk, IStream* pStm, IDirectMusicObject** ppObject) {
   DMUS_PRIVATE_CHUNK Chunk;
   DWORD ListSize[3], ListCount[3];
diff --git a/dlls/dmime/dmutils.h b/dlls/dmime/dmutils.h
index e2902875dc..187c9ed3d4 100644
--- a/dlls/dmime/dmutils.h
+++ b/dlls/dmime/dmutils.h
@@ -30,8 +30,6 @@ typedef struct _DMUS_PRIVATE_CHUNK {
 /**
  * Parsing utilities
  */
-extern HRESULT IDirectMusicUtils_IPersistStream_ParseDescGeneric (DMUS_PRIVATE_CHUNK* pChunk, IStream* pStm, LPDMUS_OBJECTDESC pDesc) DECLSPEC_HIDDEN;
-extern HRESULT IDirectMusicUtils_IPersistStream_ParseUNFOGeneric (DMUS_PRIVATE_CHUNK* pChunk, IStream* pStm, LPDMUS_OBJECTDESC pDesc) DECLSPEC_HIDDEN;
 extern HRESULT IDirectMusicUtils_IPersistStream_ParseReference (LPPERSISTSTREAM iface, DMUS_PRIVATE_CHUNK* pChunk, IStream* pStm, IDirectMusicObject** ppObject) DECLSPEC_HIDDEN;
 
 /**
diff --git a/dlls/dmime/segment.c b/dlls/dmime/segment.c
index 3122d2207a..88ca212c78 100644
--- a/dlls/dmime/segment.c
+++ b/dlls/dmime/segment.c
@@ -877,7 +877,7 @@ static HRESULT parse_segment_form(IDirectMusicSegment8Impl *This, DWORD StreamSi
 {
   HRESULT hr = E_FAIL;
   DMUS_PRIVATE_CHUNK Chunk;
-  DWORD StreamCount, ListSize[3], ListCount[3];
+  DWORD StreamCount;
   LARGE_INTEGER liMove; /* used when skipping chunks */
 
   StreamSize -= sizeof(FOURCC);
@@ -888,11 +888,7 @@ static HRESULT parse_segment_form(IDirectMusicSegment8Impl *This, DWORD StreamSi
     StreamCount += sizeof(FOURCC) + sizeof(DWORD) + Chunk.dwSize;
     TRACE_(dmfile)(": %s chunk (size = %d)", debugstr_fourcc (Chunk.fccID), Chunk.dwSize);
 
-    hr = IDirectMusicUtils_IPersistStream_ParseDescGeneric(&Chunk, pStm, &This->dmobj.desc);
-    if (FAILED(hr)) return hr;
-    
-    if (hr == S_FALSE) {
-      switch (Chunk.fccID) {
+    switch (Chunk.fccID) {
       case DMUS_FOURCC_SEGMENT_CHUNK: {
 	DWORD checkSz = sizeof(FOURCC);
 	TRACE_(dmfile)(": segment chunk\n");
@@ -938,34 +934,7 @@ static HRESULT parse_segment_form(IDirectMusicSegment8Impl *This, DWORD StreamSi
       case FOURCC_LIST: {
 	IStream_Read (pStm, &Chunk.fccID, sizeof(FOURCC), NULL);
 	TRACE_(dmfile)(": LIST chunk of type %s", debugstr_fourcc(Chunk.fccID));
-	ListSize[0] = Chunk.dwSize - sizeof(FOURCC);
-	ListCount[0] = 0;
 	switch (Chunk.fccID) {
-	case DMUS_FOURCC_UNFO_LIST: {
-	  TRACE_(dmfile)(": UNFO list\n");
-	  do {
-	    IStream_Read (pStm, &Chunk, sizeof(FOURCC)+sizeof(DWORD), NULL);
-	    ListCount[0] += sizeof(FOURCC) + sizeof(DWORD) + Chunk.dwSize;
-            TRACE_(dmfile)(": %s chunk (size = %d)", debugstr_fourcc (Chunk.fccID), Chunk.dwSize);
-
-            hr = IDirectMusicUtils_IPersistStream_ParseUNFOGeneric(&Chunk, pStm, &This->dmobj.desc);
-	    if (FAILED(hr)) return hr;
-	    
-	    if (hr == S_FALSE) {
-	      switch (Chunk.fccID) {
-	      default: {
-		TRACE_(dmfile)(": unknown chunk (irrelevant & skipping)\n");
-		liMove.QuadPart = Chunk.dwSize;
-		IStream_Seek (pStm, liMove, STREAM_SEEK_CUR, NULL);
-		break;						
-	      }
-	      }
-	    }
-
-            TRACE_(dmfile)(": ListCount[0] = %d < ListSize[0] = %d\n", ListCount[0], ListSize[0]);
-	  } while (ListCount[0] < ListSize[0]);
-	  break;
-	}
 	case DMUS_FOURCC_TRACK_LIST: {
 	  TRACE_(dmfile)(": TRACK list\n");
           hr = parse_track_list(This, &Chunk, pStm);
@@ -987,7 +956,6 @@ static HRESULT parse_segment_form(IDirectMusicSegment8Impl *This, DWORD StreamSi
 	IStream_Seek (pStm, liMove, STREAM_SEEK_CUR, NULL);
 	break;						
       }
-      }
     }
     TRACE_(dmfile)(": StreamCount[0] = %d < StreamSize[0] = %d\n", StreamCount, StreamSize);
   } while (StreamCount < StreamSize);
-- 
2.14.3




More information about the wine-devel mailing list