webosbrew / hyperion-webos

hyperion.ng video grabber for webOS
MIT License
153 stars 30 forks source link

QUIRK: Fix quickstart on webOS 3.x TVs QUIRK_DILE_VT_DESTROY_ON_STOP #99

Closed TBSniller closed 1 year ago

TBSniller commented 2 years ago

In latest unicapture changes, we have changed how TVs powerstate is processed. In older versions we have used to completly stop capture on standby. Now we only stop capture and let capture interfaces in memory. The problem with older webOS TVs is, that in standby it regardless kills hyperion-webos after awake, which leads to not fully shut down capture interfaces and because of that a new interface can't be created.

This PR will introduce another quirk QUIRK_DILE_VT_DESTROY_ON_STOP, which will destroy DILE_VT interface, when a standby is in progress, so it can be created on next TV awake, without the need of disabling QuickStart+ or completly reboot TV.

This addresses https://github.com/webosbrew/hyperion-webos/issues/95

@tuxuser Can you please review?

Informatic commented 2 years ago

I've just realized we don't actually call capture_cleanup anywhere.

Wouldn't it make sense to implement this in unicapture.c instead, so that it could be used as a workaround on other backends as well?

We could add an extra "initialized" field into capture_backend_t that'd be set to true at the end of unicapture_init_backend on success (since we depend on init call for backend autodetection), then at the end of unicapture_run shutdown add apropriate backend->cleanup() calls, set that flag back to false, and add backend->init() call at the beginning of unicapture_run if said flag is false again. (aka. unicapture_run has been launched once again after suspend)

TBSniller commented 1 year ago

@Informatic Yeah, that was also something I have seen. In my first attempt I have also tried to do things like you have described, but to be honest I'm not that experienced and haven't managed to get something useful. I'm more in a manner of doing things in a trial and error way, so as I don't have a WebOS 3 TV, I'm a bit lost in testing changed things. Because of this and the reason that no one else has tried to fix this issue, I have done it in this way. I would appreciate your opinion in merging anyways and create a issue for this, so users can use this fix, while someone else might contribute in a correct way. Or otherwise, if you mean that we should keep things clean and in a correct way, but as a bummer that this issue might not be fixed in near future, as currently no one had time, or wanted to do this.

TBSniller commented 1 year ago

Not needed due to https://github.com/webosbrew/hyperion-webos/pull/105 Thanks @Informatic ! <3