Changeset 1455 for trunk/dll/common.c


Ignore:
Timestamp:
Sep 15, 2009, 4:43:55 AM (16 years ago)
Author:
Steven Levine
Message:

Blink thread LEDs while worker threads are working
Drop expermental code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/common.c

    r1444 r1455  
    2727  08 Mar 09 GKY Additional strings move to PCSZs in init.c
    2828  22 Jul 09 GKY Drivebar enhancements add refresh removable, rescan all drives, drive button
    29                 loads drive root directory in directory container or expands drive tree
    30                 and rescans drive in tree container depending on container focus, greyed out
    31                 inappropriate menu context choices
    32 
     29  22 Jul 09 GKY Drivebar enhancements add refresh removable, rescan all drives, drive button
     30                loads drive root directory in directory container or expands drive tree
     31                and rescans drive in tree container depending on container focus, greyed out
     32                inappropriate menu context choices
     33  14 Sep 09 SHL Blink thread LEDs while threads working
    3334
    3435***********************************************************************/
     
    238239    if (!hwndTmp)
    239240      Win_Error(hwnd, hwnd, pszSrcFile, __LINE__,
    240                 PCSZ_WINCREATEWINDOW);
     241                PCSZ_WINCREATEWINDOW);
    241242  } // for
    242243}
     
    265266                  hwnd,
    266267                  SetDrvProc,
    267                   FM3ModHandle, DVS_FRAME, MPFROMP(dv)) && hwndTree)
     268                  FM3ModHandle, DVS_FRAME, MPFROMP(dv)) && hwndTree)
    268269      if (!PostMsg(hwndTree, UM_SHOWME, MPFROMP(dv), MPVOID))
    269         PostMsg(hwndTree, WM_COMMAND, MPFROM2SHORT(IDM_UPDATE, 0), MPVOID);
     270        PostMsg(hwndTree, WM_COMMAND, MPFROM2SHORT(IDM_UPDATE, 0), MPVOID);
    270271    break;
    271272  case IDM_SIZES:
     
    283284      hObject = WinQueryObject("<XWP_TRASHCAN>");
    284285      if (hObject != NULLHANDLE && fTrashCan) {
    285         hwndDesktop = WinQueryDesktopWindow((HAB) 0, NULLHANDLE);
    286         WinSetFocus(HWND_DESKTOP, hwndDesktop);
    287         WinOpenObject(hObject, 0, TRUE);
     286        hwndDesktop = WinQueryDesktopWindow((HAB) 0, NULLHANDLE);
     287        WinSetFocus(HWND_DESKTOP, hwndDesktop);
     288        WinOpenObject(hObject, 0, TRUE);
    288289      }
    289290    else
    290291      WinDlgBox(HWND_DESKTOP,
    291                 hwnd,
    292                 UndeleteDlgProc,
    293                 FM3ModHandle, UNDEL_FRAME, MPFROMP(dv));
     292                hwnd,
     293                UndeleteDlgProc,
     294                FM3ModHandle, UNDEL_FRAME, MPFROMP(dv));
    294295    }
    295296    break;
     
    381382      rc = DosDevIOCtl(-1L, 8L, 0x40L, &parm, sizeof(parm), &plen, NULL, 0L, &dlen);
    382383      if (cmd == IDM_EJECT &&
    383           (fEjectFlpyScan ? TRUE : parm[1] > 1) &&
    384           (fEjectCDScan ? TRUE : !(driveflags[parm[1]] & DRIVE_CDROM)) &&
    385           (fEjectRemovableScan ? TRUE : (parm[1] < 2 || driveflags[parm[1]] & DRIVE_CDROM))) {
    386         BOOL toggleTree = FALSE;
    387  
    388         if (!hwndTree) {
    389           WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_VTREE, 0), MPVOID);
    390           toggleTree = TRUE;
    391         }
    392         WinSendMsg(hwndTree, WM_COMMAND, MPFROM2SHORT(IDM_RESCAN, 0), MPVOID);
    393         if (toggleTree)
    394           WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_VTREE, 0), MPVOID);
     384          (fEjectFlpyScan ? TRUE : parm[1] > 1) &&
     385          (fEjectCDScan ? TRUE : !(driveflags[parm[1]] & DRIVE_CDROM)) &&
     386          (fEjectRemovableScan ? TRUE : (parm[1] < 2 || driveflags[parm[1]] & DRIVE_CDROM))) {
     387        BOOL toggleTree = FALSE;
     388
     389        if (!hwndTree) {
     390          WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_VTREE, 0), MPVOID);
     391          toggleTree = TRUE;
     392        }
     393        WinSendMsg(hwndTree, WM_COMMAND, MPFROM2SHORT(IDM_RESCAN, 0), MPVOID);
     394        if (toggleTree)
     395          WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_VTREE, 0), MPVOID);
    395396      }
    396397    }
     
    402403
    403404      if (!hwndTree) {
    404         WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_VTREE, 0), MPVOID);
    405         toggleTree = TRUE;
     405        WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_VTREE, 0), MPVOID);
     406        toggleTree = TRUE;
    406407      }
    407408      WinSendMsg(hwndTree, WM_COMMAND, MPFROM2SHORT(IDM_RESCAN, 0), MPVOID);
    408409      if (toggleTree)
    409         WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_VTREE, 0), MPVOID);
     410        WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_VTREE, 0), MPVOID);
    410411    }
    411412    break;
     
    416417
    417418      if (!hwndTree) {
    418         WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_VTREE, 0), MPVOID);
    419         toggleTree = TRUE;
     419        WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_VTREE, 0), MPVOID);
     420        toggleTree = TRUE;
    420421      }
    421422      WinSendMsg(hwndTree, WM_COMMAND, MPFROM2SHORT(IDM_REFRESHREMOVABLES, 0), MPVOID);
    422423      if (toggleTree)
    423         WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_VTREE, 0), MPVOID);
     424        WinSendMsg(hwndMain, WM_COMMAND, MPFROM2SHORT(IDM_VTREE, 0), MPVOID);
    424425    }
    425426    break;
     
    453454  if (!hwndStatus)
    454455    Win_Error(hwndFrame, hwnd, pszSrcFile, __LINE__,
    455               PCSZ_WINCREATEWINDOW);
     456              PCSZ_WINCREATEWINDOW);
    456457
    457458  // Right status window
     
    475476  if (!hwndStatus2)
    476477    Win_Error(hwndFrame, hwnd, pszSrcFile, __LINE__,
    477               PCSZ_WINCREATEWINDOW);
     478              PCSZ_WINCREATEWINDOW);
    478479
    479480  hwndAttr = WinCreateWindow(hwndFrame,
     
    494495  if (!hwndAttr)
    495496    Win_Error(hwndFrame, hwnd, pszSrcFile, __LINE__,
    496               PCSZ_WINCREATEWINDOW);
     497              PCSZ_WINCREATEWINDOW);
    497498
    498499  hwndDate = WinCreateWindow(hwndFrame,
     
    513514  if (!hwndDate)
    514515    Win_Error(hwndFrame, hwnd, pszSrcFile, __LINE__,
    515               PCSZ_WINCREATEWINDOW);
     516              PCSZ_WINCREATEWINDOW);
    516517
    517518  hwndName = WinCreateWindow(hwndFrame,
     
    532533  if (!hwndName)
    533534    Win_Error(hwndFrame, hwnd, pszSrcFile, __LINE__,
    534               PCSZ_WINCREATEWINDOW);
     535              PCSZ_WINCREATEWINDOW);
    535536
    536537  hwndTmp = WinCreateWindow(hwndFrame,
     
    550551  if (!hwndTmp)
    551552    Win_Error(hwndFrame, hwnd, pszSrcFile, __LINE__,
    552               PCSZ_WINCREATEWINDOW);
     553              PCSZ_WINCREATEWINDOW);
    553554
    554555  hwndBack = WinCreateWindow(hwndFrame,
     
    561562                             (swp->cy -
    562563                              WinQuerySysValue(HWND_DESKTOP,
    563                                                SV_CYSIZEBORDER)) -
    564                              (DRIVE_BUTTON_HEIGHT),
     564                                               SV_CYSIZEBORDER)) -
     565                             (DRIVE_BUTTON_HEIGHT),
    565566                             swp->cx -
    566567                             (WinQuerySysValue(HWND_DESKTOP,
     
    571572  if (!hwndBack)
    572573    Win_Error(hwndFrame, hwnd, pszSrcFile, __LINE__,
    573               PCSZ_WINCREATEWINDOW);
     574              PCSZ_WINCREATEWINDOW);
    574575
    575576  hwndLED = WinCreateWindow(hwndFrame,
    576577                            WC_LED,
    577                             "#920",
     578                            "#920",     // LEDOFF_BMP
    578579                            WS_VISIBLE | SS_BITMAP,
    579580                            swp->cx - 58,
     
    583584  if (!hwndLED)
    584585    Win_Error(hwndFrame, hwnd, pszSrcFile, __LINE__,
    585               PCSZ_WINCREATEWINDOW);
     586              PCSZ_WINCREATEWINDOW);
    586587
    587588  hwndLEDHdr = WinCreateWindow(hwndFrame,
     
    597598  if (!hwndLEDHdr)
    598599    Win_Error(hwndFrame, hwnd, pszSrcFile, __LINE__,
    599               PCSZ_WINCREATEWINDOW);
     600              PCSZ_WINCREATEWINDOW);
    600601
    601602  hwndAutoview = WinCreateWindow(hwndFrame,
     
    618619  if (!hwndAutoview)
    619620    Win_Error(hwndFrame, hwnd, pszSrcFile, __LINE__,
    620               PCSZ_WINCREATEWINDOW);
     621              PCSZ_WINCREATEWINDOW);
    621622
    622623  hwndAutoMLE = WinCreateWindow(hwndFrame,
     
    640641  if (!hwndAutoMLE)
    641642    Win_Error(hwndFrame, hwnd, pszSrcFile, __LINE__,
    642               PCSZ_WINCREATEWINDOW);
     643              PCSZ_WINCREATEWINDOW);
    643644
    644645  oldproc = WinSubclassWindow(hwndAutoMLE, AutoViewProc);
     
    647648}
    648649
     650/**
     651 * Called by MainWndProc and MainWndProc2 to process messages
     652 * common to both fm/2 and fm/2 lite main window
     653 */
     654
    649655MRESULT EXPENTRY CommonMainWndProc(HWND hwnd, ULONG msg, MPARAM mp1,
    650656                                   MPARAM mp2)
    651657{
     658  static BOOL fLedOn;
     659  static LONG cWorkerThreads;
     660
    652661  switch (msg) {
    653662  case UM_THREADUSE:
    654663    if (hbmLEDon && hbmLEDoff) {
    655       static LONG threaduse;
    656       CHAR ts[33];
    657 
     664      CHAR sz[33];
    658665      if (mp1) {
    659         threaduse++;
    660         if (threaduse == 1)
     666        cWorkerThreads++;
     667        // 13 Sep 09 SHL fixme to be SMP safe
     668        if (cWorkerThreads == 1) {
     669          if (!WinStartTimer(WinQueryAnchorBlock(hwnd), hwnd, ID_LED_TIMER, 500))
     670            Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, "WinStartTimer");
     671          fLedOn = TRUE;
    661672          WinSendMsg(hwndLED, SM_SETHANDLE, MPFROMLONG(hbmLEDon), MPVOID);
    662       }
    663       else {
    664         threaduse--;
    665         if (threaduse <= 0) {
    666           threaduse = 0;
    667           WinSendMsg(hwndLED, SM_SETHANDLE, MPFROMLONG(hbmLEDoff), MPVOID);
    668673        }
    669674      }
    670       ltoa(threaduse, ts, 10);
    671       WinSetWindowText(hwndLEDHdr, ts);
     675      else if (cWorkerThreads > 0)
     676        cWorkerThreads--;
     677
     678      ltoa(cWorkerThreads, sz, 10);
     679      WinSetWindowText(hwndLEDHdr, sz);
    672680      DosSleep(0);
    673681    }
    674682    return 0;
     683
     684  case WM_TIMER:
     685    fLedOn = !fLedOn;
     686    WinSendMsg(hwndLED,
     687               SM_SETHANDLE,
     688               fLedOn ? MPFROMLONG(hbmLEDon) : MPFROMLONG(hbmLEDoff),
     689               MPVOID);
     690    if (!fLedOn && cWorkerThreads == 0) {
     691      if (!WinStopTimer(WinQueryAnchorBlock(hwnd), hwnd, ID_LED_TIMER))
     692          Win_Error(hwnd, hwnd, pszSrcFile, __LINE__, "WinStartTimer");
     693    }
     694    break;
    675695
    676696  case UM_LOADFILE:
Note: See TracChangeset for help on using the changeset viewer.