libdvbv5: fix get_frontend logic
authorMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 16 Dec 2013 10:18:46 +0000 (08:18 -0200)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 16 Dec 2013 10:18:46 +0000 (08:18 -0200)
The patch that added a cache var for get/set broke the get frontend
data logic, as it doesn't copy data back from cache. Fix it.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
lib/libdvbv5/dvb-fe.c
lib/libdvbv5/dvb-file.c

index eeddb20..cc32ec0 100644 (file)
@@ -521,7 +521,7 @@ static int dvb_copy_fe_props(const struct dtv_property *from, int n, struct dtv_
 
 int dvb_fe_get_parms(struct dvb_v5_fe_parms *parms)
 {
-       int n = 0;
+       int i, n = 0;
        const unsigned int *sys_props;
        struct dtv_properties prop;
        struct dvb_frontend_parameters v3_parms;
@@ -553,6 +553,11 @@ int dvb_fe_get_parms(struct dvb_v5_fe_parms *parms)
                        dvb_perror("FE_GET_PROPERTY");
                        return errno;
                }
+
+               /* copy back params from temporary fe_prop */
+               for (i = 0; i < n; i++)
+                       dvb_fe_store_parm(parms, fe_prop[i].cmd, fe_prop[i].u.data);
+
                if (parms->verbose) {
                        dvb_log("Got parameters for %s:",
                               delivery_system_name[parms->current_sys]);
index e12506b..b6fdc04 100644 (file)
@@ -976,6 +976,8 @@ static int get_program_and_store(struct dvb_v5_fe_parms *parms,
                        if (rc == EAGAIN)
                                usleep(100000);
                } while (rc == EAGAIN);
+               if (rc)
+                       dvb_logerr("Couldn't get frontend props");
        }
        for (j = 0; j < parms->n_props; j++) {
                entry->props[j].cmd = parms->dvb_prop[j].cmd;