Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Иван Мажукин
mpd
Commits
f7e414d9
Commit
f7e414d9
authored
Sep 07, 2008
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
volume: don't pass "fd" to changeVolumeLevel()
The "volume" library shouldn't talk to the client. Move error handling to command.c.
parent
8e3c40f0
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
26 additions
and
22 deletions
+26
-22
command.c
src/command.c
+16
-4
volume.c
src/volume.c
+9
-17
volume.h
src/volume.h
+1
-1
No files found.
src/command.c
View file @
f7e414d9
...
...
@@ -911,21 +911,33 @@ static int handleListAll(int fd, mpd_unused int *permission,
static
int
handleVolume
(
int
fd
,
mpd_unused
int
*
permission
,
mpd_unused
int
argc
,
char
*
argv
[])
{
int
change
;
int
change
,
ret
;
if
(
check_int
(
fd
,
&
change
,
argv
[
1
],
need_integer
)
<
0
)
return
-
1
;
return
changeVolumeLevel
(
fd
,
change
,
1
);
ret
=
changeVolumeLevel
(
change
,
1
);
if
(
ret
==
-
1
)
commandError
(
fd
,
ACK_ERROR_SYSTEM
,
"problems setting volume"
);
return
ret
;
}
static
int
handleSetVol
(
int
fd
,
mpd_unused
int
*
permission
,
mpd_unused
int
argc
,
char
*
argv
[])
{
int
level
;
int
level
,
ret
;
if
(
check_int
(
fd
,
&
level
,
argv
[
1
],
need_integer
)
<
0
)
return
-
1
;
return
changeVolumeLevel
(
fd
,
level
,
0
);
ret
=
changeVolumeLevel
(
level
,
0
);
if
(
ret
==
-
1
)
commandError
(
fd
,
ACK_ERROR_SYSTEM
,
"problems setting volume"
);
return
ret
;
}
static
int
handleRepeat
(
int
fd
,
mpd_unused
int
*
permission
,
...
...
src/volume.c
View file @
f7e414d9
...
...
@@ -17,13 +17,10 @@
*/
#include "volume.h"
#include "command.h"
#include "conf.h"
#include "log.h"
#include "player_control.h"
#include "gcc.h"
#include "utils.h"
#include "ack.h"
#include "os_compat.h"
#include "../config.h"
...
...
@@ -169,18 +166,15 @@ static int getOssVolumeLevel(void)
return
left
;
}
static
int
changeOssVolumeLevel
(
int
fd
,
int
change
,
int
rel
)
static
int
changeOssVolumeLevel
(
int
change
,
int
rel
)
{
int
current
;
int
new
;
int
level
;
if
(
rel
)
{
if
((
current
=
getOssVolumeLevel
())
<
0
)
{
commandError
(
fd
,
ACK_ERROR_SYSTEM
,
"problem getting current volume"
);
if
((
current
=
getOssVolumeLevel
())
<
0
)
return
-
1
;
}
new
=
current
+
change
;
}
else
{
...
...
@@ -198,7 +192,6 @@ static int changeOssVolumeLevel(int fd, int change, int rel)
if
(
ioctl
(
volume_ossFd
,
MIXER_WRITE
(
volume_ossControl
),
&
level
)
<
0
)
{
closeOssMixer
();
commandError
(
fd
,
ACK_ERROR_SYSTEM
,
"problems setting volume"
);
return
-
1
;
}
...
...
@@ -328,7 +321,7 @@ static int getAlsaVolumeLevel(void)
return
ret
;
}
static
int
changeAlsaVolumeLevel
(
int
fd
,
int
change
,
int
rel
)
static
int
changeAlsaVolumeLevel
(
int
change
,
int
rel
)
{
float
vol
;
long
level
;
...
...
@@ -361,7 +354,6 @@ static int changeAlsaVolumeLevel(int fd, int change, int rel)
if
((
err
=
snd_mixer_selem_set_playback_volume_all
(
volume_alsaElem
,
level
))
<
0
)
{
commandError
(
fd
,
ACK_ERROR_SYSTEM
,
"problems setting volume"
);
WARNING
(
"problems setting alsa volume: %s
\n
"
,
snd_strerror
(
err
));
closeAlsaMixer
();
...
...
@@ -469,7 +461,7 @@ int getVolumeLevel(void)
}
}
static
int
changeSoftwareVolume
(
mpd_unused
int
fd
,
int
change
,
int
rel
)
static
int
changeSoftwareVolume
(
int
change
,
int
rel
)
{
int
new
=
change
;
...
...
@@ -497,19 +489,19 @@ static int changeSoftwareVolume(mpd_unused int fd, int change, int rel)
return
0
;
}
int
changeVolumeLevel
(
int
fd
,
int
change
,
int
rel
)
int
changeVolumeLevel
(
int
change
,
int
rel
)
{
switch
(
volume_mixerType
)
{
#ifdef HAVE_ALSA
case
VOLUME_MIXER_TYPE_ALSA
:
return
changeAlsaVolumeLevel
(
fd
,
change
,
rel
);
return
changeAlsaVolumeLevel
(
change
,
rel
);
#endif
#ifdef HAVE_OSS
case
VOLUME_MIXER_TYPE_OSS
:
return
changeOssVolumeLevel
(
fd
,
change
,
rel
);
return
changeOssVolumeLevel
(
change
,
rel
);
#endif
case
VOLUME_MIXER_TYPE_SOFTWARE
:
return
changeSoftwareVolume
(
fd
,
change
,
rel
);
return
changeSoftwareVolume
(
change
,
rel
);
default:
return
0
;
}
...
...
@@ -531,7 +523,7 @@ void read_sw_volume_state(FILE *fp)
continue
;
sv
=
strtol
(
buf
+
len
,
&
end
,
10
);
if
(
mpd_likely
(
!*
end
))
changeSoftwareVolume
(
STDERR_FILENO
,
sv
,
0
);
changeSoftwareVolume
(
sv
,
0
);
else
ERROR
(
"Can't parse software volume: %s
\n
"
,
buf
);
return
;
...
...
src/volume.h
View file @
f7e414d9
...
...
@@ -33,7 +33,7 @@ void finishVolume(void);
int
getVolumeLevel
(
void
);
int
changeVolumeLevel
(
int
fd
,
int
change
,
int
rel
);
int
changeVolumeLevel
(
int
change
,
int
rel
);
void
read_sw_volume_state
(
FILE
*
fp
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment