e mixer - be more robust if pulse exits/crashes and def sink is null

ensure there are protections everywhere for when default sink is null
- mixer did crash when pulse crashed and a popup was to be shown...
This commit is contained in:
Carsten Haitzler 2015-10-10 11:07:24 +09:00
parent 45b7224b42
commit 9c5b6acb05
1 changed files with 7 additions and 8 deletions

View File

@ -170,9 +170,9 @@ static void
_volume_increase_cb(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED) _volume_increase_cb(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED)
{ {
unsigned int i; unsigned int i;
EINA_SAFETY_ON_NULL_RETURN(mixer_context->sink_default);
Emix_Volume volume; Emix_Volume volume;
EINA_SAFETY_ON_NULL_RETURN(mixer_context->sink_default);
Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default; Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default;
volume.channel_count = s->volume.channel_count; volume.channel_count = s->volume.channel_count;
volume.volumes = calloc(s->volume.channel_count, sizeof(int)); volume.volumes = calloc(s->volume.channel_count, sizeof(int));
@ -196,9 +196,9 @@ static void
_volume_decrease_cb(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED) _volume_decrease_cb(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED)
{ {
unsigned int i; unsigned int i;
EINA_SAFETY_ON_NULL_RETURN(mixer_context->sink_default);
Emix_Volume volume; Emix_Volume volume;
EINA_SAFETY_ON_NULL_RETURN(mixer_context->sink_default);
Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default; Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default;
volume.channel_count = s->volume.channel_count; volume.channel_count = s->volume.channel_count;
volume.volumes = calloc(s->volume.channel_count, sizeof(int)); volume.volumes = calloc(s->volume.channel_count, sizeof(int));
@ -222,7 +222,6 @@ static void
_volume_mute_cb(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED) _volume_mute_cb(E_Object *obj EINA_UNUSED, const char *params EINA_UNUSED)
{ {
EINA_SAFETY_ON_NULL_RETURN(mixer_context->sink_default); EINA_SAFETY_ON_NULL_RETURN(mixer_context->sink_default);
Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default; Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default;
Eina_Bool mute = !s->mute; Eina_Bool mute = !s->mute;
emix_sink_mute_set(s, mute); emix_sink_mute_set(s, mute);
@ -345,6 +344,7 @@ static void
_check_changed_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, _check_changed_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
void *event EINA_UNUSED) void *event EINA_UNUSED)
{ {
EINA_SAFETY_ON_NULL_RETURN(mixer_context->sink_default);
Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default; Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default;
emix_sink_mute_set(s, !s->mute); emix_sink_mute_set(s, !s->mute);
emix_config_save_state_get(); emix_config_save_state_get();
@ -363,8 +363,9 @@ _slider_changed_cb(void *data EINA_UNUSED, Evas_Object *obj,
int val; int val;
Emix_Volume v; Emix_Volume v;
unsigned int i; unsigned int i;
Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default;
EINA_SAFETY_ON_NULL_RETURN(mixer_context->sink_default);
Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default;
val = (int)elm_slider_value_get(obj); val = (int)elm_slider_value_get(obj);
v.volumes = calloc(s->volume.channel_count, sizeof(int)); v.volumes = calloc(s->volume.channel_count, sizeof(int));
v.channel_count = s->volume.channel_count; v.channel_count = s->volume.channel_count;
@ -380,6 +381,7 @@ static void
_slider_drag_stop_cb(void *data EINA_UNUSED, Evas_Object *obj, _slider_drag_stop_cb(void *data EINA_UNUSED, Evas_Object *obj,
void *event EINA_UNUSED) void *event EINA_UNUSED)
{ {
EINA_SAFETY_ON_NULL_RETURN(mixer_context->sink_default);
Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default; Emix_Sink *s = (Emix_Sink *)mixer_context->sink_default;
int val = s->volume.volumes[0]; int val = s->volume.volumes[0];
elm_slider_value_set(obj, val); elm_slider_value_set(obj, val);
@ -403,10 +405,9 @@ _popup_new(Instance *inst)
Eina_List *l; Eina_List *l;
int num = 0; int num = 0;
unsigned int volume = 0, i; unsigned int volume = 0, i;
unsigned int channels = mixer_context->sink_default->volume.channel_count;
EINA_SAFETY_ON_NULL_RETURN(mixer_context->sink_default); EINA_SAFETY_ON_NULL_RETURN(mixer_context->sink_default);
unsigned int channels = mixer_context->sink_default->volume.channel_count;
inst->popup = e_gadcon_popup_new(inst->gcc, 0); inst->popup = e_gadcon_popup_new(inst->gcc, 0);
list = elm_box_add(e_comp->elm); list = elm_box_add(e_comp->elm);
@ -712,8 +713,6 @@ _ready(void)
} }
} }
} }
s = (Emix_Sink *)mixer_context->sink_default;
emix_config_save_state_restore(); emix_config_save_state_restore();
} }