diff options
author | eray orçunus <erayorcunus@gmail.com> | 2020-10-09 01:19:49 +0200 |
---|---|---|
committer | eray orçunus <erayorcunus@gmail.com> | 2020-10-09 01:19:49 +0200 |
commit | ed82c55475f4cda6d1ed0644ea1609e08b5b0e64 (patch) | |
tree | fe9b8f5616adf9cf76cbdc84425c3ec3eee67a5d | |
parent | Merge branch 'miami' of https://github.com/GTAmodding/re3 into new (diff) | |
download | re3-ed82c55475f4cda6d1ed0644ea1609e08b5b0e64.tar re3-ed82c55475f4cda6d1ed0644ea1609e08b5b0e64.tar.gz re3-ed82c55475f4cda6d1ed0644ea1609e08b5b0e64.tar.bz2 re3-ed82c55475f4cda6d1ed0644ea1609e08b5b0e64.tar.lz re3-ed82c55475f4cda6d1ed0644ea1609e08b5b0e64.tar.xz re3-ed82c55475f4cda6d1ed0644ea1609e08b5b0e64.tar.zst re3-ed82c55475f4cda6d1ed0644ea1609e08b5b0e64.zip |
-rw-r--r-- | src/core/CdStreamPosix.cpp | 10 | ||||
-rw-r--r-- | src/skel/glfw/glfw.cpp | 5 |
2 files changed, 11 insertions, 4 deletions
diff --git a/src/core/CdStreamPosix.cpp b/src/core/CdStreamPosix.cpp index 04a5de4b..a6ab62bc 100644 --- a/src/core/CdStreamPosix.cpp +++ b/src/core/CdStreamPosix.cpp @@ -240,14 +240,17 @@ CdStreamRead(int32 channel, void *buffer, uint32 offset, uint32 size) CdReadInfo *pChannel = &gpReadInfo[channel]; ASSERT( pChannel != nil ); - pChannel->hFile = hImage - 1; if ( pChannel->nSectorsToRead != 0 || pChannel->bReading ) { + if (pChannel->nSectorOffset == _GET_OFFSET(offset) && pChannel->nSectorsToRead >= size) + return STREAM_SUCCESS; + flushStream[channel] = 1; CdStreamSync(channel); //return STREAM_NONE; } + pChannel->hFile = hImage - 1; pChannel->nStatus = STREAM_NONE; pChannel->nSectorOffset = _GET_OFFSET(offset); pChannel->nSectorsToRead = size; @@ -316,7 +319,7 @@ CdStreamSync(int32 channel) if (flushStream[channel]) { #ifdef ONE_THREAD_PER_CHANNEL pChannel->nSectorsToRead = 0; - pthread_kill(pChannel->pChannelThread, SIGINT); + pthread_kill(pChannel->pChannelThread, SIGUSR1); if (pChannel->bReading) { pChannel->bLocked = true; sem_wait(pChannel->pDoneSemaphore); @@ -325,8 +328,9 @@ CdStreamSync(int32 channel) pChannel->nSectorsToRead = 0; if (pChannel->bReading) { pChannel->bLocked = true; - pthread_kill(_gCdStreamThread, SIGINT); + pthread_kill(_gCdStreamThread, SIGUSR1); sem_wait(pChannel->pDoneSemaphore); + } #endif pChannel->bReading = false; diff --git a/src/skel/glfw/glfw.cpp b/src/skel/glfw/glfw.cpp index 74330141..0f520cad 100644 --- a/src/skel/glfw/glfw.cpp +++ b/src/skel/glfw/glfw.cpp @@ -1228,7 +1228,9 @@ void terminateHandler(int sig, siginfo_t *info, void *ucontext) { } void dummyHandler(int sig){ + // Don't kill the app pls } + #endif void resizeCB(GLFWwindow* window, int width, int height) { @@ -1475,9 +1477,10 @@ main(int argc, char *argv[]) act.sa_flags = SA_SIGINFO; sigaction(SIGTERM, &act, NULL); struct sigaction sa; + sigemptyset(&sa.sa_mask); sa.sa_handler = dummyHandler; sa.sa_flags = 0; - sigaction(SIGINT, &sa, NULL); // Needed for CdStreamPosix + sigaction(SIGUSR1, &sa, NULL); // Needed for CdStreamPosix #endif /* |