diff --git a/panels/camera.py b/panels/camera.py index 98bb5de4..837d7259 100644 --- a/panels/camera.py +++ b/panels/camera.py @@ -29,12 +29,12 @@ class CameraPanel(ScreenPanel): self.content.add(box) self.content.show_all() self.url = self.ks_printer_cfg.get("camera_url", "http://127.0.0.1/webcam/?action=stream").replace('"', '') - logging.debug(f"Camera URL: {self.url}") # wayland has no primary monitor with that we can detect it self.wayland = Gdk.Display.get_default().get_primary_monitor() is None # gpu output driver doesn't work on a pi3 and the autoselected sdl doesn't size correctly # consider adding a software switch to enable the gpu backend if set by the user - self.vo = 'x11' if self.wayland else 'wlshm' + self.vo = 'wlshm' if self.wayland else 'x11' + logging.debug(f"Camera URL: {self.url} vo: {self.vo} wayland: {self.wayland}") def activate(self): self.play() @@ -45,6 +45,9 @@ class CameraPanel(ScreenPanel): self.mpv = None def play(self, fs=None): + if self.mpv: + self.mpv.terminate() + self.mpv = None # Create mpv after show or the 'window' property will be None self.mpv = mpv.MPV( log_handler=self.log, @@ -53,32 +56,29 @@ class CameraPanel(ScreenPanel): ) # On wayland mpv cannot be embedded at least for now # https://github.com/mpv-player/mpv/issues/9654 - if fs or self.wayland: - self.mpv.fullscreen = True + # if fs or self.wayland: + self.mpv.fullscreen = True - @self.mpv.on_key_press('MBTN_LEFT' or 'MBTN_LEFT_DBL') - def clicked(): - self.mpv.quit(0) - else: - self.mpv.wid = f'{self.da.get_property("window").get_xid()}' - - @self.mpv.on_key_press('MBTN_LEFT' or 'MBTN_LEFT_DBL') - def clicked(): - self._screen.show_popup_message(self.url, level=1) + @self.mpv.on_key_press('MBTN_LEFT' or 'MBTN_LEFT_DBL') + def clicked(): + self.mpv.quit(0) + # else: + # self.mpv.wid = f'{self.da.get_property("window").get_xid()}' + # + # @self.mpv.on_key_press('MBTN_LEFT' or 'MBTN_LEFT_DBL') + # def clicked(): + # self._screen.show_popup_message(self.url, level=1) self.mpv.play(self.url) - if fs or self.wayland: - try: - self.mpv.wait_for_playback() - except mpv.ShutdownError: - logging.info('Exiting Fullscreen') - except Exception as e: - logging.exception(e) - self.mpv.terminate() - self.mpv = None - if self.wayland: - self._screen._menu_go_back() - else: - self.play() + # if fs or self.wayland: + try: + self.mpv.wait_for_playback() + except mpv.ShutdownError: + logging.info('Exiting Fullscreen') + except Exception as e: + logging.exception(e) + self.mpv.terminate() + self.mpv = None + self._screen._menu_go_back() @staticmethod def log(loglevel, component, message):