[linux-dvb] problems and workaround when tuning to a channel with DD enabled

Wolfgang Rohdewald wolfgang at rohdewald.de
Tue Jun 7 19:25:32 CEST 2005


On Dienstag 07 Juni 2005 17:44, Johannes Stezenbach wrote:
> Why don't you just fix the problem with the b0rked error
> handling in Load/BlitBitmap and be done with it?

I would also have to look at the other problem when replaying
DolbySurround.

Anyway I'll try to fix this but I need some help to understand
the code.

Just to test if my thinking is correct, what would you say about this: (yet
untested, and when everything is stable I would remove the KERN_INFO about
the interrupt)

--- 12.org/drivers/media/dvb/ttpci/av7110_hw.c  2005-06-06 09:08:08.000000000 +0200
+++ linux/drivers/media/dvb/ttpci/av7110_hw.c   2005-06-07 19:23:45.000000000 +0200
@@ -471,8 +471,12 @@
        ret = __av7110_send_fw_cmd(av7110, buf, length);
        up(&av7110->dcomlock);
        if (ret)
-               printk(KERN_ERR "dvb-ttpci: %s(): av7110_send_fw_cmd error %d\n",
-                      __FUNCTION__, ret);
+               if (ret==-ERESTARTSYS)
+                       printk(KERN_INFO "dvb-ttpci: %s(): av7110_send_fw_cmd interrupted\n",
+                               __FUNCTION__);
+               else
+                       printk(KERN_ERR "dvb-ttpci: %s(): av7110_send_fw_cmd error %d\n",
+                               __FUNCTION__, ret);
        return ret;
 }

@@ -1111,10 +1115,14 @@
                textbuf[239] = 0;
                if (dc->x1 > 3)
                        dc->x1 = 3;
-               SetFont(av7110, av7110->osdwin, dc->x1,
+               ret = SetFont(av7110, av7110->osdwin, dc->x1,
                        (u16) (dc->color & 0xffff), (u16) (dc->color >> 16));
-               FlushText(av7110);
-               WriteText(av7110, av7110->osdwin, dc->x0, dc->y0, textbuf);
+               if (ret)
+                       goto out;
+               ret = FlushText(av7110);
+               if (ret)
+                       goto out;
+               ret = WriteText(av7110, av7110->osdwin, dc->x0, dc->y0, textbuf);
                goto out;
        }
        case OSD_SetWindow:

-- 
Wolfgang




More information about the linux-dvb mailing list