mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-10-29 16:26:39 +01:00
Display (Linux): improve id generation for wayland
This commit is contained in:
@@ -228,7 +228,7 @@ static void waylandKdeOutputOrderListener(void *data, FF_MAYBE_UNUSED struct kde
|
||||
{
|
||||
uint64_t* id = (uint64_t*) data;
|
||||
if (*id == 0)
|
||||
strncpy((char*) id, output_name, sizeof(*id));
|
||||
*id = ffWaylandGenerateIdFromName(output_name);
|
||||
}
|
||||
|
||||
void ffWaylandHandleKdeOutputOrder(WaylandData* wldata, struct wl_registry* registry, uint32_t name, uint32_t version)
|
||||
|
||||
@@ -140,7 +140,7 @@ void ffWaylandOutputNameListener(void* data, FF_MAYBE_UNUSED void* output, const
|
||||
display->type = FF_DISPLAY_TYPE_EXTERNAL;
|
||||
if (!display->edidName.length)
|
||||
ffdsMatchDrmConnector(name, &display->edidName);
|
||||
strncpy((char*) &display->id, name, sizeof(display->id));
|
||||
display->id = ffWaylandGenerateIdFromName(name);
|
||||
ffStrbufAppendS(&display->name, name);
|
||||
}
|
||||
|
||||
|
||||
@@ -52,6 +52,17 @@ inline static void stubListener(void* data, ...)
|
||||
(void) data;
|
||||
}
|
||||
|
||||
inline static uint64_t ffWaylandGenerateIdFromName(const char* name)
|
||||
{
|
||||
uint64_t id = 0;
|
||||
size_t len = strlen(name);
|
||||
if (len > sizeof(id))
|
||||
memcpy(&id, name + (len - sizeof(id)), sizeof(id)); // copy the last 8 bytes
|
||||
else if (len > 0)
|
||||
memcpy(&id, name, len);
|
||||
return id;
|
||||
}
|
||||
|
||||
void ffWaylandOutputNameListener(void* data, FF_MAYBE_UNUSED void* output, const char *name);
|
||||
void ffWaylandOutputDescriptionListener(void* data, FF_MAYBE_UNUSED void* output, const char* description);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user