X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ffiles.c;h=1c4faf2da5e2a7411b103313492ee9af3ba76406;hb=df4d152e1d4bd75c59ba9ce469a7b308ec718905;hp=61ea14cb7e7cdf1a76cce5382ce68d12af89a12c;hpb=5a4a6f4051fc89de7e47cf41d4d3e78dab4283d6;p=rocksndiamonds.git diff --git a/src/files.c b/src/files.c index 61ea14cb..1c4faf2d 100644 --- a/src/files.c +++ b/src/files.c @@ -9032,6 +9032,10 @@ void SaveScore(int nr) void ExecuteAsThread(SDL_ThreadFunction function, char *name, void *data, char *error) { +#if defined(PLATFORM_EMSCRIPTEN) + // threads currently not fully supported by Emscripten/SDL and some browsers + function(data); +#else SDL_Thread *thread = SDL_CreateThread(function, name, data); if (thread != NULL) @@ -9041,6 +9045,7 @@ void ExecuteAsThread(SDL_ThreadFunction function, char *name, void *data, // nasty kludge to lower probability of intermingled thread error messages Delay(1); +#endif } char *getPasswordJSON(char *password) @@ -9063,10 +9068,10 @@ char *getPasswordJSON(char *password) return password_json; } -static void DownloadServerScoreToCacheExt(struct HttpRequest *request, - struct HttpResponse *response, - int level_nr, - char *score_cache_filename) +static void ApiGetScoreExt(struct HttpRequest *request, + struct HttpResponse *response, + int level_nr, + char *score_cache_filename) { request->hostname = setup.api_server_hostname; request->port = API_SERVER_PORT; @@ -9077,11 +9082,13 @@ static void DownloadServerScoreToCacheExt(struct HttpRequest *request, "{\n" "%s" " \"game_version\": \"%s\",\n" + " \"game_platform\": \"%s\",\n" " \"levelset_identifier\": \"%s\",\n" " \"level_nr\": \"%d\"\n" "}\n", getPasswordJSON(setup.api_server_password), getProgramRealVersionString(), + getProgramPlatformString(), levelset.identifier, level_nr); ConvertHttpRequestBodyToServerEncoding(request); @@ -9135,30 +9142,30 @@ static void DownloadServerScoreToCacheExt(struct HttpRequest *request, server_scores.updated = TRUE; } -static void DownloadServerScoreToCache(int level_nr, char *score_cache_filename) +static void ApiGetScore(int level_nr, char *score_cache_filename) { struct HttpRequest *request = checked_calloc(sizeof(struct HttpRequest)); struct HttpResponse *response = checked_calloc(sizeof(struct HttpResponse)); - DownloadServerScoreToCacheExt(request, response, - level_nr, score_cache_filename); + ApiGetScoreExt(request, response, + level_nr, score_cache_filename); checked_free(request); checked_free(response); } -struct DownloadServerScoreToCacheThreadData +struct ApiGetScoreThreadData { int level_nr; char *score_cache_filename; }; -static int DownloadServerScoreToCacheThread(void *data_raw) +static int ApiGetScoreThread(void *data_raw) { - struct DownloadServerScoreToCacheThreadData *data = data_raw; + struct ApiGetScoreThreadData *data = data_raw; - DownloadServerScoreToCache(data->level_nr, - data->score_cache_filename); + ApiGetScore(data->level_nr, + data->score_cache_filename); checked_free(data->score_cache_filename); checked_free(data); @@ -9166,17 +9173,17 @@ static int DownloadServerScoreToCacheThread(void *data_raw) return 0; } -static void DownloadServerScoreToCacheAsThread(int nr) +static void ApiGetScoreAsThread(int nr) { - struct DownloadServerScoreToCacheThreadData *data = - checked_malloc(sizeof(struct DownloadServerScoreToCacheThreadData)); + struct ApiGetScoreThreadData *data = + checked_malloc(sizeof(struct ApiGetScoreThreadData)); char *score_cache_filename = getScoreCacheFilename(nr); data->level_nr = nr; data->score_cache_filename = getStringCopy(score_cache_filename); - ExecuteAsThread(DownloadServerScoreToCacheThread, - "DownloadServerScoreToCache", data, + ExecuteAsThread(ApiGetScoreThread, + "ApiGetScore", data, "download scores from server"); } @@ -9262,7 +9269,7 @@ void LoadServerScore(int nr, boolean download_score) { // 2nd step: download server scores from score server to cache file // (as thread, as it might time out if the server is not reachable) - DownloadServerScoreToCacheAsThread(nr); + ApiGetScoreAsThread(nr); } } @@ -9320,11 +9327,11 @@ static char *get_file_base64(char *filename) return buffer_encoded; } -static void UploadScoreToServerExt(struct HttpRequest *request, - struct HttpResponse *response, - int level_nr, - char *score_tape_filename, - struct ScoreEntry *score_entry) +static void ApiAddScoreExt(struct HttpRequest *request, + struct HttpResponse *response, + int level_nr, + char *score_tape_filename, + struct ScoreEntry *score_entry) { request->hostname = setup.api_server_hostname; request->port = API_SERVER_PORT; @@ -9343,7 +9350,7 @@ static void UploadScoreToServerExt(struct HttpRequest *request, char *player_name_raw = score_entry->name; char *player_uuid_raw = setup.player_uuid; - if (options.player_name != NULL) + if (options.player_name != NULL && global.autoplay_leveldir != NULL) { player_name_raw = options.player_name; player_uuid_raw = ""; @@ -9361,6 +9368,7 @@ static void UploadScoreToServerExt(struct HttpRequest *request, "{\n" "%s" " \"game_version\": \"%s\",\n" + " \"game_platform\": \"%s\",\n" " \"batch_time\": \"%d\",\n" " \"levelset_identifier\": \"%s\",\n" " \"levelset_name\": \"%s\",\n" @@ -9380,6 +9388,7 @@ static void UploadScoreToServerExt(struct HttpRequest *request, "}\n", getPasswordJSON(setup.api_server_password), getProgramRealVersionString(), + getProgramPlatformString(), (int)global.autoplay_time, levelset_identifier, levelset_name, @@ -9428,33 +9437,33 @@ static void UploadScoreToServerExt(struct HttpRequest *request, server_scores.uploaded = TRUE; } -static void UploadScoreToServer(int level_nr, char *score_tape_filename, - struct ScoreEntry *score_entry) +static void ApiAddScore(int level_nr, char *score_tape_filename, + struct ScoreEntry *score_entry) { struct HttpRequest *request = checked_calloc(sizeof(struct HttpRequest)); struct HttpResponse *response = checked_calloc(sizeof(struct HttpResponse)); - UploadScoreToServerExt(request, response, - level_nr, score_tape_filename, score_entry); + ApiAddScoreExt(request, response, + level_nr, score_tape_filename, score_entry); checked_free(request); checked_free(response); } -struct UploadScoreToServerThreadData +struct ApiAddScoreThreadData { int level_nr; char *score_tape_filename; struct ScoreEntry score_entry; }; -static int UploadScoreToServerThread(void *data_raw) +static int ApiAddScoreThread(void *data_raw) { - struct UploadScoreToServerThreadData *data = data_raw; + struct ApiAddScoreThreadData *data = data_raw; - UploadScoreToServer(data->level_nr, - data->score_tape_filename, - &data->score_entry); + ApiAddScore(data->level_nr, + data->score_tape_filename, + &data->score_entry); checked_free(data->score_tape_filename); checked_free(data); @@ -9462,10 +9471,10 @@ static int UploadScoreToServerThread(void *data_raw) return 0; } -static void UploadScoreToServerAsThread(int nr, char *score_tape_filename) +static void ApiAddScoreAsThread(int nr, char *score_tape_filename) { - struct UploadScoreToServerThreadData *data = - checked_malloc(sizeof(struct UploadScoreToServerThreadData)); + struct ApiAddScoreThreadData *data = + checked_malloc(sizeof(struct ApiAddScoreThreadData)); struct ScoreEntry *score_entry = &scores.entry[scores.last_added]; if (score_tape_filename == NULL) @@ -9475,8 +9484,8 @@ static void UploadScoreToServerAsThread(int nr, char *score_tape_filename) data->score_entry = *score_entry; data->score_tape_filename = getStringCopy(score_tape_filename); - ExecuteAsThread(UploadScoreToServerThread, - "UploadScoreToServer", data, + ExecuteAsThread(ApiAddScoreThread, + "ApiAddScore", data, "upload score to server"); } @@ -9485,7 +9494,7 @@ void SaveServerScore(int nr) if (!runtime.use_api_server) return; - UploadScoreToServerAsThread(nr, NULL); + ApiAddScoreAsThread(nr, NULL); } void SaveServerScoreFromFile(int nr, char *score_tape_filename) @@ -9493,7 +9502,7 @@ void SaveServerScoreFromFile(int nr, char *score_tape_filename) if (!runtime.use_api_server) return; - UploadScoreToServerAsThread(nr, score_tape_filename); + ApiAddScoreAsThread(nr, score_tape_filename); } void LoadLocalAndServerScore(int nr, boolean download_score)