From: Jérémy Zurcher <jeremy@asynk.ch>

Subject: [E-devel] mixer module segv patch

- prevent segv while playing with controls when a card with empty
channel list is selected (ie webcam)



SVN revision: 81506
This commit is contained in:
Jérémy Zurcher 2012-12-21 04:48:18 +00:00 committed by Carsten Haitzler
parent ddd9ab07c0
commit 016b953ce5
1 changed files with 32 additions and 2 deletions

View File

@ -124,11 +124,35 @@ _cb_changed_lock_sliders(void *data, Evas_Object *obj __UNUSED__)
state->left, state->right);
}
static void
_disable_channel_editor(E_Mixer_App_Dialog_Data *app)
{
struct e_mixer_app_ui_channel_editor *ui = &app->ui.channel_editor;
e_widget_entry_text_set(ui->card, "");
e_widget_entry_text_set(ui->channel, "");
e_widget_entry_text_set(ui->type, "");
e_widget_slider_value_int_set(ui->left, 0);
e_widget_slider_value_int_set(ui->right, 0);
e_widget_check_checked_set(ui->mute, 0);
e_widget_check_checked_set(ui->lock_sliders, 0);
e_widget_disabled_set(ui->left, 1);
e_widget_disabled_set(ui->right, 1);
e_widget_disabled_set(ui->mute, 1);
e_widget_disabled_set(ui->lock_sliders, 1);
}
static void
_update_channel_editor_state(E_Mixer_App_Dialog_Data *app, const E_Mixer_Channel_State state)
{
struct e_mixer_app_ui_channel_editor *ui = &app->ui.channel_editor;
e_widget_disabled_set(ui->left, 0);
e_widget_disabled_set(ui->right, 0);
e_widget_disabled_set(ui->lock_sliders, 0);
e_widget_slider_value_int_set(ui->left, state.left);
e_widget_slider_value_int_set(ui->right, state.right);
@ -154,7 +178,10 @@ _populate_channel_editor(E_Mixer_App_Dialog_Data *app)
card_name = e_mod_mixer_card_name_get(app->card);
if (!card_name)
return;
{
_disable_channel_editor(app);
return;
}
e_widget_entry_text_set(ui->card, card_name);
eina_stringshare_del(card_name);
@ -321,7 +348,10 @@ static void
select_card(E_Mixer_App_Dialog_Data *app)
{
_populate_channels(app);
e_widget_ilist_selected_set(app->ui.channels.list, 1);
if (e_widget_ilist_count(app->ui.channels.list) > 0)
e_widget_ilist_selected_set(app->ui.channels.list, 1);
else
_disable_channel_editor(app);
}
static void