From patchwork Fri Mar 28 10:31:09 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Wolfgang Rohdewald X-Patchwork-Id: 12639 Received: from mo-p00-ob.rzone.de ([81.169.146.162]) by www.linuxtv.org with esmtp (Exim 4.63) (envelope-from ) id 1JfBrq-0004I3-Lf for vdr@linuxtv.org; Fri, 28 Mar 2008 11:31:29 +0100 X-RZG-CLASS-ID: mo00 X-RZG-AUTH: lUscEMT+U7ZtQF0wy7QZy/kzdVG2EAqw2j1AuEakPqyAybfqJxiNX9PHFJg= Received: from server.rohdewald.de (p5B3E2DC5.dip0.t-ipconnect.de [91.62.45.197]) by post.webmailer.de (klopstock mo47) (RZmta 16.15) with ESMTP id K05e8ek2S9fJP6 for ; Fri, 28 Mar 2008 11:31:23 +0100 (MET) (envelope-from: ) Received: by server.rohdewald.de (Postfix, from userid 110) id 6C844520005; Fri, 28 Mar 2008 11:34:35 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on server.rohdewald.de X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL, BAYES_00 autolearn=ham version=3.2.4 Received: from notebook.rohdewald.de (notebook.rohdewald.de [10.13.1.3]) by server.rohdewald.de (Postfix) with ESMTP id 0E18D520005 for ; Fri, 28 Mar 2008 11:34:22 +0100 (CET) From: Wolfgang Rohdewald To: vdr@linuxtv.org Date: Fri, 28 Mar 2008 11:31:09 +0100 User-Agent: KMail/1.9.9 References: <200803170135.32636.wolfgang@rohdewald.de> <200803280814.42494.wolfgang@rohdewald.de> <47ECA8B0.3040901@cadsoft.de> In-Reply-To: <47ECA8B0.3040901@cadsoft.de> MIME-Version: 1.0 Message-Id: <200803281131.09962.wolfgang@rohdewald.de> X-LSpam-Score: -2.6 (--) X-LSpam-Report: No, score=-2.6 required=5.0 tests=BAYES_00=-2.599 autolearn=ham Subject: Re: [vdr] =?iso-8859-1?q?=5BPATCH=5D_ERROR=3A_attempt_to_open_OSD_whi?= =?iso-8859-1?q?le_it_is_already_open_-=09using_dummy_OSD!?= X-BeenThere: vdr@linuxtv.org X-Mailman-Version: 2.1.9 Precedence: list Reply-To: wolfgang@rohdewald.de, VDR Mailing List List-Id: VDR Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 Mar 2008 10:31:30 -0000 Status: O X-Status: X-Keywords: X-UID: 16291 On Freitag, 28. März 2008, Klaus Schmidinger wrote: > On 03/28/08 08:14, Wolfgang Rohdewald wrote: > > On Samstag, 22. März 2008, Klaus Schmidinger wrote: > >>> But vdr does not ask the plugin to hide before trying > >>> to show the message, so I am getting the same error > >>> message in that situation. I see no way to get rid of it. > >>> > >>> As a possible solution, can the player control somehow > >>> tell vdr that it can handle the message display itself? > >>> Something like > >>> > >>> class cControl : public cOsdObject { > >>> public: > >>> ... > >>> virtual bool DisplayMessage(...) { return false }; > >>> > >>> so if a player is active, its DisplayMessage is called. > >>> Only when it returns false, vdr then tries to display > >>> the message. > >> See cSkinDisplayReplay::SetMessage(). > > > > the unpatched vdr-1.5.16 does not contain that. Are you sure you > > are using an unpatched vdr? (Sorry, could not resist ;-) ) > > > > I do have > > void cSkinClassicDisplayMessage::SetMessage(eMessageType Type, const char *Text) > > So I omitted the parameters, big deal ;-) I actually meant cSkinDisplayReplay against cSkinClassicDisplayReplay. No big deal, of course. > > but this plugin does not use skins at all for its player osd. > > Just cOsdProvider::NewOsd(). So I dont see how SetMessage() could > > help me. > > You could set your OSDs "level" to something greater than 0. > Then it will be pushed into background when a higher level > OSD comes up, and restored after that. thank you, this works. No more error messages in the log. Patch for osddemo attached. Of course the message display is now visually very different from the normal player osd. I still think cControl::DisplayMessage() would be useful. Then the cControl could better visually integrate the message. --- /home/wr/Desktop/Downloads/vdr-1.6.0/PLUGINS/src/osddemo/osddemo.c 2007-08-15 15:17:55.000000000 +0200 +++ osddemo.c 2008-03-28 11:26:44.000000000 +0100 @@ -41,7 +41,7 @@ void cLineGame::Show(void) { - osd = cOsdProvider::NewOsd(100, 50); + osd = cOsdProvider::NewOsd(100, 50, 50); if (osd) { tArea Area = { 0, 0, 99, 199, 4 }; osd->SetAreas(&Area, 1);