freezy / dmd-extensions

A toolbox for virtual pinball dot matrix displays.
GNU General Public License v2.0
120 stars 52 forks source link

ZeDMD starts screensaver when starting a table from frontend #474

Closed mkalkbrenner closed 1 month ago

mkalkbrenner commented 1 month ago

Using ZeDMD within PinUp Popper or Pinball Y works. But if you launch a table from the these frontends, ZeDMD goes into screensaver mode instead of displaying the ROM content.

mkalkbrenner commented 1 month ago

DmdDevice.zip

I build these DLLs locally for others to test.

Use these builds to test: https://ci.appveyor.com/project/freezy/dmd-extensions

ZiggyDaMoe commented 1 month ago

Here are some results/observations from testing. The results from dmddevice64.dll 2.2.2 will hopefully explain the behavior experienced with 2.2.3

When using dmddevice64.dll 2.2.2 The DMD works when launching VPX directly. If VPX is left open and just the table is closed and a new one is opened (regardless of the altcolor file type (.pal, .vni, .cRZ, .pac) the DMD will work. Once VPX is closed and reopened the DMD needs to be power cycled, or the subsequent table only displays black. If PinballY is utilized it will launch and close VPX for each table, which requires a power cycle each time for the DMD to work.

There is an odd thing. If the FlexDMD add-on in PinballY has the first instance, the DMD works. The DMD will go black when a table is launched but closing the table and returning to PinballY the FlexDMD add-on will return to operating.

When using dmddevice64.dll 2.2.3 from the file you attached. It had nearly identical behaviour. The difference was that in the scenario where VPX is left open and tables are loaded, the DMD only worked for the first table loaded, each subsequent table had a black DMD. The 2.2.2 version allowed multiple table DMD's to operate if VPX wasn't closed.

I hope this helps, let me know if I can provide any additional information.

pjeantaud commented 1 month ago

Hello,

I made the test with the DLL you provided, and unfortunately, from PinballX, the behavior is exactly as described by ZiggyDaMoe. IMHO, this problem is not fixed.

mkalkbrenner commented 1 month ago

@pjeantaud test this build: https://ci.appveyor.com/project/freezy/dmd-extensions

The DLL above is older and did not contain the multi Dispose() fix

pjeantaud commented 1 month ago

Hi Markus,

Thanks for this version 2.2.3.

Here’s my feedback, you can see it on the following video : http://pjeantaud.free.fr/Freezy/Freezy_2-3-3.mov

1) run PinballX, ZeDMD displays the DMD presentation video: OK. 2) lauch a VPX table, ZeDMD initialize, then display the DMD game: OK. 3) exit the game. Under PinballX, ZeDMD does not display anymore the presentation video: KO. 4) run another table, ZeDMD displays the DMD game as in step 2: OK.

So PinballX displays the presentation video on DMD only once. Thank you for you commitment.

Patrick

Le 28 mai 2024 à 13:16, Markus Kalkbrenner @.***> a écrit :

@pjeantaud https://github.com/pjeantaud test this build: https://ci.appveyor.com/project/freezy/dmd-extensions https://ci.appveyor.com/project/freezy/dmd-extensions The DLL above is older and did not contain the global Dispose() fix

— Reply to this email directly, view it on GitHub https://github.com/freezy/dmd-extensions/issues/474#issuecomment-2134963032, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMAZUKKDY36AZ57FWBMPRM3ZERRRRAVCNFSM6AAAAABHR3BQMOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMZUHE3DGMBTGI. You are receiving this because you were mentioned.

mkalkbrenner commented 1 month ago

@pjeantaud Thanks for that valuable feedback. Since I can't re-open this issue, can you create a new one and copy your findings there?

I will reply there as we got a similar report about Pinball Y. And it seems that the issue is not directly related to ZeDMD.

freezy commented 1 month ago

Reopened.

mkalkbrenner commented 1 month ago

@freezy so it looks like VPX doesn't cause a call to Dispose() if it is closed by the frontend. Or the Frontend doesn't call Init() again to get the connection to the DMD.

I don't think that this is a ZeDMD issue. The only difference between ZeDMD and others might be that another process could not open the connection if another process still "owns" the serial port.

mkalkbrenner commented 1 month ago

I think this a different issue and we should continue on #481