diff --git a/softhddevice.cpp b/softhddevice.cpp index e1c4e31..f931f76 100644 --- a/softhddevice.cpp +++ b/softhddevice.cpp @@ -1476,6 +1476,8 @@ void cSoftReceiver::Receive(uchar * data, int size) ////////////////////////////////////////////////////////////////////////////// +static cSoftReceiver * PipReceiver; ///< PIP receiver + /** ** Prepare new PIP. */ @@ -1490,13 +1492,28 @@ static void NewPip(void) && (channel = Channels.GetByNumber(cDevice::CurrentChannel())) && (device = cDevice::GetDevice(channel, 1, false))) { fprintf(stderr, "pip: %d %p %p\n", channel_nr, channel, device); + + delete PipReceiver; + PipReceiver = NULL; + device->SwitchChannel(channel, false); receiver = new cSoftReceiver(channel); device->AttachReceiver(receiver); fprintf(stderr, "pip: attached\n"); + PipReceiver = receiver; } } +/** +** Stop PIP. +*/ +static void DelPip(void) +{ + fprintf(stderr, "pip: stopped\n"); + delete PipReceiver; + PipReceiver = NULL; +} + #endif ////////////////////////////////////////////////////////////////////////////// @@ -1743,6 +1760,9 @@ eOSState cSoftHdMenu::ProcessKey(eKeys key) case osUser2: NewPip(); return osEnd; + case osUser8: + DelPip(); + return osEnd; #endif default: Create();