/*
* 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 );
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 );