| | |
| | | #include <signal.h> |
| | | |
| | | #include "SDL_stdinc.h" |
| | | #include "SDL_assert.h" |
| | | #include "../../core/unix/SDL_poll.h" |
| | | |
| | | #include "SDL_waylandvideo.h" |
| | |
| | | static int |
| | | mime_data_list_add(struct wl_list* list, |
| | | const char* mime_type, |
| | | void* buffer, size_t length) |
| | | const void* buffer, size_t length) |
| | | { |
| | | int status = 0; |
| | | size_t mime_type_length = 0; |
| | | |
| | | SDL_MimeDataList *mime_data = NULL; |
| | | void *internal_buffer = NULL; |
| | | |
| | | if (buffer != NULL) { |
| | | internal_buffer = SDL_malloc(length); |
| | | if (internal_buffer == NULL) { |
| | | return SDL_OutOfMemory(); |
| | | } |
| | | SDL_memcpy(internal_buffer, buffer, length); |
| | | } |
| | | |
| | | mime_data = mime_data_list_find(list, mime_type); |
| | | |
| | |
| | | if (mime_data->data != NULL) { |
| | | SDL_free(mime_data->data); |
| | | } |
| | | mime_data->data = buffer; |
| | | mime_data->data = internal_buffer; |
| | | mime_data->length = length; |
| | | } else { |
| | | SDL_free(internal_buffer); |
| | | } |
| | | |
| | | return status; |
| | |
| | | const void *buffer, |
| | | size_t length) |
| | | { |
| | | int status = 0; |
| | | if (length > 0) { |
| | | void *internal_buffer = SDL_malloc(length); |
| | | if (internal_buffer == NULL) { |
| | | status = SDL_OutOfMemory(); |
| | | } else { |
| | | SDL_memcpy(internal_buffer, buffer, length); |
| | | status = mime_data_list_add(&source->mimes, mime_type, |
| | | internal_buffer, length); |
| | | } |
| | | } |
| | | return status; |
| | | return mime_data_list_add(&source->mimes, mime_type, buffer, length); |
| | | } |
| | | |
| | | SDL_bool |