Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Local volume adjustment levels aren't saved when using keyboard #6211

Closed
mgalvey opened this issue Sep 26, 2023 · 8 comments · Fixed by #6238
Closed

Local volume adjustment levels aren't saved when using keyboard #6211

mgalvey opened this issue Sep 26, 2023 · 8 comments · Fixed by #6238
Assignees
Labels
bug A bug (error) in the software client ui

Comments

@mgalvey
Copy link

mgalvey commented Sep 26, 2023

Description

Over the past several months, I've been having trouble getting Mumble to reliably save my local volume adjustment factors. I think I've finally discovered why: it appears that the code for the adjustment slider only saves the adjustment values on a "QSlider::sliderReleased" event, which I'm assuming only fires on a mouse or touch release, meaning that anyone who uses their keyboard to fine-tune the value after clicking to focus the slider will end up with whatever the value was at the "mouse up" event as the saved value. To make matters worse (and what made it so hard for me to even figure out what was going on for so long), Mumble changes the "session" value on any change to the underlying slider value, but only appears to save on the sliderReleased event. Because Mumble sets the volume level for the session on change of value, this wouldn't be apparent until the user whose volume was being adjusted changed state (self mute, deafen, reconnect, probably other events), at which point the value displayed in the UI and applied to the user would revert to the saved value. Anyway, it's the seemingly random offsets caused by the initial click of the slider that threw me off so badly. I'd observe, sometimes many hours or even days later (depending on the next time Mumble reloaded the saved value for a given user), that my saved volume levels would be off by seemingly random amounts that had no relation to the values I intended to set.

Steps to reproduce

  • Join any server with registered connected users.
  • Adjust the local volume of any user:
    • Right click on the user to display the context menu
    • Left click on the local volume adjustment slider to gain focus. Note the value displayed when you release the mouse.
    • Adjust the value using the left or right arrow keys to some other value, and press enter or esc to close the context menu.
  • Note that the value set by using the arrow keys will be in effect until the adjusted user either changes state, or if you reload your own client, reconnect to the server, etc, at which point the first value you noted will be in effect.

Mumble version

27e9552

Mumble component

Client

OS

Linux

Reproducible?

Yes

Additional information

Please note that I am quite unfamiliar with the Mumble codebase, so this is only my best guess at the source of the problem, but I believe the issue stems from the sections of code described below. Also note that in my testing, I've only accounted for registered users, where it makes sense to expect an adjustment value to remain consistent across sessions. It appears that users without a cert (I think that's just unregistered users?) are never saved persistently.

Value is only being saved to the DB here.
Should also (or perhaps only, since any mouse interaction would now result in two potential writes if the other part is left unchanged) be saved somewhere in here, or alternatively, to save on disk writes, when the context menu is closed and the value is different from what is already saved in the DB.

I believe that this issue should be relatively high priority to fix for two reasons, both of which could be considered accessibility-related. First, anyone who primarily uses a keyboard to interact with software will have trouble due to this bug should they need the relevant functionality. Second, the results of this bug could lead to increased risk of hearing damage in the worst case if, for example, some user on a server has inconsistent volume levels and adjusting the value down is necessary to maintain safe volume levels. I can say from personal experience that it's quite frustrating to try and reduce the volume of someone and then have my client revert to a much louder level seemingly without reason. I know in a perfect world, everyone would properly configure mumble, use AGC, etc, but unfortunately I have many users who refuse to do that for various [non-]reasons, and local adjustments are my only way to keep volume levels tolerable.

Relevant log output

No response

Screenshots

No response

@mgalvey mgalvey added bug A bug (error) in the software triage This issue is waiting to be triaged by one of the project members labels Sep 26, 2023
@Krzmbrzl Krzmbrzl added client and removed triage This issue is waiting to be triaged by one of the project members labels Sep 27, 2023
@mgalvey
Copy link
Author

mgalvey commented Sep 27, 2023

Just wanted to provide an update. I've done some testing and confirmed that the code I linked to is where any fix would need to be applied. I built the client from this commit and confirmed that with the changes I made, I'm at least no longer seeing the described behavior.

I'm not suggesting that my branch should be merged, however, since it leaves the scaffolding for the old sliderReleased event intact; this was just me confirming my suspicions and (hopefully) making it easier for whoever writes the final fix. I do think that the ideal solution would be to trigger a save only when the context menu closes (though a way to do this was not immediately evident, I'm sure someone more familiar with Qt would know how/if that can be done) AND the value of the slider does not match the already saved value, though that could just be me being hyper vigilant about trying to minimize writes, and sqlite may do that transparently anyway.

@Hartmnt
Copy link
Member

Hartmnt commented Sep 28, 2023

Good catch. I will look into this soon and wrestle with Qt to try and find a good solution for this... :)

@Hartmnt Hartmnt added the ui label Sep 28, 2023
@mgalvey
Copy link
Author

mgalvey commented Sep 29, 2023

Thank you, @Hartmnt!

@Hartmnt Hartmnt self-assigned this Oct 11, 2023
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 11, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 11, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 11, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 11, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
@Hartmnt
Copy link
Member

Hartmnt commented Oct 11, 2023

@mgalvey If you have the time, feel free to check if #6238 solves your problem. I tested it locally and it seems to work.
Note: Because of accessibility changes you will not be able to use up/down to change the slider value in the future. Left\right will continue to work.

Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 12, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 12, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 12, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
@mgalvey
Copy link
Author

mgalvey commented Oct 12, 2023

@Hartmnt: I can confirm that the original problem is solved with a client built from 5d32ac3. However, I did just think of another way to manipulate the slider: with the mouse wheel. I don't know why anyone would do so, given how coarse the adjustments end up being (at least on my system; the steps are 3dB each), but it doesn't look like a save happens in that event. I wouldn't go so far as to say that's critical functionality, but if it's easy to add to what you've already done, maybe consider doing so.

Thanks for your work on this issue!

@Hartmnt
Copy link
Member

Hartmnt commented Oct 12, 2023

@Hartmnt: I can confirm that the original problem is solved with a client built from 5d32ac3. However, I did just think of another way to manipulate the slider: with the mouse wheel. I don't know why anyone would do so, given how coarse the adjustments end up being (at least on my system; the steps are 3dB each), but it doesn't look like a save happens in that event. I wouldn't go so far as to say that's critical functionality, but if it's easy to add to what you've already done, maybe consider doing so.

Thanks for your work on this issue!

Yes, we too already figured that out in #6238 😄

@mgalvey
Copy link
Author

mgalvey commented Oct 12, 2023

Ah, so you did. Now I don't feel so bad about springing a new facet of the same issue on you :D.

Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 16, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 16, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 16, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 16, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 16, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 16, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 16, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 20, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 24, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 24, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 24, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 24, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 24, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 24, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 27, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 27, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 28, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 30, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 30, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 30, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 30, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 30, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 30, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 30, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Oct 30, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Nov 1, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Nov 1, 2023
Previously, when using keyboard arrows, the new slider widget action
applied the new local volume but did not save it. That was because it
used the sliderReleased event to save the value, which is not triggered
by keyboard updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.

This commit introduces an event filter in addition to the sliderChanged event,
which is observing key releases. If the slider has focus and left/right is released,
it is then calling the save slot of the slider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Nov 1, 2023
Previously, when using keyboard arrows or the mouse wheel,
the new slider widget action applied the new local volume
but did not save it. That was because it used the sliderReleased
event to save the value, which is not triggered by keyboard or mouse
wheel updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.
Additionally, the ListenerVolumeSlider would spam packets to the
server, as the listener volume is saved server-side.

This commit introduces event filters in addition to the sliderChanged event,
which are observing key releases and mouse wheel events.
It also introduces a delay timer for packets send to the server from the
ListenerVolumeSlider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Dec 31, 2023
Previously, when using keyboard arrows or the mouse wheel,
the new slider widget action applied the new local volume
but did not save it. That was because it used the sliderReleased
event to save the value, which is not triggered by keyboard or mouse
wheel updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.
Additionally, the ListenerVolumeSlider would spam packets to the
server, as the listener volume is saved server-side.

This commit introduces event filters in addition to the sliderChanged event,
which are observing key releases and mouse wheel events.
It also introduces a delay timer for packets send to the server from the
ListenerVolumeSlider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Dec 31, 2023
Previously, when using keyboard arrows or the mouse wheel,
the new slider widget action applied the new local volume
but did not save it. That was because it used the sliderReleased
event to save the value, which is not triggered by keyboard or mouse
wheel updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.
Additionally, the ListenerVolumeSlider would spam packets to the
server, as the listener volume is saved server-side.

This commit introduces event filters in addition to the sliderChanged event,
which are observing key releases and mouse wheel events.
It also introduces a delay timer for packets send to the server from the
ListenerVolumeSlider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Dec 31, 2023
Previously, when using keyboard arrows or the mouse wheel,
the new slider widget action applied the new local volume
but did not save it. That was because it used the sliderReleased
event to save the value, which is not triggered by keyboard or mouse
wheel updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.
Additionally, the ListenerVolumeSlider would spam packets to the
server, as the listener volume is saved server-side.

This commit introduces event filters in addition to the sliderChanged event,
which are observing key releases and mouse wheel events.
It also introduces a delay timer for packets send to the server from the
ListenerVolumeSlider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Dec 31, 2023
Previously, when using keyboard arrows or the mouse wheel,
the new slider widget action applied the new local volume
but did not save it. That was because it used the sliderReleased
event to save the value, which is not triggered by keyboard or mouse
wheel updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.
Additionally, the ListenerVolumeSlider would spam packets to the
server, as the listener volume is saved server-side.

This commit introduces event filters in addition to the sliderChanged event,
which are observing key releases and mouse wheel events.
It also introduces a delay timer for packets send to the server from the
ListenerVolumeSlider.

Fixes mumble-voip#6211
Hartmnt added a commit to Hartmnt/mumble that referenced this issue Dec 31, 2023
Previously, when using keyboard arrows or the mouse wheel,
the new slider widget action applied the new local volume
but did not save it. That was because it used the sliderReleased
event to save the value, which is not triggered by keyboard or mouse
wheel updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.
Additionally, the ListenerVolumeSlider would spam packets to the
server, as the listener volume is saved server-side.

This commit introduces event filters in addition to the sliderChanged event,
which are observing key releases and mouse wheel events.
It also introduces a delay timer for packets send to the server from the
ListenerVolumeSlider.

Fixes mumble-voip#6211
Krzmbrzl pushed a commit that referenced this issue Dec 31, 2023
Previously, when using keyboard arrows or the mouse wheel,
the new slider widget action applied the new local volume
but did not save it. That was because it used the sliderReleased
event to save the value, which is not triggered by keyboard or mouse
wheel updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.
Additionally, the ListenerVolumeSlider would spam packets to the
server, as the listener volume is saved server-side.

This commit introduces event filters in addition to the sliderChanged event,
which are observing key releases and mouse wheel events.
It also introduces a delay timer for packets send to the server from the
ListenerVolumeSlider.

Fixes #6211

(cherry picked from commit 6213ed4)
@mgalvey
Copy link
Author

mgalvey commented Dec 31, 2023

Thank you very much to those who worked on this!

dexgs pushed a commit to dexgs/mumble that referenced this issue Jan 15, 2024
Previously, when using keyboard arrows or the mouse wheel,
the new slider widget action applied the new local volume
but did not save it. That was because it used the sliderReleased
event to save the value, which is not triggered by keyboard or mouse
wheel updates.

We could simply save the local volume on every sliderChange instead of
on sliderRelease, but that would cause many writes to the disk
in a short period of time and possibly lag the client.
Additionally, the ListenerVolumeSlider would spam packets to the
server, as the listener volume is saved server-side.

This commit introduces event filters in addition to the sliderChanged event,
which are observing key releases and mouse wheel events.
It also introduces a delay timer for packets send to the server from the
ListenerVolumeSlider.

Fixes mumble-voip#6211
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug A bug (error) in the software client ui
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants