Standalone: crash with ZeDMD connected when FlexDMDHighQuality enabled
Describe the bug
List of tables that have this issue without modifications:
- Time Lord
- Big Trouble in Little China
- The Matrix Pup-Pack w/Table (VP Cooks, pup by Enthusiast)
For example on "Time Lord" ZeDMD is not rendering
The tables where this happens have this code
'FlexDMD in high or normal quality
'change it to True if you have an LCD screen, 256x64
'or keep it False if you have a real DMD at 128x32 in size
Const FlexDMDHighQuality = True
...
If FlexDMDHighQuality Then
FlexDMD.Width = 256
FlexDMD.Height = 64
...
So my guess is that there is no downscaling code set up for this? As I understand it libzedmd should even be able to handle any needed downscaling?
2023-11-06 21:34:43.059 INFO [64910] [ZeDMDUtil::OnLogMessage@12] ZeDMD found: device=/dev/ttyUSB1, width=128, height=32
2023-11-06 21:34:43.059 INFO [64922] [ZeDMDUtil::OnLogMessage@12] ZeDMD run thread starting
I prefer to not have users be required to export and edit the vbs files.
Looks like a high res flexdmd is even crashing on me now:
2024-02-07 14:40:08.564 INFO [513621] [*AssetManager::GetBitmap@275] Bitmap added to cache: VPX.d_border&dmd=2
2024-02-07 14:40:09.354 INFO [513716] [OnDMDUtilLog@82] ZeDMD found: device=/dev/ttyUSB0, width=128, height=32
2024-02-07 14:40:09.355 INFO [513716] [OnDMDUtilLog@82] Searching for Pixelcade...
2024-02-07 14:40:09.355 INFO [513726] [OnDMDUtilLog@82] ZeDMDComm run thread starting
2024-02-07 14:40:09.356 INFO [513716] [OnDMDUtilLog@82] Unable to find Pixelcade
terminate called after throwing an instance of 'std::system_error'
what(): Invalid argument
Also seen this:
terminate called recursively
terminate called after throwing an instance of 'std::system_error'
what(): Invalid argument
This only happens when my ZeDMD is connected. Unplugging it fixes the issue.
The FlexDMD window works properly as seen below
FlexDMDHighQuality=False
FlexDMDHighQuality=True
This should probably be reported at one of these projects?
- https://github.com/PPUC/libzedmd
- https://github.com/vpinball/libdmdutil
__pthread_kill_implementation 0x00007ffff4899a1b
__pthread_kill_internal 0x00007ffff4899a1b
__GI___pthread_kill 0x00007ffff4899a1b
__GI_raise 0x00007ffff48428e6
__GI_abort 0x00007ffff48268b7
<unknown> 0x00007ffff4ca4f06
<unknown> 0x00007ffff4cb6e6c
std::terminate() 0x00007ffff4cb6ed7
__cxa_throw 0x00007ffff4cb7138
std::__throw_system_error(int) 0x00007ffff4ca86f5
std::mutex::lock std_mutex.h:117
ZeDMDComm::QueueCommand ZeDMDComm.cpp:165
ZeDMDComm::QueueCommand ZeDMDComm.cpp:237
ZeDMD::RenderRgb24 ZeDMD.cpp:409
DMDUtil::DMD::ZeDMDThread DMD.cpp:524
std::__invoke_impl<…> invoke.h:74
std::__invoke<…> invoke.h:96
std::thread::_Invoker::_M_invoke<…> std_thread.h:292
std::thread::_Invoker::operator() std_thread.h:299
std::thread::_State_impl::_M_run std_thread.h:244
<unknown> 0x00007ffff4ce6333
start_thread 0x00007ffff4897b5a
clone3 0x00007ffff49285fc
This one has been fixed!