File xine-ui-crippled-LOCAL.diff of Package xine-ui

Index: configure.ac
===================================================================
--- configure.ac.orig	2021-12-22 20:01:36.559078984 +0100
+++ configure.ac	2021-12-27 13:23:23.150781964 +0100
@@ -745,6 +745,7 @@ AC_DEFUN([XINE_LOCATE_MEDIA],
 
 XINE_LOCATE_MEDIA([XINE_LOGO_MRL], [jpg png mpv], [mpv], [xine-ui_logo], [logo], [official logo MRL])
 XINE_LOCATE_MEDIA([XINE_LOGO2_MRL], [mpg], [mpg], [xine-ui_logo], [logo2], [official logo MRL])
+XINE_LOCATE_MEDIA([XINE_LOGO_CRIPPLED_MRL], [jpg png mpv], [mpv], [xine-ui_logo-crippled], [logo], [logo MRL for reduced functionality])
 XINE_LOCATE_MEDIA([XINE_SPLASH], [jpg png], [png], [xine_splash], [splash], [splash image filename])
 
 XINE_VISDIR="${datadir}/xine/visuals"
Index: misc/xine-check.sh.in
===================================================================
--- misc/xine-check.sh.in.orig	2021-12-22 20:01:36.547078985 +0100
+++ misc/xine-check.sh.in	2021-12-27 13:23:23.154781964 +0100
@@ -593,7 +593,13 @@ if test -n "$skindir"; then
       if test -f xine-ui_logo.mpv || test -f xine-ui_logo.png || test -f xine-ui_logo.jpg; then
         msg logo-exists
       else
-        msg no-xine-logo 2
+        if test -f xine-ui_logo-crippled.png; then
+          msg ONLY the CRIPPLED logo exists
+          msg this is NOT a full enabled version of xine !
+          msg most likely it is not possible to play DVDs !
+        else
+          msg no-xine-logo 2
+        fi
       fi
       skins=
       for dir in *; do
Index: src/xitk/actions.c
===================================================================
--- src/xitk/actions.c.orig	2021-12-22 20:01:36.567078984 +0100
+++ src/xitk/actions.c	2021-12-27 13:23:23.158781964 +0100
@@ -226,7 +226,10 @@ void gui_display_logo (gGui_t *gui) {
   panel_update_channel_display (gui->panel);
 
   if(gui->display_logo)
-    (void) gui_xine_open_and_play (gui, (char *)gui->logo_mrl, NULL, 0, 0, 0, 0, 1);
+    (void) gui_xine_open_and_play (gui, (char *) ((gui->logo_select) ?
+       gui->logo_crippled_mrl :
+       gui->logo_mrl),
+       NULL, 0, 0, 0, 0, 1);
 
   gui->logo_mode = 1;
 
Index: src/xitk/common.h
===================================================================
--- src/xitk/common.h.orig	2021-12-22 20:01:36.571078984 +0100
+++ src/xitk/common.h	2021-12-27 13:23:23.154781964 +0100
@@ -212,6 +212,8 @@ struct gGui_st {
 
   int                       logo_mode;
   const char               *logo_mrl;
+  const char               *logo_crippled_mrl;
+  int                       logo_select;
   pthread_mutex_t           logo_mutex;
   int                       logo_has_changed;
   int                       display_logo;
Index: src/xitk/main.c
===================================================================
--- src/xitk/main.c.orig	2021-12-22 20:01:36.619078983 +0100
+++ src/xitk/main.c	2021-12-27 13:23:23.154781964 +0100
@@ -289,6 +289,10 @@ static void main_change_logo_cb(void *da
   gGui_t *gui = data;
   gui->logo_mrl = cfg->str_value;
 }
+static void main_change_logo_crippled_cb(void *data, xine_cfg_entry_t *cfg) {
+  gGui_t *gui = data;
+  gui->logo_crippled_mrl = cfg->str_value;
+}
 static void sub_autoload_cb(void *data, xine_cfg_entry_t *cfg) {
   gGui_t *gui = data;
   gui->subtitle_autoload = cfg->num_value;
@@ -1239,6 +1243,9 @@ int main(int argc, char *argv[]) {
   char                  **session_argv     = NULL;
   int                     session_argv_num = 0;
   int                     retval           = 0;
+  const char * const     *decoders;
+  const char * const     *d;
+  int                     i;
   pthread_mutexattr_t     mutexattr;
 
   gui_init_params_t       gui_params;
@@ -2072,6 +2079,21 @@ int main(int argc, char *argv[]) {
   gui->logo_has_changed = 0;
   gui->logo_mrl = xine_config_register_string (gui->xine, "gui.logo_mrl", USE_XINE_LOGO_MRL,
     _("Logo MRL"), CONFIG_NO_HELP, CONFIG_LEVEL_EXP, main_change_logo_cb, gui);
+  gui->logo_crippled_mrl = xine_config_register_string (gui->xine, "gui.logo_crippled_mrl", XINE_LOGO_CRIPPLED_MRL,
+    _("Logo MRL (reduced functionality)"), CONFIG_NO_HELP, CONFIG_LEVEL_EXP, main_change_logo_crippled_cb, gui);
+
+  /*
+   * Check for important codecs and select logo
+   */
+  decoders = xine_list_video_decoder_plugins (gui->xine);
+  i = 0;
+  for (d = decoders; *d; d++) {
+    if (strcmp (*d, "mpeg2") == 0)
+      i |= 1;
+    if (strcmp (*d, "ffmpegvideo") == 0)
+      i |= 2;
+  }
+  gui->logo_select = (i == 3) ? 0 : 1;
 
   gui->event_queue = xine_event_new_queue(gui->stream);
   xine_event_create_listener_thread (gui->event_queue, event_listener, gui);
Index: src/xitk/panel.c
===================================================================
--- src/xitk/panel.c.orig	2021-12-22 20:01:36.615078983 +0100
+++ src/xitk/panel.c	2021-12-27 13:23:23.158781964 +0100
@@ -221,11 +221,14 @@ static void _panel_exit (xui_panel_t *pa
  * Change displayed logo, if selected skin want to customize it.
  */
 static void _update_logo (xui_panel_t *panel) {
+  char                *mrl_entry;
+  char                *mrl_default;
   xine_cfg_entry_t     cfg_entry;
   const char          *skin_logo;
   int                  cfg_err_result;
 
-  cfg_err_result = xine_config_lookup_entry (panel->gui->xine, "gui.logo_mrl", &cfg_entry);
+  mrl_entry = (panel->gui->logo_select) ? "gui.logo_crippled_mrl" : "gui.logo_mrl";
+  cfg_err_result = xine_config_lookup_entry (panel->gui->xine, mrl_entry, &cfg_entry);
   skin_logo = xitk_skin_get_logo (panel->gui->skin_config);
 
   if(skin_logo) {
@@ -236,7 +239,7 @@ static void _update_logo (xui_panel_t *p
 	goto __done;
     }
 
-    config_update_string (panel->gui->xine, "gui.logo_mrl", skin_logo);
+    config_update_string (panel->gui->xine, mrl_entry, skin_logo);
     goto __play_logo_now;
 
   }
@@ -251,8 +254,9 @@ static void _update_logo (xui_panel_t *p
 #else
 #  define USE_XINE_LOGO_MRL XINE_LOGO_MRL
 #endif
-    if (panel->logo_synthetic && (cfg_err_result) && (strcmp (cfg_entry.str_value, USE_XINE_LOGO_MRL))) {
-        config_update_string (panel->gui->xine, "gui.logo_mrl", USE_XINE_LOGO_MRL);
+    mrl_default = (panel->gui->logo_select) ? XINE_LOGO_CRIPPLED_MRL : USE_XINE_LOGO_MRL;
+    if (panel->logo_synthetic && (cfg_err_result) && (strcmp (cfg_entry.str_value, mrl_default))) {
+        config_update_string (panel->gui->xine, mrl_entry, mrl_default);
 
     __play_logo_now:
 
openSUSE Build Service is sponsored by