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