rockbox/apps/gui/quickscreen.h
Christian Soffke 8eefac3638 quickscreen: prevent out-of-bounds viewports
Fixes possible crash in case of pathological
UI vp dimensions, when attempting to clear a
QS item's vp.

E.g. https://github.com/federicoplg/musicOS
(commit c5e8570) configures a 1x1 UI viewport
at x=319 y=239, resulting in left/right item
viewports that have negative width or height.

Minor additional simplifications with no
effect on behavior:

- Combine actions requiring cleanup in a setup function.
  Put it below the existing cleanup function
- Rename quick_screen_quick to quickscreen_show, and
  quickscreen_run to quickscreen_main
- Iterate over items using FOR_QS_ITEMS macro
- Remove quickscreen_draw_item's int_value
- quickscreen_update: immediately continue if qs skinned
- Remove some obsolete #includes

Change-Id: I49aea3be837b861bdcd5132e84fef858df72327b
2026-09-02 14:03:17 -04:00

52 lines
1.6 KiB
C

/***************************************************************************
* __________ __ ___.
* Open \______ \ ____ ____ | | _\_ |__ _______ ___
* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
*
* Copyright (C) 2005 by Kevin Ferrare
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
****************************************************************************/
#include "button.h"
#include "config.h"
#ifdef HAVE_QUICKSCREEN
#ifndef _GUI_QUICKSCREEN_H_
#define _GUI_QUICKSCREEN_H_
#include "screen_access.h"
struct settings_list;
enum quickscreen_item {
QUICKSCREEN_TOP = 0,
QUICKSCREEN_LEFT,
QUICKSCREEN_RIGHT,
QUICKSCREEN_BOTTOM,
QUICKSCREEN_ITEM_COUNT,
};
enum quickscreen_return {
QUICKSCREEN_OK = 0,
QUICKSCREEN_IN_USB = 0x1,
QUICKSCREEN_GOTO_SHORTCUTS_MENU = 0x2,
QUICKSCREEN_CHANGED = 0x4,
};
int quickscreen_show(int button_enter);
void quickscreen_set_skinned(enum screen_type screen, bool skinned);
bool is_setting_quickscreenable(const struct settings_list *setting);
#endif /*_GUI_QUICK_SCREEN_H_*/
#endif /* HAVE_QUICKSCREEN */