mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	volume: Use a macro to check if a volume is valid
This adds a PA_VOLUME_IS_VALID() macro for checking if a given pa_volume_t is valid. This makes changes to the volume ranges simpler (just change PA_VOLUME_MAX, for example, without needing to modify any other code).
This commit is contained in:
		
							parent
							
								
									4d84a00b49
								
							
						
					
					
						commit
						1d2ef7923d
					
				
					 9 changed files with 30 additions and 27 deletions
				
			
		| 
						 | 
					@ -1310,7 +1310,7 @@ static void handle_upload_sample(DBusConnection *conn, DBusMessage *msg, void *u
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < n_volume_entries; ++i) {
 | 
					    for (i = 0; i < n_volume_entries; ++i) {
 | 
				
			||||||
        if (default_volume[i] > PA_VOLUME_MAX) {
 | 
					        if (!PA_VOLUME_IS_VALID(default_volume[i])) {
 | 
				
			||||||
            pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Invalid volume: %u.", default_volume[i]);
 | 
					            pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Invalid volume: %u.", default_volume[i]);
 | 
				
			||||||
            goto finish;
 | 
					            goto finish;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -438,7 +438,7 @@ static void handle_set_volume(DBusConnection *conn, DBusMessage *msg, DBusMessag
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < n_volume_entries; ++i) {
 | 
					    for (i = 0; i < n_volume_entries; ++i) {
 | 
				
			||||||
        if (volume[i] > PA_VOLUME_MAX) {
 | 
					        if (!PA_VOLUME_IS_VALID(volume[i])) {
 | 
				
			||||||
            pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Too large volume value: %u", volume[i]);
 | 
					            pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Too large volume value: %u", volume[i]);
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -366,7 +366,7 @@ static void handle_play(DBusConnection *conn, DBusMessage *msg, void *userdata)
 | 
				
			||||||
    if (!(property_list = pa_dbus_get_proplist_arg(conn, msg, &msg_iter)))
 | 
					    if (!(property_list = pa_dbus_get_proplist_arg(conn, msg, &msg_iter)))
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (volume > PA_VOLUME_MAX) {
 | 
					    if (PA_VOLUME_IS_VALID(volume)) {
 | 
				
			||||||
        pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Invalid volume.");
 | 
					        pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Invalid volume.");
 | 
				
			||||||
        goto finish;
 | 
					        goto finish;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -416,7 +416,7 @@ static void handle_play_to_sink(DBusConnection *conn, DBusMessage *msg, void *us
 | 
				
			||||||
        goto finish;
 | 
					        goto finish;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (volume > PA_VOLUME_MAX) {
 | 
					    if (PA_VOLUME_IS_VALID(volume)) {
 | 
				
			||||||
        pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Invalid volume.");
 | 
					        pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Invalid volume.");
 | 
				
			||||||
        goto finish;
 | 
					        goto finish;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -378,7 +378,7 @@ static void handle_set_volume(DBusConnection *conn, DBusMessage *msg, DBusMessag
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < n_volume_entries; ++i) {
 | 
					    for (i = 0; i < n_volume_entries; ++i) {
 | 
				
			||||||
        if (volume[i] > PA_VOLUME_MAX) {
 | 
					        if (PA_VOLUME_IS_VALID(volume[i])) {
 | 
				
			||||||
            pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Too large volume value: %u", volume[i]);
 | 
					            pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Too large volume value: %u", volume[i]);
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -367,7 +367,7 @@ static int get_volume_arg(DBusConnection *conn, DBusMessage *msg, DBusMessageIte
 | 
				
			||||||
        pa_assert_se(dbus_message_iter_next(&struct_iter));
 | 
					        pa_assert_se(dbus_message_iter_next(&struct_iter));
 | 
				
			||||||
        dbus_message_iter_get_basic(&struct_iter, &chan_vol);
 | 
					        dbus_message_iter_get_basic(&struct_iter, &chan_vol);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (chan_vol > PA_VOLUME_MAX) {
 | 
					        if (PA_VOLUME_IS_VALID(chan_vol)) {
 | 
				
			||||||
            pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Invalid volume: %u", chan_vol);
 | 
					            pa_dbus_send_error(conn, msg, DBUS_ERROR_INVALID_ARGS, "Invalid volume: %u", chan_vol);
 | 
				
			||||||
            return -1;
 | 
					            return -1;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -191,7 +191,7 @@ pa_operation *pa_context_play_sample(pa_context *c, const char *name, const char
 | 
				
			||||||
    pa_tagstruct_putu32(t, PA_INVALID_INDEX);
 | 
					    pa_tagstruct_putu32(t, PA_INVALID_INDEX);
 | 
				
			||||||
    pa_tagstruct_puts(t, dev);
 | 
					    pa_tagstruct_puts(t, dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (volume == PA_VOLUME_INVALID && c->version < 15)
 | 
					    if (!PA_VOLUME_IS_VALID(volume) && c->version < 15)
 | 
				
			||||||
        volume = PA_VOLUME_NORM;
 | 
					        volume = PA_VOLUME_NORM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_tagstruct_putu32(t, volume);
 | 
					    pa_tagstruct_putu32(t, volume);
 | 
				
			||||||
| 
						 | 
					@ -232,7 +232,7 @@ pa_operation *pa_context_play_sample_with_proplist(pa_context *c, const char *na
 | 
				
			||||||
    pa_tagstruct_putu32(t, PA_INVALID_INDEX);
 | 
					    pa_tagstruct_putu32(t, PA_INVALID_INDEX);
 | 
				
			||||||
    pa_tagstruct_puts(t, dev);
 | 
					    pa_tagstruct_puts(t, dev);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (volume == PA_VOLUME_INVALID && c->version < 15)
 | 
					    if (!PA_VOLUME_IS_VALID(volume) && c->version < 15)
 | 
				
			||||||
        volume = PA_VOLUME_NORM;
 | 
					        volume = PA_VOLUME_NORM;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_tagstruct_putu32(t, volume);
 | 
					    pa_tagstruct_putu32(t, volume);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -201,8 +201,8 @@ pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, p
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) {
 | 
					pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_return_val_if_fail(a != PA_VOLUME_INVALID, PA_VOLUME_INVALID);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(a), PA_VOLUME_INVALID);
 | 
				
			||||||
    pa_return_val_if_fail(b != PA_VOLUME_INVALID, PA_VOLUME_INVALID);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(b), PA_VOLUME_INVALID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* cbrt((a/PA_VOLUME_NORM)^3*(b/PA_VOLUME_NORM)^3)*PA_VOLUME_NORM = a*b/PA_VOLUME_NORM */
 | 
					    /* cbrt((a/PA_VOLUME_NORM)^3*(b/PA_VOLUME_NORM)^3)*PA_VOLUME_NORM = a*b/PA_VOLUME_NORM */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -211,8 +211,8 @@ pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) {
 | 
					pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_return_val_if_fail(a != PA_VOLUME_INVALID, PA_VOLUME_INVALID);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(a), PA_VOLUME_INVALID);
 | 
				
			||||||
    pa_return_val_if_fail(b != PA_VOLUME_INVALID, PA_VOLUME_INVALID);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(b), PA_VOLUME_INVALID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (b <= PA_VOLUME_MUTED)
 | 
					    if (b <= PA_VOLUME_MUTED)
 | 
				
			||||||
        return 0;
 | 
					        return 0;
 | 
				
			||||||
| 
						 | 
					@ -238,7 +238,7 @@ pa_volume_t pa_sw_volume_from_dB(double dB) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
double pa_sw_volume_to_dB(pa_volume_t v) {
 | 
					double pa_sw_volume_to_dB(pa_volume_t v) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_return_val_if_fail(v != PA_VOLUME_INVALID, PA_DECIBEL_MININFTY);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(v), PA_DECIBEL_MININFTY);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (v <= PA_VOLUME_MUTED)
 | 
					    if (v <= PA_VOLUME_MUTED)
 | 
				
			||||||
        return PA_DECIBEL_MININFTY;
 | 
					        return PA_DECIBEL_MININFTY;
 | 
				
			||||||
| 
						 | 
					@ -267,7 +267,7 @@ pa_volume_t pa_sw_volume_from_linear(double v) {
 | 
				
			||||||
double pa_sw_volume_to_linear(pa_volume_t v) {
 | 
					double pa_sw_volume_to_linear(pa_volume_t v) {
 | 
				
			||||||
    double f;
 | 
					    double f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_return_val_if_fail(v != PA_VOLUME_INVALID, 0.0);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(v), 0.0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (v <= PA_VOLUME_MUTED)
 | 
					    if (v <= PA_VOLUME_MUTED)
 | 
				
			||||||
        return 0.0;
 | 
					        return 0.0;
 | 
				
			||||||
| 
						 | 
					@ -317,7 +317,7 @@ char *pa_volume_snprint(char *s, size_t l, pa_volume_t v) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_init_i18n();
 | 
					    pa_init_i18n();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (v == PA_VOLUME_INVALID) {
 | 
					    if (!PA_VOLUME_IS_VALID(v)) {
 | 
				
			||||||
        pa_snprintf(s, l, _("(invalid)"));
 | 
					        pa_snprintf(s, l, _("(invalid)"));
 | 
				
			||||||
        return s;
 | 
					        return s;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -367,7 +367,7 @@ char *pa_sw_volume_snprint_dB(char *s, size_t l, pa_volume_t v) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_init_i18n();
 | 
					    pa_init_i18n();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (v == PA_VOLUME_INVALID) {
 | 
					    if (!PA_VOLUME_IS_VALID(v)) {
 | 
				
			||||||
        pa_snprintf(s, l, _("(invalid)"));
 | 
					        pa_snprintf(s, l, _("(invalid)"));
 | 
				
			||||||
        return s;
 | 
					        return s;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
| 
						 | 
					@ -384,7 +384,7 @@ int pa_cvolume_channels_equal_to(const pa_cvolume *a, pa_volume_t v) {
 | 
				
			||||||
    pa_assert(a);
 | 
					    pa_assert(a);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_return_val_if_fail(pa_cvolume_valid(a), 0);
 | 
					    pa_return_val_if_fail(pa_cvolume_valid(a), 0);
 | 
				
			||||||
    pa_return_val_if_fail(v != PA_VOLUME_INVALID, 0);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(v), 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (c = 0; c < a->channels; c++)
 | 
					    for (c = 0; c < a->channels; c++)
 | 
				
			||||||
        if (a->values[c] != v)
 | 
					        if (a->values[c] != v)
 | 
				
			||||||
| 
						 | 
					@ -418,7 +418,7 @@ pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a,
 | 
				
			||||||
    pa_assert(a);
 | 
					    pa_assert(a);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_return_val_if_fail(pa_cvolume_valid(a), NULL);
 | 
					    pa_return_val_if_fail(pa_cvolume_valid(a), NULL);
 | 
				
			||||||
    pa_return_val_if_fail(b != PA_VOLUME_INVALID, NULL);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(b), NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < a->channels; i++)
 | 
					    for (i = 0; i < a->channels; i++)
 | 
				
			||||||
        dest->values[i] = pa_sw_volume_multiply(a->values[i], b);
 | 
					        dest->values[i] = pa_sw_volume_multiply(a->values[i], b);
 | 
				
			||||||
| 
						 | 
					@ -453,7 +453,7 @@ pa_cvolume *pa_sw_cvolume_divide_scalar(pa_cvolume *dest, const pa_cvolume *a, p
 | 
				
			||||||
    pa_assert(a);
 | 
					    pa_assert(a);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_return_val_if_fail(pa_cvolume_valid(a), NULL);
 | 
					    pa_return_val_if_fail(pa_cvolume_valid(a), NULL);
 | 
				
			||||||
    pa_return_val_if_fail(b != PA_VOLUME_INVALID, NULL);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(b), NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (i = 0; i < a->channels; i++)
 | 
					    for (i = 0; i < a->channels; i++)
 | 
				
			||||||
        dest->values[i] = pa_sw_volume_divide(a->values[i], b);
 | 
					        dest->values[i] = pa_sw_volume_divide(a->values[i], b);
 | 
				
			||||||
| 
						 | 
					@ -472,7 +472,7 @@ int pa_cvolume_valid(const pa_cvolume *v) {
 | 
				
			||||||
        return 0;
 | 
					        return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (c = 0; c < v->channels; c++)
 | 
					    for (c = 0; c < v->channels; c++)
 | 
				
			||||||
        if (v->values[c] == PA_VOLUME_INVALID)
 | 
					        if (!PA_VOLUME_IS_VALID(v->values[c]))
 | 
				
			||||||
            return 0;
 | 
					            return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 1;
 | 
					    return 1;
 | 
				
			||||||
| 
						 | 
					@ -686,7 +686,7 @@ pa_cvolume* pa_cvolume_scale(pa_cvolume *v, pa_volume_t max) {
 | 
				
			||||||
    pa_assert(v);
 | 
					    pa_assert(v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
 | 
					    pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
 | 
				
			||||||
    pa_return_val_if_fail(max != PA_VOLUME_INVALID, NULL);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(max), NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    t = pa_cvolume_max(v);
 | 
					    t = pa_cvolume_max(v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -705,7 +705,7 @@ pa_cvolume* pa_cvolume_scale_mask(pa_cvolume *v, pa_volume_t max, pa_channel_map
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_assert(v);
 | 
					    pa_assert(v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_return_val_if_fail(max != PA_VOLUME_INVALID, NULL);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(max), NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!cm)
 | 
					    if (!cm)
 | 
				
			||||||
        return pa_cvolume_scale(v, max);
 | 
					        return pa_cvolume_scale(v, max);
 | 
				
			||||||
| 
						 | 
					@ -834,7 +834,7 @@ pa_cvolume* pa_cvolume_set_position(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(cv, map), NULL);
 | 
					    pa_return_val_if_fail(pa_cvolume_compatible_with_channel_map(cv, map), NULL);
 | 
				
			||||||
    pa_return_val_if_fail(t < PA_CHANNEL_POSITION_MAX, NULL);
 | 
					    pa_return_val_if_fail(t < PA_CHANNEL_POSITION_MAX, NULL);
 | 
				
			||||||
    pa_return_val_if_fail(v != PA_VOLUME_INVALID, NULL);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(v), NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for (c = 0; c < map->channels; c++)
 | 
					    for (c = 0; c < map->channels; c++)
 | 
				
			||||||
        if (map->map[c] == t) {
 | 
					        if (map->map[c] == t) {
 | 
				
			||||||
| 
						 | 
					@ -891,7 +891,7 @@ pa_cvolume* pa_cvolume_inc_clamp(pa_cvolume *v, pa_volume_t inc, pa_volume_t lim
 | 
				
			||||||
    pa_assert(v);
 | 
					    pa_assert(v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
 | 
					    pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
 | 
				
			||||||
    pa_return_val_if_fail(inc != PA_VOLUME_INVALID, NULL);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(inc), NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m = pa_cvolume_max(v);
 | 
					    m = pa_cvolume_max(v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -913,7 +913,7 @@ pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec) {
 | 
				
			||||||
    pa_assert(v);
 | 
					    pa_assert(v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
 | 
					    pa_return_val_if_fail(pa_cvolume_valid(v), NULL);
 | 
				
			||||||
    pa_return_val_if_fail(dec != PA_VOLUME_INVALID, NULL);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(dec), NULL);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    m = pa_cvolume_max(v);
 | 
					    m = pa_cvolume_max(v);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -118,6 +118,9 @@ typedef uint32_t pa_volume_t;
 | 
				
			||||||
/** Special 'invalid' volume. \since 0.9.16 */
 | 
					/** Special 'invalid' volume. \since 0.9.16 */
 | 
				
			||||||
#define PA_VOLUME_INVALID ((pa_volume_t) UINT32_MAX)
 | 
					#define PA_VOLUME_INVALID ((pa_volume_t) UINT32_MAX)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/** Check if volume is valid. \since 0.9.22 */
 | 
				
			||||||
 | 
					#define PA_VOLUME_IS_VALID(v) ((v) <= PA_VOLUME_MAX)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** A structure encapsulating a per-channel volume */
 | 
					/** A structure encapsulating a per-channel volume */
 | 
				
			||||||
typedef struct pa_cvolume {
 | 
					typedef struct pa_cvolume {
 | 
				
			||||||
    uint8_t channels;                     /**< Number of channels */
 | 
					    uint8_t channels;                     /**< Number of channels */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -336,12 +336,12 @@ int pa_scache_play_item(pa_core *c, const char *name, pa_sink *sink, pa_volume_t
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pass_volume = TRUE;
 | 
					    pass_volume = TRUE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (e->volume_is_set && volume != PA_VOLUME_INVALID) {
 | 
					    if (e->volume_is_set && !PA_VOLUME_IS_VALID(volume)) {
 | 
				
			||||||
        pa_cvolume_set(&r, e->sample_spec.channels, volume);
 | 
					        pa_cvolume_set(&r, e->sample_spec.channels, volume);
 | 
				
			||||||
        pa_sw_cvolume_multiply(&r, &r, &e->volume);
 | 
					        pa_sw_cvolume_multiply(&r, &r, &e->volume);
 | 
				
			||||||
    } else if (e->volume_is_set)
 | 
					    } else if (e->volume_is_set)
 | 
				
			||||||
        r = e->volume;
 | 
					        r = e->volume;
 | 
				
			||||||
    else if (volume != PA_VOLUME_INVALID)
 | 
					    else if (!PA_VOLUME_IS_VALID(volume))
 | 
				
			||||||
        pa_cvolume_set(&r, e->sample_spec.channels, volume);
 | 
					        pa_cvolume_set(&r, e->sample_spec.channels, volume);
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
        pass_volume = FALSE;
 | 
					        pass_volume = FALSE;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue