Changeset 1481 for trunk/dll/defview.c


Ignore:
Timestamp:
Dec 13, 2009, 2:58:02 AM (16 years ago)
Author:
Gregg Young
Message:

Cleanup ShowMeltimedia and pass .wpi files to PM for opening

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/defview.c

    r1479 r1481  
    2525                to place exes before MMPM check (avoids MMPM trying to play them)
    2626  15 Nov 09 GKY Work around MMIO's falure to identify MPG files as media
     27  12 Dec 09 GKY Remove code that opened files to check if they were media types
     28                It was redundant.
     29  12 Dec 09 GKY Pass .WPI files to PM for default handling.
    2730
    2831***********************************************************************/
     
    6770PCSZ Default  = "DEFAULT";
    6871
     72/**
     73 * ShowMultimedia uses MMOS2 if available to check if files are media types
     74 * It will play them as media if they are. There are several work arounds
     75 * to handle newer media types which are misidentified or which don't play
     76 * in our default player/viewer
     77 */
     78
    6979BOOL ShowMultimedia(CHAR * filename)
    7080{
     
    7585  HMODULE MMIOModHandle = NULLHANDLE;
    7686  PMMIOIDENTIFYFILE pMMIOIdentifyFile = NULL;
    77   //PMMIOGETINFO pMMIOGetInfo = NULL;
    78   //PMMIOCLOSE pMMIOClose = NULL;
    79   //PMMIOOPEN pMMIOOpen = NULL;
    80   //MMIOINFO mmioinfo;
    81   //HMMIO hmmio;
    8287  FOURCC fccStorageSystem = 0;
    8388  MMFORMATINFO mmFormatInfo;
    84   APIRET rc; // rc1;
     89  APIRET rc;
    8590  HWND hwnd = HWND_DESKTOP;
    8691  char *p;
     
    8994    return played;
    9095
    91   /* load MMPM/2, if available. */
     96  //load MMPM/2, if available.
    9297  *loaderror = 0;
    9398  rc = DosLoadModule(loaderror, sizeof(loaderror), "MMIO", &MMIOModHandle);
     
    99104    if (DosQueryProcAddr(MMIOModHandle,
    100105                         0,
    101                          "mmioIdentifyFile", (PFN *) & pMMIOIdentifyFile)) {
     106                         "mmioIdentifyFile", (PFN *) &pMMIOIdentifyFile)) {
    102107      DosFreeModule(MMIOModHandle);
    103108      no_mmos2 = TRUE;
    104109      return played;
    105110    }
    106     /* This code seems to serve no purpose GKY 11-15-09
    107      if (DosQueryProcAddr(MMIOModHandle,
    108                          0,
    109                          "mmioGetInfo", (PFN *) & pMMIOGetInfo)) {
    110       DosFreeModule(MMIOModHandle);
    111       no_mmos2 = TRUE;
    112       return played;
    113     }
    114     if (DosQueryProcAddr(MMIOModHandle,
    115                          0,
    116                          "mmioClose", (PFN *) & pMMIOClose)) {
    117       DosFreeModule(MMIOModHandle);
    118       no_mmos2 = TRUE;
    119       return played;
    120     }
    121     if (DosQueryProcAddr(MMIOModHandle,
    122                          0,
    123                          "mmioOpen", (PFN *) & pMMIOOpen)) {
    124       DosFreeModule(MMIOModHandle);
    125       no_mmos2 = TRUE;
    126       return played;
    127     }*/
    128   }
    129 
    130   /* attempt to identify the file using MMPM/2 */
    131   //memset( &mmioinfo, '\0', sizeof(MMIOINFO) );
    132   /*Eliminate non multimedia files*/
    133   /*hmmio = pMMIOOpen(filename,
    134                     &mmioinfo,
    135                     MMIO_READ);
    136   if (!hmmio) {
    137     p = strrchr(filename, '.'); //Added to save mp3, ogg & flac which fail above test
    138     if (!p)
    139       p = ".";
    140     if (!stricmp(p, PCSZ_DOTOGG) || !stricmp(p, PCSZ_DOTMP3) || !stricmp(p, PCSZ_DOTFLAC) ||
    141          !stricmp(p, PCSZ_DOTJPG) || !stricmp(p, PCSZ_DOTJPEG)) {
    142        hmmio = pMMIOOpen(filename,
    143               &mmioinfo,
    144               MMIO_READ | MMIO_NOIDENTIFY);
    145        if (!hmmio){
    146            DosFreeModule(MMIOModHandle);
    147            return played;
    148        }
    149     }
    150     else {
    151        DosFreeModule(MMIOModHandle);
    152            return played;
    153     }
    154   }
    155   if (!hmmio) {
    156           DosFreeModule(MMIOModHandle);
    157           return played;
    158   }
    159   rc1 = pMMIOGetInfo(hmmio, &mmioinfo, 0L);*/
     111  }
    160112  memset(&mmFormatInfo, 0, sizeof(MMFORMATINFO));
    161113  mmFormatInfo.ulStructLen = sizeof(MMFORMATINFO);
    162   rc = pMMIOIdentifyFile(filename,
    163                          0L, //&mmioinfo,
    164                          &mmFormatInfo,
     114  rc = pMMIOIdentifyFile(filename, 0L, &mmFormatInfo,
    165115                         &fccStorageSystem, 0L,
    166116                         MMIO_FORCE_IDENTIFY_FF);
    167   /* free module handle */
    168   //rc1 = pMMIOClose(hmmio, 0L);
    169117  DosFreeModule(MMIOModHandle);
    170 
    171   /* if identified and not FOURCC_DOS */
    172   p = strrchr(filename, '.'); //Added to save mp3, ogg & flac which fail above test
     118  p = strrchr(filename, '.');
    173119  if (!p)
    174120    p = ".";
    175   if (!rc && (mmFormatInfo.fccIOProc != FOURCC_DOS || !stricmp(p, PCSZ_DOTMPG) ||
    176               !stricmp(p, PCSZ_DOTMPEG))) {  // MPG are identified as FOURCC_DOS
     121  /* if identified and not FOURCC_DOS  MPEGs are misidentified as DOS*/
     122  //DbgMsg(pszSrcFile, __LINE__, "FOUCC %x %s %i", mmFormatInfo.fccIOProc,
     123  //       mmFormatInfo.szDefaultFormatExt, mmFormatInfo.ulMediaType);
     124  if (!rc && (mmFormatInfo.fccIOProc != FOURCC_DOS ||
     125              !stricmp(p, PCSZ_DOTMPG) || !stricmp(p, PCSZ_DOTMPEG))) {
    177126    if (mmFormatInfo.ulMediaType == MMIO_MEDIATYPE_IMAGE &&
    178127        (mmFormatInfo.ulFlags & MMIO_CANREADTRANSLATED)) {
    179       p = strrchr(filename, '.');
    180           if (!p)
    181               p = ".";
    182           if (!stricmp(p, PCSZ_DOTJPG) || !stricmp(p, PCSZ_DOTJPEG))
    183             OpenObject(filename, Default, hwnd);  //Image fails to display these
    184           else       // is an image that can be translated
    185             RunFM2Util(PCSZ_IMAGEEXE, filename);
    186           played = TRUE;
     128      if (!stricmp(p, PCSZ_DOTJPG) || !stricmp(p, PCSZ_DOTJPEG))
     129        OpenObject(filename, Default, hwnd);  //Image fails to display these
     130      else       // is an image that can be translated
     131        RunFM2Util(PCSZ_IMAGEEXE, filename);
     132      played = TRUE;
    187133    }
    188134    else if (mmFormatInfo.ulMediaType != MMIO_MEDIATYPE_IMAGE) {
    189135        /* is a multimedia file (WAV, MID, AVI, etc.) */
    190         p = strrchr(filename, '.');
    191           if (!p)
    192               p = ".";
    193           if (!stricmp(p, PCSZ_DOTOGG) || !stricmp(p, PCSZ_DOTMP3) || !stricmp(p, PCSZ_DOTFLAC))
    194               OpenObject(filename, Default, hwnd);  //FM2Play fails to play these
    195           else
    196             RunFM2Util(PCSZ_FM2PLAYEXE, filename);
    197           played = TRUE;
     136      if (!stricmp(p, PCSZ_DOTOGG) || !stricmp(p, PCSZ_DOTMP3) || !stricmp(p, PCSZ_DOTFLAC))
     137        OpenObject(filename, Default, hwnd);  //FM2Play fails to play these
     138      else
     139        RunFM2Util(PCSZ_FM2PLAYEXE, filename);
     140      played = TRUE;
    198141    }
    199142  }
     
    214157    DefaultView(hwnd, hwndFrame, hwndParent, swp, 0, filename);
    215158}
     159
     160/**
     161 * DefaultView runs multiple checks for opening files including checking
     162 * for associations, archives, executables, help, ini, warpin, multimedia and
     163 * viewing as binary or text.
     164 */
    216165
    217166VOID DefaultView(HWND hwnd, HWND hwndFrame, HWND hwndParent, SWP * swp,
     
    323272        if (!p)
    324273          p = ".";
     274        if (!stricmp(p, ".WPI")) {
     275          OpenObject(filename, Default, hwnd);
     276          return;
     277        }
    325278        if (stricmp(p, ".INI") || !StartIniEditor(hwndParent, filename, 4)) {
    326279          if (stricmp(p, PCSZ_DOTHLP) || !ViewHelp(filename)) {
    327             if (!fCheckMM || !stricmp(p, ".DLL") || !ShowMultimedia(filename)) {
     280            if (!fCheckMM || !ShowMultimedia(filename)) {
    328281            ViewIt:
    329282              if (TestBinary(filename)) {
Note: See TracChangeset for help on using the changeset viewer.