On Freitag, 4. Februar 2005 07:12, Denis Oliver Kropp wrote:
> Quoting Stefan Lucke:
> > The difference betwenn ECVLUSIVE and ADMINISTRATIVE is that in the
> > first case I get no interrupts (matroxfb is not assgined to IRQ16),
> > whereas in the latter case I get them ;-) .
> 
> The cooperative level shouldn't make a difference regarding interrupts,
> but the layer configuration might do.

I updated to todays cvs, but that makes no difference.

What magic of layer configuration could that be? Below is a code snippet I
use in that case. When use "#if 0" I'll get the signal via composite out
IRQ 16 is used by matroxfb but could not set field parity.
With "#if 1" there is no exception thrown, IRQ 16 is not allocated and
tv stays black :-( .

      else
      {
        fprintf (stderr, "[dfb] creating new surface\n");
        if (videoSurface) {
          /* ------------------------------------------------------------------
           * clear previous used surface. there were some troubles when we
           * started in I420 mode, switched to YUY2 and video format changed
           * from 4:3 to 16:9 .
           */
          videoSurface->Clear(COLORKEY,0); //clear and
          videoSurface->Release();
        }

        videoSurface=NULL;
        videoSurface=dfb->CreateSurface(vidDsc);
        //videoSurface=videoLayer->GetSurface();

        if (setupStore.useMGAtv && (desc.caps & DLCAPS_FIELD_PARITY)) {
          dlc.flags = DLCONF_OPTIONS;
          dlc.options = DLOP_FIELD_PARITY;

          try {
            osdLayer->SetConfiguration(dlc);
          }
          catch (DFBException *ex) {
            fprintf (stderr,"Caught: action=%s, result=%s\n",
                     ex->GetAction(), ex->GetResult());
          }

#if 1
          try {
            osdLayer->SetCooperativeLevel(DLSCL_EXCLUSIVE);
          }
          catch (DFBException *ex) {
            fprintf (stderr,"Caught: action=%s, result=%s (could not set 
DLSCL_EXCLUSIVE)\n",
                     ex->GetAction(), ex->GetResult());
          }
#endif

          try {
            osdLayer->SetFieldParity(1);
          }
          catch (DFBException *ex) {
            fprintf (stderr,"Caught: action=%s, result=%s (could not set field 
parity)\n",
                     ex->GetAction(), ex->GetResult());
          }

        }


-- 
Stefan Lucke



Reply via email to