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

Index: configure.ac
===================================================================
--- configure.ac.orig
+++ configure.ac
@@ -621,6 +621,9 @@ AC_DEFINE_UNQUOTED(XINE_SKINDIR, "$XINE_
 XINE_LOGO_MRL="file:$XINE_SKINDIR/xine-ui_logo.png"
 AC_DEFINE_UNQUOTED(XINE_LOGO_MRL, "`makeexpand $XINE_LOGO_MRL`",[official logo mrl])
 
+XINE_LOGO_CRIPPLED_MRL="file:$XINE_SKINDIR/xine-ui_logo-crippled.png"
+AC_DEFINE_UNQUOTED(XINE_LOGO_CRIPPLED_MRL, "`makeexpand $XINE_LOGO_CRIPPLED_MRL`",[logo mrl for reduced functionality])
+
 XINE_SPLASH="$XINE_SKINDIR/xine_splash.png"
 AC_DEFINE_UNQUOTED(XINE_SPLASH, "`makeexpand $XINE_SPLASH`",[splash image])
 
Index: misc/xine-check.sh.in
===================================================================
--- misc/xine-check.sh.in.orig
+++ misc/xine-check.sh.in
@@ -644,7 +644,13 @@ if test -n "$skindir"; then
       if test -f xine-ui_logo.png; 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
+++ src/xitk/actions.c
@@ -220,7 +220,10 @@ void gui_display_logo(void) {
   panel_update_channel_display();
 
   if(gGui->display_logo)
-    (void) gui_xine_open_and_play((char *)gGui->logo_mrl, NULL, 0, 0, 0, 0, 1);
+    (void) gui_xine_open_and_play((char *) ((gGui->logo_select) ?
+					    gGui->logo_crippled_mrl :
+					    gGui->logo_mrl),
+				  NULL, 0, 0, 0, 0, 1);
 
   gGui->logo_mode = 1;
   
Index: src/xitk/common.h
===================================================================
--- src/xitk/common.h.orig
+++ src/xitk/common.h
@@ -235,6 +235,8 @@ typedef struct {
   int                       experience_level;
 
   const char               *logo_mrl;
+  const char               *logo_crippled_mrl;
+  int                       logo_select;
   int                       logo_mode;
   int                       logo_has_changed;
   int                       display_logo;
Index: src/xitk/main.c
===================================================================
--- src/xitk/main.c.orig
+++ src/xitk/main.c
@@ -415,6 +415,9 @@ static void xrm_parse(void) {
 static void main_change_logo_cb(void *data, xine_cfg_entry_t *cfg) {
   gGui->logo_mrl = cfg->str_value;
 }
+static void main_change_logo_crippled_cb(void *data, xine_cfg_entry_t *cfg) {
+  gGui->logo_crippled_mrl = cfg->str_value;
+}
 static void sub_autoload_cb(void *data, xine_cfg_entry_t *cfg) {
   gGui->subtitle_autoload = cfg->num_value;
 }
@@ -1351,6 +1354,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;
   
 #ifdef ENABLE_NLS
   if((xitk_set_locale()) != NULL) {
@@ -2145,6 +2151,25 @@ int main(int argc, char *argv[]) {
 						CONFIG_LEVEL_EXP,
 						main_change_logo_cb, 
 						CONFIG_NO_DATA);
+  gGui->logo_crippled_mrl = xine_config_register_string (gGui->xine, "gui.logo_crippled_mrl", XINE_LOGO_CRIPPLED_MRL,
+						_("Logo mrl (reduced functionality)"),
+						CONFIG_NO_HELP, 
+						CONFIG_LEVEL_EXP,
+						main_change_logo_crippled_cb, 
+						CONFIG_NO_DATA);
+
+  /*
+   * Check for important codecs and select logo
+   */
+  decoders = xine_list_video_decoder_plugins (gGui->xine);
+  i = 0;
+  for (d = decoders; *d; d++) {
+    if (strcmp (*d, "mpeg2") == 0)
+      i |= 1;
+    if (strcmp (*d, "ffmpegvideo") == 0)
+      i |= 2;
+  }
+  gGui->logo_select = (i == 3) ? 0 : 1;
 
   gGui->event_queue = xine_event_new_queue(gGui->stream);
   xine_event_create_listener_thread(gGui->event_queue, event_listener, NULL);
Index: src/xitk/videowin.c
===================================================================
--- src/xitk/videowin.c.orig
+++ src/xitk/videowin.c
@@ -2056,11 +2056,23 @@ void video_window_get_mag (float *xmag, 
  * Change displayed logo, if selected skin want to customize it.
  */
 void video_window_update_logo(void) {
+  char                *mrl_entry;
+  char                *mrl_default;
   xine_cfg_entry_t     cfg_entry;
   char                *skin_logo;
   int                  cfg_err_result;
-  
-  cfg_err_result = xine_config_lookup_entry(gGui->xine, "gui.logo_mrl", &cfg_entry);
+
+  if (gGui->logo_select == 0) {
+    mrl_entry   = "gui.logo_mrl";
+    mrl_default = XINE_LOGO_MRL;
+  } else {
+    mrl_entry = "gui.logo_crippled_mrl";
+    mrl_default = XINE_LOGO_CRIPPLED_MRL;
+  }
+
+  cfg_err_result = xine_config_lookup_entry(gGui->xine, mrl_entry,
+					    &cfg_entry);
+
   skin_logo = xitk_skin_get_logo(gGui->skin_config);
   
   if(skin_logo) {
@@ -2071,7 +2083,7 @@ void video_window_update_logo(void) {
 	goto __done;
     }
     
-    config_update_string("gui.logo_mrl", skin_logo);
+    config_update_string(mrl_entry, skin_logo);
     goto __play_logo_now;
     
   }
@@ -2081,8 +2093,9 @@ void video_window_update_logo(void) {
      * Back to default logo only on a skin 
      * change, not at the first skin loading.
      **/
-    if(gVw->logo_synthetic && (cfg_err_result) && (strcmp(cfg_entry.str_value, XINE_LOGO_MRL))) {
-      config_update_string("gui.logo_mrl", XINE_LOGO_MRL);
+    if(gVw->logo_synthetic && (cfg_err_result) &&
+       (strcmp(cfg_entry.str_value, mrl_default))) {
+      config_update_string(mrl_entry, mrl_default);
 
     __play_logo_now:
       
openSUSE Build Service is sponsored by