Hi,
- prevent segv while playing with controls when a card with empty channel list
is selected (ie webcam)
regards
Jérémy
diff --git a/e/src/modules/mixer/app_mixer.c b/e/src/modules/mixer/app_mixer.c
index 2fb37d1..75cbdce 100644
--- a/e/src/modules/mixer/app_mixer.c
+++ b/e/src/modules/mixer/app_mixer.c
@@ -126,6 +126,26 @@ _cb_changed_lock_sliders(void *data, Evas_Object *obj
__UNUSED__)
}
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;
@@ -155,7 +175,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);
@@ -170,6 +193,7 @@ _populate_channel_editor(E_Mixer_App_Dialog_Data *app)
e_mod_mixer_state_get(app->sys, app->channel_info->id, &state);
_update_channel_editor_state(app, state);
+ e_widget_disabled_set(ui->left, 0);
e_widget_disabled_set(ui->right, app->channel_info->is_mono);
app->lock_sliders = ( (state.left == state.right) &&
!app->channel_info->is_mono );
e_widget_disabled_set(ui->lock_sliders, app->channel_info->is_mono);
@@ -325,7 +349,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
------------------------------------------------------------------------------
LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial
Remotely access PCs and mobile devices and provide instant support
Improve your efficiency, and focus on delivering more value-add services
Discover what IT Professionals Know. Rescue delivers
http://p.sf.net/sfu/logmein_12329d2d
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel