Changeset 1447


Ignore:
Timestamp:
Jul 23, 2009, 11:16:05 PM (16 years ago)
Author:
Gregg Young
Message:

Add an reposition semaphore releases for Tree scan code to avoid hangs; Bypass DosGetMessage for HIMEM builds.

Location:
trunk/dll
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/errutil.c

    r1402 r1447  
    3333  07 Feb 09 GKY Allow user to turn off alert and/or error beeps in settings notebook.
    3434  08 Mar 09 GKY Remove Dos_Error2 (unused) and Runtime_Error2 (no advantage over using Runtime_Error)
     35  23 Jul 09 GKY Bypass DosGetMessage for HIMEM builds (it traps)
    3536
    3637***********************************************************************/
     
    120121  ULONG action;                         // Error action
    121122  ULONG Locus;                          // Error location
     123#ifndef HIMEM
    122124  ULONG ulMsgLen;
    123125  CHAR *pszMsgStart;
    124126  CHAR *psz;
     127#endif
    125128  va_list va;
    126129
     
    153156          GetPString(IDS_ERRCLASS1TEXT + (Class - 1)),
    154157          GetPString(IDS_ERRACTION1TEXT + (action - 1)),
    155           GetPString(IDS_ERRLOCUS1TEXT + (Locus - 1)));
     158          GetPString(IDS_ERRLOCUS1TEXT + (Locus - 1)));
     159#ifndef HIMEM
    156160  pszMsgStart = szMsg + strlen(szMsg) + 1;
    157161  // Get message leaving space for NL separator
    158   if (!DosGetMessage
    159       (NULL, 0L, (PCHAR) pszMsgStart + 1, 1024, ulRC, "OSO001.MSG", &ulMsgLen)
     162  if (!DosGetMessage(NULL, 0L, (PCHAR) pszMsgStart + 1, 1024, ulRC, "OSO001.MSG", &ulMsgLen)
    160163      || !DosGetMessage(NULL, 0L, (PCHAR) pszMsgStart + 1, 1024, ulRC,
    161164                        "OSO001H.MSG", &ulMsgLen)) {
     
    185188    }
    186189  }
     190#endif
    187191
    188192  return showMsg(mb_type | MB_ICONEXCLAMATION, hwndOwner, GetPString(IDS_DOSERR2TEXT),
  • trunk/dll/filldir.c

    r1446 r1447  
    16371637  fDummy = FALSE;
    16381638  DosPostEventSem(CompactSem);
     1639  DosReleaseMutexSem(hmtFillingTreeCnr);
    16391640
    16401641  {
  • trunk/dll/treecnr.c

    r1446 r1447  
    857857      DosRequestMutexSem(hmtFillingTreeCnr, SEM_INDEFINITE_WAIT);
    858858      FillTreeCnr(dcd->hwndCnr, dcd->hwndParent);
    859       DosReleaseMutexSem(hmtFillingTreeCnr);
    860859      if (fOkayMinimize) {
    861860        PostMsg(dcd->hwndCnr, UM_MINIMIZE, MPVOID, MPVOID);
     
    19041903            DosBeep(50, 100);
    19051904          if (hwndStatus)
    1906             WinSetWindowText(hwndStatus, GetPString(IDS_RESCANSUGTEXT));
     1905            WinSetWindowText(hwndStatus, GetPString(IDS_RESCANSUGTEXT));
     1906          DosReleaseMutexSem(hmtFillingTreeCnr);
    19071907          return 0;
    19081908        }
     
    19231923              }
    19241924            } // for
    1925             RemoveCnrItems(hwnd, pciP, 1, CMA_FREE | CMA_INVALIDATE);
     1925            RemoveCnrItems(hwnd, pciP, 1, CMA_FREE | CMA_INVALIDATE);
     1926            DosReleaseMutexSem(hmtFillingTreeCnr);
    19261927            return 0;
    19271928          }
     
    19941995            UnFlesh(hwnd, pci);
    19951996            PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
    1996             PostMsg(hwnd, UM_SETUP2, MPFROMP(pci), MPFROMLONG(status));
     1997            PostMsg(hwnd, UM_SETUP2, MPFROMP(pci), MPFROMLONG(status));
     1998            DosReleaseMutexSem(hmtFillingTreeCnr);
    19971999            return 0;
    19982000          }
     
    20162018            if ((shiftstate & (KC_CTRL | KC_ALT)) == (KC_CTRL | KC_ALT)) {
    20172019              PostMsg(hwnd,
    2018                       WM_COMMAND, MPFROM2SHORT(IDM_SHOWALLFILES, 0), MPVOID);
     2020                      WM_COMMAND, MPFROM2SHORT(IDM_SHOWALLFILES, 0), MPVOID);
     2021              DosReleaseMutexSem(hmtFillingTreeCnr);
    20192022              return 0;
    20202023            }
    20212024            if ((shiftstate & (KC_CTRL | KC_SHIFT)) == (KC_CTRL | KC_SHIFT)) {
    2022               OpenObject(pci->pszFileName, Settings, dcd->hwndFrame);
     2025              OpenObject(pci->pszFileName, Settings, dcd->hwndFrame);
     2026              DosReleaseMutexSem(hmtFillingTreeCnr);
    20232027              return 0;
    20242028            }
    20252029            if (!(shiftstate & (KC_CTRL | KC_SHIFT))) {
    20262030              if (!ParentIsDesktop(hwnd, dcd->hwndParent)) {
    2027                 if (FindDirCnrByName(pci->pszFileName, TRUE))
    2028                   return 0;
     2031                if (FindDirCnrByName(pci->pszFileName, TRUE)) {
     2032                  DosReleaseMutexSem(hmtFillingTreeCnr);
     2033                  return 0;
     2034                }
    20292035              }
    20302036            }
     
    20482054              }
    20492055              OpenObject(pci->pszFileName, s, dcd->hwndFrame);
     2056              DosReleaseMutexSem(hmtFillingTreeCnr);
    20502057              return 0;
    20512058            }
Note: See TracChangeset for help on using the changeset viewer.