X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=addon.c;h=7ebd165756645a7979a06efdbb3377006143570f;hb=fbc68c65e01838feb77f47b30994b45fcc39ebaf;hp=0b342ce99ad3f063dea66034423edde0877a2b10;hpb=d3021395f97b2ae244835c6656008386c8874343;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/addon.c b/addon.c index 0b342ce..7ebd165 100644 --- a/addon.c +++ b/addon.c @@ -522,16 +522,30 @@ static void addon_mount_content_folder( enum addon_type type, /* * write the full path of the addon's folder into the vg_str */ -static int addon_get_content_folder( addon_reg *reg, vg_str *folder ){ +static int addon_get_content_folder( addon_reg *reg, vg_str *folder, int async){ if( reg->alias.workshop_id ){ - vg_async_item *call = - vg_async_alloc( sizeof(struct async_workshop_filepath_info) ); - struct async_workshop_filepath_info *info = call->payload; + struct async_workshop_filepath_info *info = NULL; + vg_async_item *call = NULL; + + if( async ){ + call = vg_async_alloc( sizeof(struct async_workshop_filepath_info) ); + info = call->payload; + } + else + info = alloca( sizeof(struct async_workshop_filepath_info) ); + info->buf = folder->buffer; info->id = reg->alias.workshop_id; info->len = folder->len; - vg_async_dispatch( call, async_workshop_get_filepath ); - vg_async_stall(); /* too bad! */ + + if( async ){ + vg_async_dispatch( call, async_workshop_get_filepath ); + vg_async_stall(); /* too bad! */ + } + else { + async_workshop_get_filepath( info, 0 ); + } + if( info->buf[0] == '\0' ){ vg_error( "Failed SteamAPI_GetItemInstallInfo(" PRINTF_U64 ")\n", reg->alias.workshop_id ); @@ -723,7 +737,7 @@ static void addon_cache_load_loop(void){ vg_str folder; vg_strnull( &folder, path_buf, 4096 ); - if( addon_get_content_folder( reg, &folder ) ){ + if( addon_get_content_folder( reg, &folder, 1 ) ){ if( addon_cache_load_request( type, id, reg, folder ) ){ vg_async_call( async_addon_setstate, entry, k_addon_cache_state_loaded );