mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-12 02:41:14 +00:00
* Fix engineConfig declaration crossing jump
This fixes the following error:
```
/src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp: In member function 'virtual MxResult MxSoundManager::Create(MxU32, MxBool)':
/src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp:119:1: error: jump to label 'done'
119 | done:
| ^~~~
/src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp:78:22: note: from here
78 | goto done;
| ^~~~
/src/isle-portable/LEGO1/omni/src/audio/mxsoundmanager.cpp:84:26: note: crosses initialization of 'ma_engine_config engineConfig'
84 | ma_engine_config engineConfig = ma_engine_config_init();
| ^~~~~~~~~~~~
```
* Fix 'invalid conversion from 'SDL_FunctionPointer' {aka 'void (*)()'} to 'void*'
* /SAFESEH:NO is a VC thing
* SDL3 is still instable
* Cannot forward declare and use enum
* Remove MusicManager from public LEGO1.DLL interface
* Copy d3d from wine git 6c5d17af07a318d754c0c21023b2d162a0d3725d
* Build d3drm-wine with 32-bit mingw
* cmake: move 3rd party targets to cmake script in 3rdparty directory
* cmake: bump minimum required CMake version to 3.25 to allow adding a subproject with SYSTEM automatically applied
An alternative would be to use SYSTEM in target_include_directories in the 3rd party cmake script.
* Add a minimal Findiniparser.cmake (not all distributions carry the upstream iniparser-config.cmake files)
* Add wine's d3drm headers
* cmake: merge ISLE_USE_DX5_LIBS into ISLE_USE_DX5
* cmake: Build all shared libraries in the binary output directory (to avoid PATH issues)
* ci: enable msys2 mingw32 build
* Disable clang-tidy on d3drm wine
* Thread functions must have SDLCALL call convention
* cmake: disable clang-tidy for miniaudio and libsmacker as well
* Hopefully fix c++ format and skip ncc naming violation
* clang-format violations keep up popping out of nowhere
* No need for lego/legoomni/include
* ncc: define SDLCALL as empty instead
70 lines
1.3 KiB
C++
70 lines
1.3 KiB
C++
#include "mxthread.h"
|
|
|
|
#include "decomp.h"
|
|
|
|
#include <SDL3/SDL_timer.h>
|
|
|
|
DECOMP_SIZE_ASSERT(MxThread, 0x1c)
|
|
|
|
// FUNCTION: LEGO1 0x100bf510
|
|
MxThread::MxThread()
|
|
{
|
|
m_thread = NULL;
|
|
m_running = TRUE;
|
|
}
|
|
|
|
// FUNCTION: LEGO1 0x100bf5a0
|
|
MxThread::~MxThread()
|
|
{
|
|
if (m_thread) {
|
|
SDL_WaitThread(m_thread, NULL);
|
|
}
|
|
}
|
|
|
|
// FUNCTION: LEGO1 0x100bf610
|
|
MxResult MxThread::Start(MxS32 p_stack, MxS32 p_flag)
|
|
{
|
|
MxResult result = FAILURE;
|
|
|
|
if (m_semaphore.Init(0, 1) == SUCCESS) {
|
|
const SDL_PropertiesID props = SDL_CreateProperties();
|
|
SDL_SetProperty(props, SDL_PROP_THREAD_CREATE_ENTRY_FUNCTION_POINTER, (void*) MxThread::ThreadProc);
|
|
SDL_SetProperty(props, SDL_PROP_THREAD_CREATE_USERDATA_POINTER, this);
|
|
SDL_SetNumberProperty(props, SDL_PROP_THREAD_CREATE_STACKSIZE_NUMBER, p_stack << 2);
|
|
|
|
if ((m_thread = SDL_CreateThreadWithProperties(props))) {
|
|
result = SUCCESS;
|
|
}
|
|
|
|
SDL_DestroyProperties(props);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
// FUNCTION: LEGO1 0x100bf660
|
|
void MxThread::Sleep(MxS32 p_milliseconds)
|
|
{
|
|
SDL_Delay(p_milliseconds);
|
|
}
|
|
|
|
// FUNCTION: LEGO1 0x100bf670
|
|
void MxThread::Terminate()
|
|
{
|
|
m_running = FALSE;
|
|
m_semaphore.Wait();
|
|
}
|
|
|
|
// FUNCTION: LEGO1 0x100bf680
|
|
int MxThread::ThreadProc(void* p_thread)
|
|
{
|
|
return static_cast<MxThread*>(p_thread)->Run();
|
|
}
|
|
|
|
// FUNCTION: LEGO1 0x100bf690
|
|
MxResult MxThread::Run()
|
|
{
|
|
m_semaphore.Release();
|
|
return SUCCESS;
|
|
}
|