Add alt+d deafen keyboard shortcut.
This commit is contained in:
@@ -264,6 +264,17 @@ func (u *User) SetSelfDeafened(muted bool) {
|
||||
u.client.Conn.WriteProto(&packet)
|
||||
}
|
||||
|
||||
// SetSelfMutedAndDeafened changes both self-mute and self-deafen in one
|
||||
// protocol update so observers never see an intermediate audio state.
|
||||
func (u *User) SetSelfMutedAndDeafened(muted, deafened bool) {
|
||||
packet := MumbleProto.UserState{
|
||||
Session: &u.Session,
|
||||
SelfMute: &muted,
|
||||
SelfDeaf: &deafened,
|
||||
}
|
||||
u.client.Conn.WriteProto(&packet)
|
||||
}
|
||||
|
||||
// RequestStats requests that the user's stats be sent to the client.
|
||||
func (u *User) RequestStats() {
|
||||
packet := MumbleProto.UserStats{
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package gumble
|
||||
|
||||
import (
|
||||
"net"
|
||||
"testing"
|
||||
|
||||
"git.stormux.org/storm/barnard/gumble/gumble/MumbleProto"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
func TestSetSelfMutedAndDeafenedWritesOneCombinedState(t *testing.T) {
|
||||
for _, deafened := range []bool{true, false} {
|
||||
name := "undeafen"
|
||||
if deafened {
|
||||
name = "deafen"
|
||||
}
|
||||
t.Run(name, func(t *testing.T) {
|
||||
local, remote := net.Pipe()
|
||||
defer local.Close()
|
||||
defer remote.Close()
|
||||
|
||||
client := &Client{Conn: NewConn(local)}
|
||||
user := &User{Session: 7, client: client}
|
||||
written := make(chan struct{})
|
||||
go func() {
|
||||
user.SetSelfMutedAndDeafened(true, deafened)
|
||||
close(written)
|
||||
}()
|
||||
|
||||
packetType, data, err := NewConn(remote).ReadPacket()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if packetType != 9 {
|
||||
t.Fatalf("packet type = %d, want UserState (9)", packetType)
|
||||
}
|
||||
var state MumbleProto.UserState
|
||||
if err := proto.Unmarshal(data, &state); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if state.SelfMute == nil || !*state.SelfMute {
|
||||
t.Fatalf("self mute = %v, want true", state.SelfMute)
|
||||
}
|
||||
if state.SelfDeaf == nil || *state.SelfDeaf != deafened {
|
||||
t.Fatalf("self deafen = %v, want %v", state.SelfDeaf, deafened)
|
||||
}
|
||||
<-written
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user