Changeset 1268 for trunk/dll/systemf.c


Ignore:
Timestamp:
Oct 31, 2008, 4:19:47 AM (17 years ago)
Author:
Gregg Young
Message:

Added a thread to monitor completion of unarchive to send message to open viewer fix memory allocate/free issues. It appears that it fixes ticket 58

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/systemf.c

    r1252 r1268  
    6060
    6161static PSZ pszSrcFile = __FILE__;
     62
     63HEV hWaitChildSem;
    6264
    6365//static HAPP Exec(HWND hwndNotify, BOOL child, char *startdir, char *env,
     
    690692  static char szTermQName[30];
    691693  static HQUEUE hTermQ;
    692   static HEV hTermQSem;
     694  //static HEV hTermQSem;
    693695
    694696  if (pszDirectory && *pszDirectory) {
     
    10781080          }
    10791081          else {
    1080             rc = DosCreateEventSem(NULL,(PHEV)&hTermQSem,0,FALSE);
     1082            rc = DosCreateEventSem(NULL,(PHEV)&hWaitChildSem,0,FALSE);
    10811083            if (rc) {
    1082                 hTermQSem = (HEV)0;     // Try to survive
     1084                hWaitChildSem = (HEV)0;     // Try to survive
    10831085                DosCloseQueue(hTermQ);
    10841086                hTermQ = (HQUEUE)0;     // Try to survive
    10851087                DosExitCritSec();
    1086                 Dos_Error(MB_ENTER,rc,HWND_DESKTOP,pszSrcFile,__LINE__,"DoCreateEventSem");
     1088                Dos_Error(MB_ENTER,rc,HWND_DESKTOP,pszSrcFile,__LINE__,"DosCreateEventSem");
    10871089            }
    10881090            // if (!rc) fprintf(stderr,"%s %d qcreated ptib %x hTermQ %x\n",__FILE__, __LINE__,ptib,hTermQ);
    10891091          }
    10901092        } // if 1st time
    1091         useTermQ = hTermQ && hTermQSem;
     1093        useTermQ = hTermQ && hWaitChildSem;
    10921094        if (!rc)
    10931095          DosExitCritSec();
     
    11301132      //     sdata.PgmInputs, sdata.TermQ, sdata.InheritOpt,
    11311133      //   sdata.SessionType, szTermQName,
    1132       //   hTermQ, hTermQSem); fflush(stdout);
     1134      //   hTermQ, hWaitChildSem); fflush(stdout);
    11331135      ret = DosStartSession(&sdata, &ulSessID, &sessPID);
    11341136
     
    11681170            if (DosSetSession(ulSessID, &sd))   // Check if session gone (i.e. finished)
    11691171              break;
    1170             if (ctr > 10) {
     1172            if (ctr > 20) {
    11711173              //   printf("%s %d thread 0x%x showing slow sess %u pid 0x%x\n",
    11721174              //        __FILE__, __LINE__,ptib->tib_ordinal,ulSessID,sessPID); fflush(stdout); // 12 Mar 07 SHL
     
    11811183            if (ctr < 20) {
    11821184              rc = DosReadQueue(hTermQ, &rq, &ulLength, (PPVOID)&pTermInfo, 0,
    1183                                 DCWW_NOWAIT, &bPriority, hTermQSem);
     1185                                DCWW_NOWAIT, &bPriority, hWaitChildSem);
    11841186              if (rc == ERROR_QUE_EMPTY) {
    11851187                DosSleep(50);//05 Aug 07 GKY 100
     
    12041206            }
    12051207
    1206             //  printf("%s %d DosReadQueue thread 0x%x sess %u sessRC %u rq.pid 0x%x rq.data 0x%x\n",
    1207             //       __FILE__, __LINE__,ptib->tib_ordinal,pTermInfo->usSessID,pTermInfo->usRC,rq.pid, rq.ulData); fflush(stdout);
    1208 
    1209             if (pTermInfo->usSessID == ulSessID)
    1210               break;                    // Our session is done
     1208              //printf("%s %d DosReadQueue thread 0x%x sess %u sessRC %u rq.pid 0x%x rq.data 0x%x\n",
     1209              //     __FILE__, __LINE__,ptib->tib_ordinal,pTermInfo->usSessID,pTermInfo->usRC,rq.pid, rq.ulData); fflush(stdout);
     1210
     1211            if (pTermInfo->usSessID == ulSessID) {
     1212              DosPostEventSem(hWaitChildSem);
     1213                break;                    // Our session is done
     1214            }
    12111215
    12121216            // Requeue session for other thread
Note: See TracChangeset for help on using the changeset viewer.