From d411daada02e197f89a078cac8a10ea81be6287b Mon Sep 17 00:00:00 2001 From: wsw0108 Date: Sun, 29 Mar 2020 16:55:37 +0800 Subject: [PATCH] better detection of private codec support --- eaf.el | 17 +++++++++++++---- eaf.py | 5 +++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/eaf.el b/eaf.el index efeb96d..c666129 100644 --- a/eaf.el +++ b/eaf.el @@ -188,6 +188,8 @@ been initialized." (defvar eaf--first-start-arguments nil) +(defvar eaf--webengine-include-private-codec nil) + (defvar eaf-org-file-list '()) (defvar eaf-org-killed-file-list '()) @@ -1247,7 +1249,14 @@ of `eaf--buffer-app-name' inside the EAF buffer." (defun eaf--first-start () "Call `eaf--open-internal' after receive `start_finish' signal from server process." - (eaf--open-internal eaf--first-start-url eaf--first-start-app-name eaf--first-start-arguments)) + (let* ((webengine-process-path (eaf-call "webengine_process_path")) + (webengine-include-private-codec (eaf--webengine-include-private-codec webengine-process-path))) + (setq eaf--webengine-include-private-codec webengine-include-private-codec) + (setq eaf--first-start-app-name (if (and (string-equal eaf--first-start-app-name "video-player") + webengine-include-private-codec) + "js-video-player" + eaf--first-start-app-name)) + (eaf--open-internal eaf--first-start-url eaf--first-start-app-name eaf--first-start-arguments))) (dbus-register-signal :session "com.lazycat.eaf" "/com/lazycat/eaf" @@ -1609,11 +1618,11 @@ choose a search engine defined in `eaf-browser-search-engines'" return app))) (if (string-equal app-name "video-player") ;; Use Browser play video if QWebEngine include private codec. - (if (eaf--webengine-include-private-codec) "js-video-player" "video-player") + (if eaf--webengine-include-private-codec "js-video-player" "video-player") app-name))) -(defun eaf--webengine-include-private-codec () - (not (string-equal (shell-command-to-string "ldd /usr/lib/libQt5WebEngineCore.so | grep libavformat") ""))) +(defun eaf--webengine-include-private-codec (path) + (not (string-equal (shell-command-to-string (concat "ldd " path " | grep libavformat")) ""))) ;;;###autoload (defun eaf-get-file-name-extension (file) diff --git a/eaf.py b/eaf.py index 73e1fa4..f911c59 100755 --- a/eaf.py +++ b/eaf.py @@ -24,6 +24,7 @@ # So we import browser module before start Qt application instance to avoid this error, but we never use this module. from app.browser.buffer import AppBuffer as NeverUsed # noqa +from PyQt5.QtCore import QLibraryInfo from PyQt5.QtNetwork import QNetworkProxy from PyQt5.QtWidgets import QApplication from core.view import View @@ -76,6 +77,10 @@ class EAF(dbus.service.Object): proxy.setPort(int(proxy_port)) QNetworkProxy.setApplicationProxy(proxy) + @dbus.service.method(EAF_DBUS_NAME, in_signature="", out_signature="s") + def webengine_process_path(self): + return os.path.join(QLibraryInfo.location(QLibraryInfo.LibraryExecutablesPath), "QtWebEngineProcess") + @dbus.service.method(EAF_DBUS_NAME, in_signature="s", out_signature="") def update_emacs_var_dict(self, var_dict_string): for var_pair in var_dict_string.split("ᛡ"):