From 72271ec8f4c7920dd9ec4e76f4be2497293a1a60 Mon Sep 17 00:00:00 2001 From: vhaudiquet Date: Wed, 27 Sep 2023 20:23:38 +0200 Subject: [PATCH] changed asset loading model --- drivers/g-wolves/Makefile | 2 +- src/device/device.c | 17 ++++++++++++++++- src/ui/panels/mouse-panel.c | 4 +++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/drivers/g-wolves/Makefile b/drivers/g-wolves/Makefile index d8dee9a..21eda24 100644 --- a/drivers/g-wolves/Makefile +++ b/drivers/g-wolves/Makefile @@ -6,7 +6,7 @@ ASSETS=$(shell find devices/ -name '*.png') FINAL_ASSETS=$(BUILD_DIR)/drivers/assets/gwolves-htx.png $(BUILD_DIR)/drivers/assets/gwolves-hts_plus.png $(BUILD_DIR)/drivers/assets/gwolves-hsk_pro.png BUILD_DIR=../../build/ -all: $(BUILD_DIR)/drivers/g-wolves.so +all: $(BUILD_DIR)/drivers/g-wolves.so $(FINAL_ASSETS) $(BUILD_DIR)/drivers/g-wolves.so: g-wolves.c | $(BUILD_DIR)/drivers/ $(CC) $(CFLAGS) -o $@ $^ diff --git a/src/device/device.c b/src/device/device.c index 615e141..e9605af 100644 --- a/src/device/device.c +++ b/src/device/device.c @@ -2,6 +2,7 @@ #include "utils/array.h" #include "usb/usb.h" #include +#include struct DEVICE { @@ -39,7 +40,21 @@ device_t* device_register(void* driver, void* handle) char* device_get_image(device_t* device) { char* (*getimage_fn)(void*) = dlsym(device->driver, "driver_get_image"); - return getimage_fn(device->handle); + char* image = getimage_fn(device->handle); + size_t image_len = strlen(image); + + // TODO : Change PATH so that 'build' becomes executable directory + char* path = "build/drivers/assets/"; + size_t path_len = strlen(path); + + char* tr = malloc(image_len + path_len + 1); + memcpy(tr, path, path_len); + memcpy(tr + path_len, image, image_len); + *(tr + path_len + image_len) = 0; + + printf("path= %s\n", tr); + + return tr; } char* device_get_name(device_t* device) diff --git a/src/ui/panels/mouse-panel.c b/src/ui/panels/mouse-panel.c index e54e9f9..b4e1471 100644 --- a/src/ui/panels/mouse-panel.c +++ b/src/ui/panels/mouse-panel.c @@ -37,6 +37,8 @@ mouse_panel_new(void) void mouse_panel_set_device(MousePanel* self, device_t* device) { - gtk_image_set_from_file(self->mouse_image, device_get_image(device)); + char* image = device_get_image(device); + gtk_image_set_from_file(self->mouse_image, image); gtk_label_set_label(self->mouse_name, device_get_name(device)); + free(image); }