GHashTableIter iter;
gpointer key, value;
int ret;
- float tmp_float;
- uint64_t tmp_u64;
- struct sr_rational tmp_rat;
+ double tmp_double;
+ uint64_t tmp_u64, p, q;
gboolean tmp_bool;
- void *val;
+ GVariant *val, *rational[2];
g_hash_table_iter_init(&iter, args);
while (g_hash_table_iter_next(&iter, &key, &value)) {
ret = sr_parse_sizestring(value, &tmp_u64);
if (ret != SR_OK)
break;
- val = &tmp_u64;
+ val = g_variant_new_uint64(tmp_u64);
break;
case SR_T_CHAR:
- val = value;
+ val = g_variant_new_string(value);
break;
case SR_T_BOOL:
if (!value)
tmp_bool = TRUE;
else
tmp_bool = sr_parse_boolstring(value);
- val = &tmp_bool;
+ val = g_variant_new_boolean(tmp_bool);
break;
case SR_T_FLOAT:
- tmp_float = strtof(value, NULL);
- val = &tmp_float;
+ tmp_double = strtof(value, NULL);
+ val = g_variant_new_double(tmp_double);
break;
case SR_T_RATIONAL_PERIOD:
- if ((ret = sr_parse_period(value, &tmp_rat)) != SR_OK)
+ if ((ret = sr_parse_period(value, &p, &q)) != SR_OK)
break;
- val = &tmp_rat;
+ rational[0] = g_variant_new_uint64(p);
+ rational[1] = g_variant_new_uint64(q);
+ val = g_variant_new_tuple(rational, 2);
break;
case SR_T_RATIONAL_VOLT:
- if ((ret = sr_parse_voltage(value, &tmp_rat)) != SR_OK)
+ if ((ret = sr_parse_voltage(value, &p, &q)) != SR_OK)
break;
- val = &tmp_rat;
+ rational[0] = g_variant_new_uint64(p);
+ rational[1] = g_variant_new_uint64(q);
+ val = g_variant_new_tuple(rational, 2);
break;
default:
ret = SR_ERR;
sr_session_destroy();
return;
}
+ gvar = g_variant_new_uint64(limit_frames);
if (sr_config_set(sdi, SR_CONF_LIMIT_FRAMES, gvar) != SR_OK) {
g_critical("Failed to configure frame limit.");
sr_session_destroy();