~ubuntu-branches/ubuntu/quantal/gst-plugins-bad-multiverse0.10/quantal

« back to all changes in this revision

Viewing changes to sys/oss4/oss4-mixer-switch.c

  • Committer: Bazaar Package Importer
  • Author(s): Onkar Shinde
  • Date: 2009-12-07 08:54:28 UTC
  • mfrom: (1.1.15 upstream)
  • Revision ID: james.westby@ubuntu.com-20091207085428-ml6aaukf0p2ph34d
Tags: 0.10.17-0ubuntu1
* New upstream release.
* Add myself to maintainer.
* Fix misc lintian warnings.

Show diffs side-by-side

added added

removed removed

Lines of Context:
49
49
  /* nothing to do here */
50
50
}
51
51
 
52
 
static GstMixerTrackFlags
53
 
gst_oss4_mixer_switch_get_switch_flag (GstMixerTrack * track)
54
 
{
55
 
  if ((track->flags & GST_MIXER_TRACK_INPUT)) {
56
 
    return GST_MIXER_TRACK_RECORD;
57
 
  } else if ((track->flags & GST_MIXER_TRACK_OUTPUT)) {
58
 
    return GST_MIXER_TRACK_MUTE;
59
 
  } else {
60
 
    GST_ERROR_OBJECT (track, "switch neither input nor output track!?");
61
 
  }
62
 
  return 0;
63
 
}
64
 
 
65
52
gboolean
66
 
gst_oss4_mixer_switch_set (GstOss4MixerSwitch * s, gboolean enabled)
 
53
gst_oss4_mixer_switch_set (GstOss4MixerSwitch * s, gboolean disabled)
67
54
{
68
 
  GstMixerTrackFlags switch_flag;
69
55
  GstMixerTrack *track;
70
56
  int newval;
71
57
 
72
58
  track = GST_MIXER_TRACK (s);
73
 
  switch_flag = gst_oss4_mixer_switch_get_switch_flag (track);
74
 
 
75
 
  newval = (enabled) ? 1 : 0;
76
 
 
77
 
  if (!!newval == !!(track->flags & switch_flag)) {
 
59
 
 
60
  newval = disabled ? GST_MIXER_TRACK_MUTE : 0;
 
61
 
 
62
  if (newval == (track->flags & GST_MIXER_TRACK_MUTE)) {
78
63
    GST_LOG_OBJECT (s, "switch is already %d, doing nothing", newval);
79
64
    return TRUE;
80
65
  }
81
66
 
82
 
  if (!gst_oss4_mixer_set_control_val (s->mixer, s->mc, newval)) {
83
 
    GST_WARNING_OBJECT (s, "could not set switch to %d", newval);
 
67
  if (!gst_oss4_mixer_set_control_val (s->mixer, s->mc, !disabled)) {
 
68
    GST_WARNING_OBJECT (s, "could not set switch to %d", !disabled);
84
69
    return FALSE;
85
70
  }
86
71
 
87
 
  if (newval) {
88
 
    track->flags |= switch_flag;
 
72
  if (disabled) {
 
73
    track->flags |= GST_MIXER_TRACK_MUTE;
89
74
  } else {
90
 
    track->flags &= ~switch_flag;
 
75
    track->flags &= ~GST_MIXER_TRACK_MUTE;
91
76
  }
92
77
 
93
78
  GST_LOG_OBJECT (s, "set switch to %d", newval);
96
81
}
97
82
 
98
83
gboolean
99
 
gst_oss4_mixer_switch_get (GstOss4MixerSwitch * s, gboolean * enabled)
 
84
gst_oss4_mixer_switch_get (GstOss4MixerSwitch * s, gboolean * disabled)
100
85
{
101
 
  GstMixerTrackFlags switch_flag;
102
86
  GstMixerTrack *track;
103
 
  int val = -1;
 
87
  int flag;
 
88
  int enabled = -1;
104
89
 
105
90
  track = GST_MIXER_TRACK (s);
106
 
  switch_flag = gst_oss4_mixer_switch_get_switch_flag (track);
107
91
 
108
 
  if (!gst_oss4_mixer_get_control_val (s->mixer, s->mc, &val) || val < 0) {
 
92
  if (!gst_oss4_mixer_get_control_val (s->mixer, s->mc, &enabled)
 
93
      || (enabled < 0)) {
109
94
    GST_WARNING_OBJECT (s, "could not get switch state");
110
95
    return FALSE;
111
96
  }
112
97
 
113
 
  *enabled = (val != 0);
 
98
  flag = (enabled == 0) ? GST_MIXER_TRACK_MUTE : 0;
114
99
 
115
 
  if (!!val != !!(track->flags & switch_flag)) {
116
 
    GST_INFO_OBJECT (s, "updating inconsistent switch state to %d", !!val);
117
 
    if (*enabled) {
118
 
      track->flags |= switch_flag;
119
 
    } else {
120
 
      track->flags &= ~switch_flag;
121
 
    }
 
100
  if (enabled) {
 
101
    track->flags &= ~GST_MIXER_TRACK_MUTE;
 
102
  } else {
 
103
    track->flags |= GST_MIXER_TRACK_MUTE;
122
104
  }
123
 
 
 
105
  *disabled = (enabled == 0);
124
106
 
125
107
  return TRUE;
126
108
}
149
131
  if (!gst_oss4_mixer_get_control_val (s->mixer, s->mc, &cur) || cur < 0)
150
132
    return NULL;
151
133
 
 
134
  if (cur) {
 
135
    track->flags &= ~GST_MIXER_TRACK_MUTE;
 
136
  } else {
 
137
    track->flags |= GST_MIXER_TRACK_MUTE;
 
138
  }
 
139
 
152
140
  return track;
153
141
}
154
142
 
161
149
  if (!s->mc->changed)
162
150
    return;
163
151
 
164
 
  if ((track->flags & GST_MIXER_TRACK_INPUT)) {
165
 
    gst_mixer_record_toggled (GST_MIXER (s->mixer), track, !!s->mc->last_val);
166
 
  } else {
167
 
    gst_mixer_mute_toggled (GST_MIXER (s->mixer), track, !!s->mc->last_val);
168
 
  }
 
152
  gst_mixer_mute_toggled (GST_MIXER (s->mixer), track, !s->mc->last_val);
169
153
}