diff options
-rw-r--r-- | lsp.c | 16 | ||||
-rw-r--r-- | lsp.h | 7 | ||||
-rw-r--r-- | stb_image.c | 3 |
3 files changed, 21 insertions, 5 deletions
@@ -4,11 +4,18 @@ const char *language_to_str(Language language); +static LSPMutex id_mutex; + // it's nice to have request IDs be totally unique, including across LSP servers. static LSPRequestID get_request_id(void) { - static _Atomic LSPRequestID last_request_id; // it's important that this never returns 0, since that's reserved for "no ID" - return ++last_request_id; + static LSPRequestID last_request_id; + LSPRequestID id = 0; + assert(id_mutex); + SDL_LockMutex(id_mutex); + id = ++last_request_id; + SDL_UnlockMutex(id_mutex); + return id; } bool lsp_get_error(LSP *lsp, char *error, size_t error_size, bool clear) { @@ -429,7 +436,10 @@ LSP *lsp_create(const char *root_dir, Language language, const char *analyzer_co LSP *lsp = calloc(1, sizeof *lsp); if (!lsp) return NULL; - static _Atomic LSPID curr_id = 1; + if (!id_mutex) + id_mutex = SDL_CreateMutex(); + + static LSPID curr_id = 1; lsp->id = curr_id++; #if DEBUG @@ -1,3 +1,6 @@ +// functions for dealing with LSP (Language Server Protocol) servers. +// don't assume any of the public functions defined here are thread-safe. + #ifndef LSP_H_ #define LSP_H_ @@ -515,9 +518,9 @@ typedef struct LSP { // this also lets us re-send requests if that's ever necessary. LSPRequest *requests_sent; // has the response to the initialize request been sent? - // thread-safety: this is atomic. it starts out false, and only gets set to true once + // thread-safety: this starts out false, and only gets set to true once // (when the initialize response is received) - _Atomic bool initialized; + bool initialized; // thread-safety: only set once in lsp_create. Language language; LSPThread communication_thread; diff --git a/stb_image.c b/stb_image.c index 2fa181b..ae13415 100644 --- a/stb_image.c +++ b/stb_image.c @@ -1,4 +1,7 @@ // used for debug build to speed things up // just exports everything in stb_image.h #define STB_IMAGE_IMPLEMENTATION +#if __TINYC__ +#define STBI_NO_SIMD +#endif #include "lib/stb_image.h" |