Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a9f27fa6 authored by Andreas Huber's avatar Andreas Huber Committed by Android (Google) Code Review
Browse files

Merge "Protect notification callback parameters with a mutex." into honeycomb

parents 7765c65d 2ffbb180
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -126,8 +126,6 @@ public:
    virtual status_t    setLooping(int loop) = 0;
    virtual player_type playerType() = 0;

    virtual void        setNotifyCallback(void* cookie, notify_callback_f notifyFunc) {
                            mCookie = cookie; mNotify = notifyFunc; }
    // Invoke a generic method on the player by using opaque parcels
    // for the request and reply.
    //
@@ -149,9 +147,21 @@ public:
        return INVALID_OPERATION;
    };

    virtual void        sendEvent(int msg, int ext1=0, int ext2=0) { if (mNotify) mNotify(mCookie, msg, ext1, ext2); }
    void        setNotifyCallback(
            void* cookie, notify_callback_f notifyFunc) {
        Mutex::Autolock autoLock(mNotifyLock);
        mCookie = cookie; mNotify = notifyFunc;
    }

protected:
    void        sendEvent(int msg, int ext1=0, int ext2=0) {
        Mutex::Autolock autoLock(mNotifyLock);
        if (mNotify) mNotify(mCookie, msg, ext1, ext2);
    }

private:
    friend class MediaPlayerService;

    Mutex               mNotifyLock;
    void*               mCookie;
    notify_callback_f   mNotify;
};