]> git.sesse.net Git - vlc/blobdiff - modules/gui/skins2/commands/cmd_vars.hpp
skins2: fix memory leak (a malloc not paired with a free)
[vlc] / modules / gui / skins2 / commands / cmd_vars.hpp
index ebb142958df8d2abe4e89c6f6e592456cf5f423e..c4e83c4a266b5b551a0f6e5dec7a61f7fddaa80b 100644 (file)
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
 #ifndef CMD_VARS_HPP
 #define CMD_VARS_HPP
 
+#include <vlc_common.h>
+#include <vlc_playlist.h>
+
 #include "cmd_generic.hpp"
 #include "../utils/ustring.hpp"
 
+class EqualizerBands;
+class EqualizerPreamp;
 class VarText;
 
 /// Command to notify the playlist of a change
 DEFINE_COMMAND( NotifyPlaylist, "notify playlist" )
-/// Command to notify the playtree of a change
-DEFINE_COMMAND( NotifyPlaytree, "notify playtree" )
+
+/// Command to notify the playlist of a change
+DEFINE_COMMAND( PlaytreeChanged, "playtree changed" )
+
+/// Command to notify the playtree of an item update
+class CmdPlaytreeUpdate: public CmdGeneric
+{
+public:
+    CmdPlaytreeUpdate( intf_thread_t *pIntf, input_item_t* pItem ):
+        CmdGeneric( pIntf ), m_pItem( pItem )
+    {
+        if( pItem )
+            vlc_gc_incref( pItem );
+    }
+    virtual ~CmdPlaytreeUpdate()
+    {
+        if( m_pItem )
+            vlc_gc_decref( m_pItem );
+    }
+    virtual void execute();
+    virtual string getType() const { return "playtree update"; }
+
+    /// Only accept removal of command if they concern the same item
+    virtual bool checkRemove( CmdGeneric * ) const;
+
+private:
+    /// input item changed
+    input_item_t* m_pItem;
+};
+
+/// Command to notify the playtree of an item append
+class CmdPlaytreeAppend: public CmdGeneric
+{
+public:
+    CmdPlaytreeAppend( intf_thread_t *pIntf, playlist_add_t *p_add ):
+        CmdGeneric( pIntf ), m_pAdd( NULL )
+    {
+        if( p_add )
+        {
+            m_pAdd = new playlist_add_t;
+            *m_pAdd = *p_add;
+        }
+    }
+    virtual ~CmdPlaytreeAppend()
+    {
+        delete m_pAdd;
+    }
+    virtual void execute();
+    virtual string getType() const { return "playtree append"; }
+
+private:
+    playlist_add_t * m_pAdd;
+};
+
+/// Command to notify the playtree of an item deletion
+class CmdPlaytreeDelete: public CmdGeneric
+{
+public:
+    CmdPlaytreeDelete( intf_thread_t *pIntf, int i_id ):
+        CmdGeneric( pIntf ), m_id( i_id ) { }
+    virtual ~CmdPlaytreeDelete() { }
+    virtual void execute();
+    virtual string getType() const { return "playtree append"; }
+
+private:
+    int m_id;
+};
 
 
 /// Command to set a text variable
 class CmdSetText: public CmdGeneric
 {
-    public:
-        CmdSetText( intf_thread_t *pIntf, VarText &rText,
-                    const UString &rValue ):
-            CmdGeneric( pIntf ), m_rText( rText ), m_value( rValue ) {}
-        virtual ~CmdSetText() {}
-
-        /// This method does the real job of the command
-        virtual void execute();
-
-        /// Return the type of the command
-        virtual string getType() const { return "set text"; }
-
-    private:
-        /// Text variable to set
-        VarText &m_rText;
-        /// Value to set
-        const UString m_value;
+public:
+    CmdSetText( intf_thread_t *pIntf, VarText &rText, const UString &rValue ):
+        CmdGeneric( pIntf ), m_rText( rText ), m_value( rValue ) { }
+    virtual ~CmdSetText() { }
+    virtual void execute();
+    virtual string getType() const { return "set text"; }
+
+private:
+    /// Text variable to set
+    VarText &m_rText;
+    /// Value to set
+    const UString m_value;
+};
+
+
+/// Command to set the equalizer preamp
+class CmdSetEqPreamp: public CmdGeneric
+{
+public:
+    CmdSetEqPreamp( intf_thread_t *I, EqualizerPreamp &P, float v )
+                  : CmdGeneric( I ), m_rPreamp( P ), m_value( v ) { }
+    virtual ~CmdSetEqPreamp() { }
+    virtual void execute();
+    virtual string getType() const { return "set equalizer preamp"; }
+
+private:
+    /// Preamp variable to set
+    EqualizerPreamp &m_rPreamp;
+    /// Value to set
+    float m_value;
+};
+
+
+/// Command to set the equalizerbands
+class CmdSetEqBands: public CmdGeneric
+{
+public:
+    CmdSetEqBands( intf_thread_t *I, EqualizerBands &B, const string &V )
+                 : CmdGeneric( I ), m_rEqBands( B ), m_value( V ) { }
+    virtual ~CmdSetEqBands() { }
+    virtual void execute();
+    virtual string getType() const { return "set equalizer bands"; }
+
+private:
+    /// Equalizer variable to set
+    EqualizerBands &m_rEqBands;
+    /// Value to set
+    const string m_value;
 };