mirror of
https://github.com/esphome/esphome.git
synced 2025-07-29 14:46:40 +00:00
[lvgl] Fix dangling pointer issue with qrcode (#9190)
This commit is contained in:
parent
a35e476be5
commit
612c8d5841
@ -3,7 +3,7 @@ import esphome.config_validation as cv
|
|||||||
from esphome.const import CONF_SIZE, CONF_TEXT
|
from esphome.const import CONF_SIZE, CONF_TEXT
|
||||||
from esphome.cpp_generator import MockObjClass
|
from esphome.cpp_generator import MockObjClass
|
||||||
|
|
||||||
from ..defines import CONF_MAIN, literal
|
from ..defines import CONF_MAIN
|
||||||
from ..lv_validation import color, color_retmapper, lv_text
|
from ..lv_validation import color, color_retmapper, lv_text
|
||||||
from ..lvcode import LocalVariable, lv, lv_expr
|
from ..lvcode import LocalVariable, lv, lv_expr
|
||||||
from ..schemas import TEXT_SCHEMA
|
from ..schemas import TEXT_SCHEMA
|
||||||
@ -34,7 +34,7 @@ class QrCodeType(WidgetType):
|
|||||||
)
|
)
|
||||||
|
|
||||||
def get_uses(self):
|
def get_uses(self):
|
||||||
return ("canvas", "img")
|
return ("canvas", "img", "label")
|
||||||
|
|
||||||
def obj_creator(self, parent: MockObjClass, config: dict):
|
def obj_creator(self, parent: MockObjClass, config: dict):
|
||||||
dark_color = color_retmapper(config[CONF_DARK_COLOR])
|
dark_color = color_retmapper(config[CONF_DARK_COLOR])
|
||||||
@ -45,10 +45,8 @@ class QrCodeType(WidgetType):
|
|||||||
async def to_code(self, w: Widget, config):
|
async def to_code(self, w: Widget, config):
|
||||||
if (value := config.get(CONF_TEXT)) is not None:
|
if (value := config.get(CONF_TEXT)) is not None:
|
||||||
value = await lv_text.process(value)
|
value = await lv_text.process(value)
|
||||||
with LocalVariable(
|
with LocalVariable("qr_text", cg.std_string, value, modifier="") as str_obj:
|
||||||
"qr_text", cg.const_char_ptr, value, modifier=""
|
lv.qrcode_update(w.obj, str_obj.c_str(), str_obj.size())
|
||||||
) as str_obj:
|
|
||||||
lv.qrcode_update(w.obj, str_obj, literal(f"strlen({str_obj})"))
|
|
||||||
|
|
||||||
|
|
||||||
qr_code_spec = QrCodeType()
|
qr_code_spec = QrCodeType()
|
||||||
|
@ -646,7 +646,9 @@ lvgl:
|
|||||||
on_click:
|
on_click:
|
||||||
lvgl.qrcode.update:
|
lvgl.qrcode.update:
|
||||||
id: lv_qr
|
id: lv_qr
|
||||||
text: homeassistant.io
|
text:
|
||||||
|
format: "A string with a number %d"
|
||||||
|
args: ['(int)(random_uint32() % 1000)']
|
||||||
|
|
||||||
- slider:
|
- slider:
|
||||||
min_value: 0
|
min_value: 0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user