Ignore:
Timestamp:
Jul 26, 2002, 12:47:19 PM (23 years ago)
Author:
sandervl
Message:

keep suspend count for threads

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/hmthread.cpp

    r8877 r8919  
    1 /* $Id: hmthread.cpp,v 1.14 2002-07-15 14:28:51 sandervl Exp $ */
     1/* $Id: hmthread.cpp,v 1.15 2002-07-26 10:47:19 sandervl Exp $ */
    22
    33/*
     
    9494    if(teb) {
    9595        //store thread id in TEB
    96         teb->o.odin.threadId = *lpIDThread;
    97     }
     96        teb->o.odin.threadId  = *lpIDThread;
     97        teb->o.odin.dwSuspend = (fdwCreate & CREATE_SUSPENDED) ? 1 : 0;
     98    }
     99    else DebugInt3();
     100
    98101    dprintf(("CreateThread created %08x, id %x", pHMHandleData->hHMHandle, *lpIDThread));
    99102 
     
    104107DWORD HMDeviceThreadClass::SuspendThread(HANDLE hThread, PHMHANDLEDATA pHMHandleData)
    105108{
    106     dprintf(("SuspendThread %08xh)\n", pHMHandleData->hHMHandle));
    107 
    108     return O32_SuspendThread(pHMHandleData->hHMHandle);
     109    DWORD dwSuspend;
     110
     111    TEB *teb = GetTEBFromThreadHandle(hThread);
     112    if(teb) {
     113        teb->o.odin.dwSuspend++;
     114        dprintf(("SuspendThread %08xh): count %d", pHMHandleData->hHMHandle, teb->o.odin.dwSuspend));
     115    }
     116    dwSuspend = O32_SuspendThread(pHMHandleData->hHMHandle);
     117    if(dwSuspend == -1) {
     118        teb->o.odin.dwSuspend--;
     119        dprintf(("!ERROR!: SuspendThread FAILED"));
     120    }
     121    return dwSuspend;
     122}
     123//******************************************************************************
     124//******************************************************************************
     125DWORD HMDeviceThreadClass::ResumeThread(HANDLE hThread, PHMHANDLEDATA pHMHandleData)
     126{
     127    DWORD dwSuspend;
     128    TEB *teb = GetTEBFromThreadHandle(hThread);
     129    if(teb) {
     130        teb->o.odin.dwSuspend--;
     131        dprintf(("ResumeThread (%08xh) : count %d", pHMHandleData->hHMHandle, teb->o.odin.dwSuspend));
     132    }
     133    dwSuspend = O32_ResumeThread(pHMHandleData->hHMHandle);
     134    if(dwSuspend == -1) {
     135        teb->o.odin.dwSuspend++;
     136        dprintf(("!ERROR!: ResumeThread FAILED"));
     137    }
     138    return dwSuspend;
    109139}
    110140//******************************************************************************
     
    192222    pHMHandleData->dwUserData = THREAD_TERMINATED;
    193223    return TRUE;
    194 }
    195 //******************************************************************************
    196 //******************************************************************************
    197 DWORD HMDeviceThreadClass::ResumeThread(HANDLE hThread, PHMHANDLEDATA pHMHandleData)
    198 {
    199     dprintf(("ResumeThread (%08xh)\n",
    200              pHMHandleData->hHMHandle));
    201 
    202     return O32_ResumeThread(pHMHandleData->hHMHandle);
    203224}
    204225//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.