I didn't like the need to have "primary-layer=2" in /etc/directfbrc, and I also think mgatv output should always go to TV regardless of the primary layer. The included patch always defaults both OSD and video layers to crtc2 when mgatv option is used.

-- Heikki Lindholm
--- video-dfb.c.old     2006-09-16 20:11:11.000000000 +0300
+++ video-dfb.c 2006-09-16 20:11:15.000000000 +0300
@@ -307,23 +307,19 @@
     DFBWrapper=dfb;
     fprintf(stderr,"[dfb] Enumerating display Layers\n");
 
-    osdLayer=dfb->GetDisplayLayer(DLID_PRIMARY);
-    if (!osdLayer) {
-      fprintf(stderr,"[dfb] no OSD layer exiting\n");
-      exit(EXIT_FAILURE);
-    }
 
     if (!setupStore->useMGAtv)
     {
+      osdLayer=dfb->GetDisplayLayer(DLID_PRIMARY);
+      if (!osdLayer) {
+        fprintf(stderr,"[dfb] no OSD layer exiting\n");
+        exit(EXIT_FAILURE);
+      }
+
       fprintf(stderr,"[dfb] Configuring CooperativeLevel for OSD\n");
       osdLayer->SetCooperativeLevel(DLSCL_ADMINISTRATIVE);
     }
 
-    osdLayerDescription = osdLayer->GetDescription();
-
-    osdLayer->GetConfiguration(&osdLayerConfiguration);
-    osdLayerConfiguration.flags = DLCONF_ALL;
-
     videoLayer = NULL;
     layerInfo = &layerList [ANY_LAYER];
     if (setupStore->useMGAtv) {
@@ -353,6 +349,21 @@
       exit(EXIT_FAILURE);
     }
 
+    if (setupStore->useMGAtv)
+    {
+      osdLayer=dfb->GetDisplayLayer(videoLayer->GetID());
+
+      if (!osdLayer) {
+        fprintf(stderr,"[dfb] no OSD layer exiting\n");
+        exit(EXIT_FAILURE);
+      }
+    }
+
+    osdLayerDescription = osdLayer->GetDescription();
+
+    osdLayer->GetConfiguration(&osdLayerConfiguration);
+    osdLayerConfiguration.flags = DLCONF_ALL;
+
     videoLayerDescription = videoLayer->GetDescription();
 
     /* 
--------------------------------------------------------------------------
_______________________________________________
Softdevice-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/softdevice-devel

Reply via email to