Re: [Rhythmbox-devel] lirc patch



this patch works like a charm. it should officially be added to the
merge branch. my only suggestion would probably be to make the seek
variable (like in mplayer, where you add the amount of seek (with +/-
sign to state the direction))

On Wed, 2005-04-13 at 19:46 -0500, James Cotton wrote:
> I saw a patch for lirc a few weeks ago on the list, and i modified it
> so it applies to the rhythmbox-playbin-merge tree.  It is attached.  I
> also created a image of this tree for the less patching-inclined
> people:
> http://www.limeybrit.com/files/rhythmbox-playbin-merge-lirc-2005-04-13.tar.bz2
> 
> It works on my computer, let me know if there are any problems.  I
> also attached my file .lirc file for it.
> 
> I have two questions.  I would like to make it so the up and down
> buttons could toggle through playlists.  Any RB hackers want to
> suggest to me where to start to look for that?
> 
> Also as far as I can tell there is a bug somewhere in the aclocal
> configurations for RB.  Whenever I run configure I get this error:
> 
> config.status: creating rhythmbox.spec
> config.status: creating config.h
> config.status: executing intltool commands
> sed: -e expression #5, char 24: unknown option to `s'
> sed: -e expression #5, char 24: unknown option to `s'
> sed: -e expression #5, char 24: unknown option to `s'
> config.status: executing depfiles commands
> config.status: executing default-1 commands
> configure: Rhythmbox was configured with the followin
> 
> which I have tracked down to this code in the configure script:
> intltool_edit="-e 's:@INTLTOOL_EXTRACT@:`pwd`/intltool-extract:g' \
>                -e 's:@INTLTOOL_ICONV@:${ICONV}:g' \
>                -e 's:@INTLTOOL_MSGFMT@:${MSGFMT}:g' \
>                -e 's:@INTLTOOL_MSGMERGE@:${MSGMERGE}:g' \
>                -e 's:@INTLTOOL_XGETTEXT@:${XGETTEXT}:g' \
>                -e 's:@INTLTOOL_PERL@:${INTLTOOL_PERL}:g'"
> 
> The XGETTEXT variable gets set to : and then the sed command is not
> correct.  Manually deleting this variable so the string doesn't have
> the extra ':' fixes the problem, but I don't know how to fix it so
> autogen doesn't always mess it up (and I figure sometimes it's meant
> to have a value).  This line comes from aclocal.m4 but I don't know
> how that stuff works to know where that comes from.  I have two
> computers, one on gnome 2.10 and one on gnome 2.8 (both gentoo) so I
> don't think it's outdated software on my part.  Any suggestions?
> 
> James
> 
> --- rhythmbox-playbin-merge-2005-03-31/configure.ac     2005-03-25
> 18:34:08.000000000 -0600
> +++ rhythmbox-playbin-merge-lirc-2005-04-13/configure.ac       
> 2005-04-13 19:09:55.000000000 -0500
> @@ -149,12 +149,24 @@
>  fi
> 
> 
> -dnl AC_CHECK_LIB(lirc_client, lirc_init,
> -dnl            [ AC_CHECK_HEADER(lirc/lirc_client.h,
> -dnl                    [ RHYTHMBOX_LIBS="$RHYTHMBOX_LIBS -llirc_client"
> -dnl                    AC_DEFINE(HAVE_REMOTE)]
> -dnl                    ,,) ] ,)
> 
> +dnl Check for lirc
> +
> +AC_ARG_ENABLE(lirc, AC_HELP_STRING([--enable-lirc],
> +                               [build with lirc support]))
> +if test x"$enable_lirc" = xyes; then
> +       AC_CHECK_HEADER(lirc/lirc_client.h,[enable_lirc=yes],[enable_lirc=no])
> +       if test x"$enable_lirc" = xyes; then
> +              
> AC_CHECK_LIB(lirc_client,lirc_init,[enable_lirc=yes],[enable_lirc=no])
> +       fi
> +       if test x"$enable_lirc" = xyes; then
> +               RHYTHMBOX_LIBS="$RHYTHMBOX_LIBS -llirc_client"
> +               AC_DEFINE(HAVE_REMOTE,1,[Define if you have lirc support])
> +       else
> +               AC_MSG_ERROR([Cannot find lirc on your system])
> +       fi
> +fi
> +AM_CONDITIONAL(HAVE_REMOTE, test x"$enable_lirc" = xyes)
> 
>  dnl Check for Musicbrainz
>  dnl DISABLED
> @@ -452,6 +464,11 @@
>  else
>         AC_MSG_NOTICE([   D-BUS control/activation disabled])
>  fi
> +if test x"$enable_lirc" = xyes; then
> +       AC_MSG_NOTICE([** lirc remote support enabled])
> +else
> +       AC_MSG_NOTICE([   lirc remote support disabled])
> +fi
> 
>  dnl if test "x$enable_audiocd" != "xyes"; then
>  dnl    AC_MSG_NOTICE([   Audio CD support is disabled])
> --- rhythmbox-playbin-merge-2005-03-31/shell/rb-remote.c       
> 2005-03-25 12:51:37.000000000 -0600
> +++ rhythmbox-playbin-merge-lirc-2005-04-13/shell/rb-remote.c  
> 2005-04-13 19:09:54.000000000 -0500
> @@ -26,7 +26,7 @@
> 
>  #include "rb-remote.h"
> 
> -#ifdef HAVE_REMOTE
> +// #ifdef HAVE_REMOTE
> 
>  #include <stdio.h>
>  #include <lirc/lirc_client.h>
> @@ -34,6 +34,7 @@
>  /* strings that we recognize as commands from lirc */
>  #define RB_IR_COMMAND_PLAY "play"
>  #define RB_IR_COMMAND_PAUSE "pause"
> +#define RB_IR_COMMAND_STOP "stop"
>  #define RB_IR_COMMAND_SHUFFLE "shuffle"
>  #define RB_IR_COMMAND_REPEAT "repeat"
>  #define RB_IR_COMMAND_NEXT "next"
> @@ -43,7 +44,6 @@
>  #define RB_IR_COMMAND_VOLUME_UP "volume_up"
>  #define RB_IR_COMMAND_VOLUME_DOWN "volume_down"
>  #define RB_IR_COMMAND_MUTE "mute"
> -#define RB_IR_COMMAND_QUIT "quit"
> 
>  struct _RBRemote {
>         GObject parent;
> @@ -67,6 +67,8 @@
>                 return RB_REMOTE_COMMAND_PLAY;
>         else if (strcmp (str, RB_IR_COMMAND_PAUSE) == 0)
>                 return RB_REMOTE_COMMAND_PAUSE;
> +       else if (strcmp (str, RB_IR_COMMAND_STOP) == 0)
> +               return RB_REMOTE_COMMAND_STOP;
>         else if (strcmp (str, RB_IR_COMMAND_SHUFFLE) == 0)
>                 return RB_REMOTE_COMMAND_SHUFFLE;
>         else if (strcmp (str, RB_IR_COMMAND_REPEAT) == 0)
> @@ -85,8 +87,6 @@
>                 return RB_REMOTE_COMMAND_VOLUME_DOWN;
>         else if (strcmp (str, RB_IR_COMMAND_MUTE) == 0)
>                 return RB_REMOTE_COMMAND_MUTE;
> -       else if (strcmp (str, RB_IR_COMMAND_QUIT) == 0)
> -               return RB_REMOTE_COMMAND_QUIT;
>         else
>                 return RB_REMOTE_COMMAND_UNKNOWN;
>  }
> @@ -254,4 +254,4 @@
>         return g_object_new (RB_TYPE_REMOTE, NULL);
>  }
> 
> -#endif /* HAVE_REMOTE */
> +// #endif /* HAVE_REMOTE */
> --- rhythmbox-playbin-merge-2005-03-31/shell/rb-remote.h       
> 2005-03-25 12:51:37.000000000 -0600
> +++ rhythmbox-playbin-merge-lirc-2005-04-13/shell/rb-remote.h  
> 2005-04-13 19:09:54.000000000 -0500
> @@ -40,6 +40,7 @@
>         RB_REMOTE_COMMAND_UNKNOWN,
>         RB_REMOTE_COMMAND_PLAY,
>         RB_REMOTE_COMMAND_PAUSE,
> +       RB_REMOTE_COMMAND_STOP,
>         RB_REMOTE_COMMAND_SHUFFLE,
>         RB_REMOTE_COMMAND_REPEAT,
>         RB_REMOTE_COMMAND_NEXT,
> @@ -49,7 +50,6 @@
>         RB_REMOTE_COMMAND_VOLUME_UP,
>         RB_REMOTE_COMMAND_VOLUME_DOWN,
>         RB_REMOTE_COMMAND_MUTE,
> -       RB_REMOTE_COMMAND_QUIT
>  } RBRemoteCommand;
> 
>  typedef struct
> --- rhythmbox-playbin-merge-2005-03-31/shell/rb-shell-player.c 
> 2005-03-30 07:48:09.000000000 -0600
> +++ rhythmbox-playbin-merge-lirc-2005-04-13/shell/rb-shell-player.c   
>  2005-04-13 19:09:54.000000000 -0500
> @@ -152,6 +152,10 @@
> 
>  static gboolean rb_shell_player_jump_to_current_idle (RBShellPlayer *player);
> 
> +#ifdef HAVE_REMOTE
> +static void button_pressed_cb (RBRemote *remote, RBRemoteCommand cmd,
> gpointer data);
> +#endif /* HAVE_REMOTE */
> +
>  #ifdef HAVE_MMKEYS
>  static void grab_mmkey (int key_code, GdkWindow *root);
>  static GdkFilterReturn filter_mmkeys (GdkXEvent *xevent,
> @@ -225,6 +229,7 @@
>         GtkWidget *magic_button;
> 
>         RBRemote *remote;
> +       float muted_volume;
> 
>         guint gconf_play_order_id;
>         guint gconf_state_id;
> @@ -652,6 +657,17 @@
>                                             (GConfClientNotifyFunc)
> rb_shell_player_volume_changed_cb,
>                                             player);
> 
> +#ifdef HAVE_REMOTE
> +       /* Enable lirc remote support */
> +       player->priv->remote = rb_remote_new ();
> +       player->priv->muted_volume = -1;
> +
> +       g_signal_connect_object (G_OBJECT (player->priv->remote),
> +                                "button_pressed",
> +                                G_CALLBACK (button_pressed_cb),
> +                                player, 0);
> +#endif /* HAVE_REMOTE */
> +
>  #ifdef HAVE_MMKEYS
>         /* Enable Multimedia Keys */
>         rb_shell_player_init_mmkeys (player);
> @@ -2214,6 +2230,98 @@
>         return shell_player->priv->url;
>  }
> 
> +#ifdef HAVE_REMOTE
> +static void
> +button_pressed_cb (RBRemote *remote, RBRemoteCommand cmd, gpointer data)
> +{
> +       long time;
> +       float volume;
> +       RBPlayer *mmplayer;
> +       RBShellPlayer *player = RB_SHELL_PLAYER (data);
> +
> +       switch (cmd)
> +       {
> +       case RB_REMOTE_COMMAND_PLAY:
> +               rb_shell_player_cmd_play (NULL, player);
> +               break;
> +       case RB_REMOTE_COMMAND_PAUSE:
> +               rb_shell_player_cmd_pause (NULL, player);
> +               break;
> +       case RB_REMOTE_COMMAND_STOP:
> +               rb_shell_player_cmd_stop (NULL, player);
> +               break;
> +       case RB_REMOTE_COMMAND_SHUFFLE:
> +               rb_shell_player_shuffle_changed_cb (NULL, player);
> +               break;
> +       case RB_REMOTE_COMMAND_REPEAT:
> +               rb_shell_player_repeat_changed_cb (NULL, player);
> +               break;
> +       case RB_REMOTE_COMMAND_NEXT:
> +               rb_shell_player_cmd_next (NULL, player);
> +               break;
> +       case RB_REMOTE_COMMAND_PREVIOUS:
> +               rb_shell_player_cmd_previous (NULL, player);
> +               break;
> +       case RB_REMOTE_COMMAND_SEEK_FORWARD:
> +               time = rb_shell_player_get_playing_time (player) + 10;
> +               rb_shell_player_set_playing_time (player, time);
> +               break;
> +       case RB_REMOTE_COMMAND_SEEK_BACKWARD:
> +               time = rb_shell_player_get_playing_time (player) - 10;
> +
> +               if (time < 0)
> +                       time = 0;
> +
> +               rb_shell_player_set_playing_time (player, time);
> +               break;
> +       case RB_REMOTE_COMMAND_VOLUME_UP:
> +               mmplayer = rb_shell_player_get_mm_player (player);
> +               volume = rb_player_get_volume (mmplayer) + .1;
> +
> +               if (volume > 1.0)
> +                       volume = 1.0;
> +
> +               if (player->priv->muted_volume == -1) {
> +                       rb_player_set_volume (mmplayer, volume);
> +               } else {
> +                       rb_player_set_volume (mmplayer,
> player->priv->muted_volume);
> +                       player->priv->muted_volume = -1;
> +               }
> +
> +               break;
> +       case RB_REMOTE_COMMAND_VOLUME_DOWN:
> +               mmplayer = rb_shell_player_get_mm_player (player);
> +               volume = rb_player_get_volume (mmplayer) - .1;
> +
> +               if (volume < 0.0)
> +                       volume = 0.0;
> +
> +               if (player->priv->muted_volume == -1) {
> +                       rb_player_set_volume (mmplayer, volume);
> +               } else {
> +                       rb_player_set_volume (mmplayer,
> player->priv->muted_volume);
> +                       player->priv->muted_volume = -1;
> +               }
> +
> +               break;
> +       case RB_REMOTE_COMMAND_MUTE:
> +               mmplayer = rb_shell_player_get_mm_player (player);
> +
> +               if (player->priv->muted_volume == -1) {
> +                       player->priv->muted_volume =
> rb_player_get_volume (mmplayer);
> +                       rb_player_set_volume (mmplayer, 0.0);
> +               } else {
> +                       rb_player_set_volume (mmplayer,
> player->priv->muted_volume);
> +                       player->priv->muted_volume = -1;
> +               }
> +
> +               break;
> +       case RB_REMOTE_COMMAND_UNKNOWN:
> +               break;
> +       }
> +}
> +#endif /* HAVE_REMOTE */
> +
>  #ifdef HAVE_MMKEYS
>  static void
>  grab_mmkey (int key_code, GdkWindow *root)
> _______________________________________________
> rhythmbox-devel mailing list
> rhythmbox-devel gnome org
> http://mail.gnome.org/mailman/listinfo/rhythmbox-devel



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]