more NULL-pointer checks in menuscreens.c
This commit is contained in:
+42
-26
@@ -70,7 +70,8 @@ int menuscreens_init()
|
|||||||
|
|
||||||
/* Create screen */
|
/* Create screen */
|
||||||
menuscreen = screen_create ("_menu_screen", NULL);
|
menuscreen = screen_create ("_menu_screen", NULL);
|
||||||
menuscreen->priority = PRI_HIDDEN;
|
if (menuscreen != NULL)
|
||||||
|
menuscreen->priority = PRI_HIDDEN;
|
||||||
active_menuitem = NULL;
|
active_menuitem = NULL;
|
||||||
|
|
||||||
screenlist_add (menuscreen);
|
screenlist_add (menuscreen);
|
||||||
@@ -120,10 +121,11 @@ void menuscreen_inform_item_destruction (MenuItem * item)
|
|||||||
{
|
{
|
||||||
MenuItem * i;
|
MenuItem * i;
|
||||||
|
|
||||||
debug (RPT_DEBUG, "%s( item=[%s] )", __FUNCTION__, item->id);
|
debug (RPT_DEBUG, "%s( item=[%s] )", __FUNCTION__,
|
||||||
|
((item != NULL) ? item->id : "(null)"));
|
||||||
|
|
||||||
/* Are we currently in (a subitem of) the given item ? */
|
/* Are we currently in (a subitem of) the given item ? */
|
||||||
for( i = active_menuitem; i; i = i->parent ) {
|
for( i = active_menuitem; i != NULL; i = i->parent ) {
|
||||||
if( i == item ) {
|
if( i == item ) {
|
||||||
menuscreen_switch_item (item->parent);
|
menuscreen_switch_item (item->parent);
|
||||||
}
|
}
|
||||||
@@ -132,9 +134,11 @@ void menuscreen_inform_item_destruction (MenuItem * item)
|
|||||||
|
|
||||||
void menuscreen_inform_item_modified (MenuItem * item)
|
void menuscreen_inform_item_modified (MenuItem * item)
|
||||||
{
|
{
|
||||||
debug (RPT_DEBUG, "%s( item=[%s] )", __FUNCTION__, item->id);
|
debug (RPT_DEBUG, "%s( item=[%s] )", __FUNCTION__,
|
||||||
|
((item != NULL) ? item->id : "(null)"));
|
||||||
|
|
||||||
if( !active_menuitem ) return;
|
if ((active_menuitem == NULL) || (item == NULL))
|
||||||
|
return;
|
||||||
|
|
||||||
/* Are we currently in the item or the parent of the item ? */
|
/* Are we currently in the item or the parent of the item ? */
|
||||||
if( active_menuitem == item || active_menuitem == item->parent ) {
|
if( active_menuitem == item || active_menuitem == item->parent ) {
|
||||||
@@ -144,7 +148,7 @@ void menuscreen_inform_item_modified (MenuItem * item)
|
|||||||
|
|
||||||
bool is_menu_key (char * key)
|
bool is_menu_key (char * key)
|
||||||
{
|
{
|
||||||
if (menu_key && strcmp (key, menu_key) == 0)
|
if (menu_key && key && strcmp (key, menu_key) == 0)
|
||||||
return true;
|
return true;
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
@@ -159,7 +163,8 @@ void menuscreen_switch_item (MenuItem * new_menuitem)
|
|||||||
{
|
{
|
||||||
MenuItem * old_menuitem = active_menuitem;
|
MenuItem * old_menuitem = active_menuitem;
|
||||||
|
|
||||||
debug (RPT_DEBUG, "%s( item=[%s] )", __FUNCTION__, new_menuitem?new_menuitem->id:NULL);
|
debug (RPT_DEBUG, "%s( item=[%s] )", __FUNCTION__,
|
||||||
|
((new_menuitem != NULL) ? new_menuitem->id : "(null)"));
|
||||||
|
|
||||||
/* First we do the switch */
|
/* First we do the switch */
|
||||||
active_menuitem = new_menuitem;
|
active_menuitem = new_menuitem;
|
||||||
@@ -219,7 +224,7 @@ void menuscreen_key_handler (char *key)
|
|||||||
|
|
||||||
switch (res) {
|
switch (res) {
|
||||||
case MENURESULT_ERROR:
|
case MENURESULT_ERROR:
|
||||||
report (RPT_ERR, "%s: Error from menu_handle_input", __FUNCTION__);
|
report (RPT_ERR, "%s: Error from menu_process_input", __FUNCTION__);
|
||||||
break;
|
break;
|
||||||
case MENURESULT_NONE:
|
case MENURESULT_NONE:
|
||||||
if (active_menuitem) {
|
if (active_menuitem) {
|
||||||
@@ -231,7 +236,7 @@ void menuscreen_key_handler (char *key)
|
|||||||
case MENURESULT_ENTER:
|
case MENURESULT_ENTER:
|
||||||
/* Enter the selected menuitem
|
/* Enter the selected menuitem
|
||||||
* Note: this is not for checkboxes etc that don't have their
|
* Note: this is not for checkboxes etc that don't have their
|
||||||
* own screen. The menu_handle_input function should do
|
* own screen. The menu_process_input function should do
|
||||||
* things like toggling checkboxes !
|
* things like toggling checkboxes !
|
||||||
*/
|
*/
|
||||||
debug (RPT_DEBUG, "%s: Entering subitem", __FUNCTION__);
|
debug (RPT_DEBUG, "%s: Entering subitem", __FUNCTION__);
|
||||||
@@ -276,8 +281,8 @@ void menuscreen_create_menu ()
|
|||||||
menu_add_item (options_menu, checkbox);
|
menu_add_item (options_menu, checkbox);
|
||||||
|
|
||||||
for (driver = drivers_getfirst(); driver; driver = drivers_getnext()) {
|
for (driver = drivers_getfirst(); driver; driver = drivers_getnext()) {
|
||||||
int contrast_avail = 0;
|
int contrast_avail = (driver->get_contrast && driver->set_contrast) ? 1 : 0;
|
||||||
int brightness_avail = 0;
|
int brightness_avail = (driver->get_brightness && driver->set_brightness) ? 1 : 0;
|
||||||
|
|
||||||
contrast_avail = (driver->get_contrast && driver->set_contrast);
|
contrast_avail = (driver->get_contrast && driver->set_contrast);
|
||||||
brightness_avail = (driver->get_brightness && driver->set_brightness);
|
brightness_avail = (driver->get_brightness && driver->set_brightness);
|
||||||
@@ -286,14 +291,19 @@ void menuscreen_create_menu ()
|
|||||||
driver_menu = menu_create (driver->name, NULL, driver->name, driver);
|
driver_menu = menu_create (driver->name, NULL, driver->name, driver);
|
||||||
menu_add_item (options_menu, driver_menu);
|
menu_add_item (options_menu, driver_menu);
|
||||||
if (contrast_avail) {
|
if (contrast_avail) {
|
||||||
slider = menuitem_create_slider ("contrast", contrast_handler, "Contrast", "min", "max", 0, 1000, 100, 500);
|
int contrast = driver->get_contrast(driver);
|
||||||
|
|
||||||
|
slider = menuitem_create_slider ("contrast", contrast_handler, "Contrast", "min", "max", 0, 1000, 100, contrast);
|
||||||
menu_add_item (driver_menu, slider);
|
menu_add_item (driver_menu, slider);
|
||||||
}
|
}
|
||||||
if (brightness_avail) {
|
if (brightness_avail) {
|
||||||
slider = menuitem_create_slider ("onbrightness", brightness_handler, "On Brightness", "min", "max", 0, 1000, 100, 500);
|
int onbrightness = driver->get_brightness (driver, BACKLIGHT_ON);
|
||||||
|
int offbrightness = driver->get_brightness (driver, BACKLIGHT_OFF);
|
||||||
|
|
||||||
|
slider = menuitem_create_slider ("onbrightness", brightness_handler, "On Brightness", "min", "max", 0, 1000, 100, onbrightness);
|
||||||
menu_add_item (driver_menu, slider);
|
menu_add_item (driver_menu, slider);
|
||||||
|
|
||||||
slider = menuitem_create_slider ("offbrightness", brightness_handler, "Off Brightness", "min", "max", 0, 1000, 100, 500);
|
slider = menuitem_create_slider ("offbrightness", brightness_handler, "Off Brightness", "min", "max", 0, 1000, 100, offbrightness);
|
||||||
menu_add_item (driver_menu, slider);
|
menu_add_item (driver_menu, slider);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -334,7 +344,8 @@ void menuscreen_create_menu ()
|
|||||||
|
|
||||||
MenuEventFunc (heartbeat_handler)
|
MenuEventFunc (heartbeat_handler)
|
||||||
{
|
{
|
||||||
debug (RPT_DEBUG, "%s( item=[%s], event=%d )", __FUNCTION__, item->id, event);
|
debug (RPT_DEBUG, "%s( item=[%s], event=%d )", __FUNCTION__,
|
||||||
|
((item != NULL) ? item->id : "(null)"), event);
|
||||||
|
|
||||||
if (event == MENUEVENT_UPDATE) {
|
if (event == MENUEVENT_UPDATE) {
|
||||||
/* Set heartbeat setting */
|
/* Set heartbeat setting */
|
||||||
@@ -347,7 +358,8 @@ MenuEventFunc (heartbeat_handler)
|
|||||||
|
|
||||||
MenuEventFunc (backlight_handler)
|
MenuEventFunc (backlight_handler)
|
||||||
{
|
{
|
||||||
debug (RPT_DEBUG, "%s( item=[%s], event=%d )", __FUNCTION__, item->id, event);
|
debug (RPT_DEBUG, "%s( item=[%s], event=%d )", __FUNCTION__,
|
||||||
|
((item != NULL) ? item->id : "(null)"), event);
|
||||||
|
|
||||||
if (event == MENUEVENT_UPDATE)
|
if (event == MENUEVENT_UPDATE)
|
||||||
{
|
{
|
||||||
@@ -361,7 +373,8 @@ MenuEventFunc (backlight_handler)
|
|||||||
|
|
||||||
MenuEventFunc (contrast_handler)
|
MenuEventFunc (contrast_handler)
|
||||||
{
|
{
|
||||||
debug (RPT_DEBUG, "%s( item=[%s], event=%d )", __FUNCTION__, item->id, event);
|
debug (RPT_DEBUG, "%s( item=[%s], event=%d )", __FUNCTION__,
|
||||||
|
((item != NULL) ? item->id : "(null)"), event);
|
||||||
|
|
||||||
/* This function can be called by one of several drivers that
|
/* This function can be called by one of several drivers that
|
||||||
* support contrast !
|
* support contrast !
|
||||||
@@ -381,7 +394,8 @@ MenuEventFunc (contrast_handler)
|
|||||||
|
|
||||||
MenuEventFunc (brightness_handler)
|
MenuEventFunc (brightness_handler)
|
||||||
{
|
{
|
||||||
debug (RPT_DEBUG, "%s( item=[%s], event=%d )", __FUNCTION__, item->id, event);
|
debug (RPT_DEBUG, "%s( item=[%s], event=%d )", __FUNCTION__,
|
||||||
|
((item != NULL) ? item->id : "(null)"), event);
|
||||||
|
|
||||||
/* This function can be called by one of several drivers that
|
/* This function can be called by one of several drivers that
|
||||||
* support contrast !
|
* support contrast !
|
||||||
@@ -407,13 +421,15 @@ menuscreen_add_screen (Screen * s)
|
|||||||
Menu * m;
|
Menu * m;
|
||||||
MenuItem * mi;
|
MenuItem * mi;
|
||||||
|
|
||||||
debug (RPT_DEBUG, "%s( s=[%s] )", __FUNCTION__, s->id);
|
debug (RPT_DEBUG, "%s( s=[%s] )", __FUNCTION__,
|
||||||
|
((s != NULL) ? s->id : "(null)"));
|
||||||
|
|
||||||
if (!screens_menu)
|
/* screens have not been created or no screen given ... */
|
||||||
return; /* When screens have not been created ... */
|
if ((screens_menu == NULL) || (s == NULL))
|
||||||
|
return;
|
||||||
|
|
||||||
/* Create a menu entry for the screen */
|
/* Create a menu entry for the screen */
|
||||||
m = menu_create (s->id, NULL, s->name?s->name:s->id, s);
|
m = menu_create (s->id, NULL, ((s->name != NULL) ? s->name : s->id), s);
|
||||||
menu_add_item (screens_menu, m);
|
menu_add_item (screens_menu, m);
|
||||||
|
|
||||||
/* And add some items for it... */
|
/* And add some items for it... */
|
||||||
@@ -439,12 +455,12 @@ menuscreen_remove_screen (Screen * s)
|
|||||||
{
|
{
|
||||||
Menu * m;
|
Menu * m;
|
||||||
|
|
||||||
debug (RPT_DEBUG, "%s( s=[%s] )", __FUNCTION__, s->id);
|
debug (RPT_DEBUG, "%s( s=[%s] )", __FUNCTION__,
|
||||||
|
(s != NULL) ? s->id : "(NULL)");
|
||||||
|
|
||||||
if (s == menuscreen) {
|
/* allow to remove the menuscreen itself */
|
||||||
|
if ((s == NULL) || (s == menuscreen))
|
||||||
return;
|
return;
|
||||||
/* To allow to remove the menuscreen itself */
|
|
||||||
}
|
|
||||||
|
|
||||||
m = menu_find_item (screens_menu, s->id, false);
|
m = menu_find_item (screens_menu, s->id, false);
|
||||||
menu_remove_item (screens_menu, m);
|
menu_remove_item (screens_menu, m);
|
||||||
|
|||||||
Reference in New Issue
Block a user