actions: refactor init/deinit functions
authorThomas Guillem <thomas@gllm.fr>
Thu, 3 Aug 2017 13:10:36 +0000 (15:10 +0200)
committerHugo Beauzée-Luyssen <hugo@beauzee.fr>
Wed, 9 Aug 2017 08:48:05 +0000 (10:48 +0200)
Signed-off-by: Hugo Beauzée-Luyssen <hugo@beauzee.fr>
include/vlc_actions.h
src/libvlc.c
src/libvlc.h
src/misc/actions.c

index c3f4172..6a0f2e1 100644 (file)
 #ifndef VLC_ACTIONS_H
 #define VLC_ACTIONS_H 1
 
+/* Called from src/libvlc.c */
+int
+libvlc_InternalActionsInit(libvlc_int_t *p_libvlc);
+
+/* Called from src/libvlc.c */
+void
+libvlc_InternalActionsClean(libvlc_int_t *p_libvlc);
+
 /**
  * \file
  * This file defines keys and functions
index c7e7b90..7e343a6 100644 (file)
@@ -54,6 +54,7 @@
 #include <vlc_playlist.h>
 #include <vlc_interface.h>
 
+#include <vlc_actions.h>
 #include <vlc_charset.h>
 #include <vlc_dialog.h>
 #include <vlc_keystore.h>
@@ -233,8 +234,7 @@ int libvlc_InternalInit( libvlc_int_t *p_libvlc, int i_argc,
     /*
      * Initialize hotkey handling
      */
-    priv->actions = vlc_InitActions( p_libvlc );
-    if( !priv->actions )
+    if( libvlc_InternalActionsInit( p_libvlc ) != VLC_SUCCESS )
         goto error;
 
     /*
@@ -416,7 +416,7 @@ void libvlc_InternalCleanup( libvlc_int_t *p_libvlc )
     if (priv->parser != NULL)
         playlist_preparser_Delete(priv->parser);
 
-    vlc_DeinitActions( p_libvlc, priv->actions );
+    libvlc_InternalActionsClean( p_libvlc );
 
     /* Save the configuration */
     if( !var_InheritBool( p_libvlc, "ignore-config" ) )
index 299795c..59d6f2d 100644 (file)
@@ -31,8 +31,6 @@ typedef struct variable_t variable_t;
 
 /* Actions (hot keys) */
 struct vlc_actions;
-struct vlc_actions *vlc_InitActions (libvlc_int_t *);
-extern void vlc_DeinitActions (libvlc_int_t *, struct vlc_actions *);
 
 /*
  * OS-specific initialization
index 968a085..e92b431 100644 (file)
@@ -33,6 +33,7 @@
 # include <config.h>
 #endif
 
+#include <assert.h>
 #include <stdlib.h>
 #include <limits.h>
 #ifdef HAVE_SEARCH_H
@@ -504,14 +505,16 @@ static void vlc_InitAction (vlc_object_t *obj, void **map,
 /**
  * Initializes the key map from configuration.
  */
-struct vlc_actions *vlc_InitActions (libvlc_int_t *libvlc)
+int libvlc_InternalActionsInit (libvlc_int_t *libvlc)
 {
+    assert(libvlc != NULL);
+
     vlc_object_t *obj = VLC_OBJECT(libvlc);
     struct hotkey *keys;
     struct vlc_actions *as = malloc (sizeof (*as) + ACTIONS_COUNT * sizeof (*keys));
 
     if (unlikely(as == NULL))
-        return NULL;
+        return VLC_ENOMEM;
     as->map = NULL;
     as->global_map = NULL;
     keys = as->keys;
@@ -549,18 +552,22 @@ struct vlc_actions *vlc_InitActions (libvlc_int_t *libvlc)
     vlc_AddWheelMapping (&as->map, KEY_MOUSEWHEELUP, KEY_MOUSEWHEELDOWN,
                          var_InheritInteger (obj, "hotkeys-y-wheel-mode"));
 
+    libvlc_priv(libvlc)->actions = as;
     libvlc->p_hotkeys = as->keys;
     var_AddCallback (obj, "key-pressed", vlc_key_to_action, &as->map);
     var_AddCallback (obj, "global-key-pressed", vlc_key_to_action,
                      &as->global_map);
-    return as;
+    return VLC_SUCCESS;
 }
 
 /**
  * Destroys the key map.
  */
-void vlc_DeinitActions (libvlc_int_t *libvlc, struct vlc_actions *as)
+void libvlc_InternalActionsClean (libvlc_int_t *libvlc)
 {
+    assert(libvlc != NULL);
+
+    struct vlc_actions *as = libvlc_priv(libvlc)->actions;
     if (unlikely(as == NULL))
         return;
 
@@ -571,6 +578,7 @@ void vlc_DeinitActions (libvlc_int_t *libvlc, struct vlc_actions *as)
     tdestroy (as->global_map, free);
     tdestroy (as->map, free);
     free (as);
+    libvlc_priv(libvlc)->actions = NULL;
     libvlc->p_hotkeys = NULL;
 }