diff --git a/Readme.txt b/Readme.txt index 281408f..990ce31 100644 --- a/Readme.txt +++ b/Readme.txt @@ -8,6 +8,32 @@ Copyright Welcome to the Steamworks SDK. For documentation please see our partner website at: http://partner.steamgames.com +---------------------------------------------------------------- +v1.37 23rd May 2016 +---------------------------------------------------------------- + +Starting with this release, SDK forward-compatibility has been improved. All executables and libraries built using the official C++ headers from this SDK will continue to work even when paired with runtime DLLs from future SDKs. This will eventually allow for the mixing of dynamic libraries (such as third-party plug-ins) built with different versions of Steamworks. + +The VERSION_SAFE_STEAM_API_INTERFACES compile-time flag is no longer necessary for cross-version compatibility, and the SteamAPI_InitSafe and SteamGameServer_InitSafe functions have been removed. Applications which currently use these InitSafe functions should be changed to use the normal Init functions instead. + + +ISteamRemoteStorage +* Removed unsed UGCHandle_t m_hFile from RemoteStoragePublishedFileUpdated_t + +ISteamUGC +* Added ability to add additional preview types to UGC such as standard images, YouTube videos, Sketchfab models, etc. + +ISteamUser +* Added BIsPhoneVerified() +* Added BIsTwoFactorEnabled() + +ISteamUtils +* Added IsSteamInBigPictureMode() +* Added StartVRDashboard(), which asks Steam to create and render the OpenVR Dashboard + +ISteamApps +* Added RequestAllProofOfPurchaseKeys + ---------------------------------------------------------------- v1.36 9th February 2016 diff --git a/client/steam.exe b/client/steam.exe index 0137b2d..c268840 100644 Binary files a/client/steam.exe and b/client/steam.exe differ diff --git a/glmgr/glmgrcocoa.mm b/glmgr/glmgrcocoa.mm index ca848df..a40a5aa 100644 --- a/glmgr/glmgrcocoa.mm +++ b/glmgr/glmgrcocoa.mm @@ -971,8 +971,8 @@ void GLMDisplayDB::PopulateRenderers( void ) cgl_err = CGLDescribeRenderer( cgl_rend, j, kCGLRPMaxSamples, &fields.m_maxSamples ); problems += (cgl_err != 0); cgl_err = CGLDescribeRenderer( cgl_rend, j, kCGLRPSampleModes, &fields.m_sampleModes ); problems += (cgl_err != 0); cgl_err = CGLDescribeRenderer( cgl_rend, j, kCGLRPSampleAlpha, &fields.m_sampleAlpha ); problems += (cgl_err != 0); - cgl_err = CGLDescribeRenderer( cgl_rend, j, kCGLRPVideoMemory, &fields.m_vidMemory ); problems += (cgl_err != 0); - cgl_err = CGLDescribeRenderer( cgl_rend, j, kCGLRPTextureMemory, &fields.m_texMemory ); problems += (cgl_err != 0); + cgl_err = CGLDescribeRenderer( cgl_rend, j, kCGLRPVideoMemoryMegabytes, &fields.m_vidMemory ); problems += (cgl_err != 0); + cgl_err = CGLDescribeRenderer( cgl_rend, j, kCGLRPTextureMemoryMegabytes, &fields.m_texMemory ); problems += (cgl_err != 0); // decide if this renderer goes in the table. // only insert renderers with at least one active display. diff --git a/public/steam/isteamapps.h b/public/steam/isteamapps.h index 50254cf..0b2bf4f 100644 --- a/public/steam/isteamapps.h +++ b/public/steam/isteamapps.h @@ -10,7 +10,7 @@ #pragma once #endif -const int k_cubAppProofOfPurchaseKeyMax = 64; // max bytes of a legacy cd key we support +const int k_cubAppProofOfPurchaseKeyMax = 240; // max supported length of a legacy cd key //----------------------------------------------------------------------------- @@ -50,7 +50,7 @@ public: virtual void InstallDLC( AppId_t nAppID ) = 0; virtual void UninstallDLC( AppId_t nAppID ) = 0; - // Request cd-key for yourself or owned DLC. If you are interested in this + // Request legacy cd-key for yourself or owned DLC. If you are interested in this // data then make sure you provide us with a list of valid keys to be distributed // to users when they purchase the game, before the game ships. // You'll receive an AppProofOfPurchaseKeyResponse_t callback when @@ -78,9 +78,15 @@ public: // return the buildid of this app, may change at any time based on backend updates to the game virtual int GetAppBuildId() = 0; + + // Request all proof of purchase keys for the calling appid and asociated DLC. + // A series of AppProofOfPurchaseKeyResponse_t callbacks will be sent with + // appropriate appid values, ending with a final callback where the m_nAppId + // member is k_uAppIdInvalid (zero). + virtual void RequestAllProofOfPurchaseKeys() = 0; }; -#define STEAMAPPS_INTERFACE_VERSION "STEAMAPPS_INTERFACE_VERSION007" +#define STEAMAPPS_INTERFACE_VERSION "STEAMAPPS_INTERFACE_VERSION008" // callbacks #if defined( VALVE_CALLBACK_PACK_SMALL ) @@ -123,16 +129,6 @@ struct RegisterActivationCodeResponse_t uint32 m_unPackageRegistered; // package that was registered. Only set on success }; -//----------------------------------------------------------------------------- -// Purpose: response to RegisterActivationCode() -//----------------------------------------------------------------------------- -struct AppProofOfPurchaseKeyResponse_t -{ - enum { k_iCallback = k_iSteamAppsCallbacks + 13 }; - EResult m_eResult; - uint32 m_nAppID; - char m_rgchKey[ k_cubAppProofOfPurchaseKeyMax ]; -}; //--------------------------------------------------------------------------------- // Purpose: posted after the user gains executes a steam url with query parameters @@ -145,5 +141,20 @@ struct NewLaunchQueryParameters_t enum { k_iCallback = k_iSteamAppsCallbacks + 14 }; }; + +//----------------------------------------------------------------------------- +// Purpose: response to RequestAppProofOfPurchaseKey/RequestAllProofOfPurchaseKeys +// for supporting third-party CD keys, or other proof-of-purchase systems. +//----------------------------------------------------------------------------- +struct AppProofOfPurchaseKeyResponse_t +{ + enum { k_iCallback = k_iSteamAppsCallbacks + 21 }; + EResult m_eResult; + uint32 m_nAppID; + uint32 m_cchKeyLength; + char m_rgchKey[k_cubAppProofOfPurchaseKeyMax]; +}; + + #pragma pack( pop ) #endif // ISTEAMAPPS_H diff --git a/public/steam/isteamclient.h b/public/steam/isteamclient.h index 6dc72fe..45d707d 100644 --- a/public/steam/isteamclient.h +++ b/public/steam/isteamclient.h @@ -21,8 +21,10 @@ #define REFERENCE(arg) ((void)arg) #endif -#ifdef STEAM_API_EXPORTS +#if defined(STEAM_API_EXPORTS) && !defined(API_GEN) #define STEAM_PRIVATE_API( ... ) __VA_ARGS__ +#elif defined(STEAM_API_EXPORTS) && defined(API_GEN) +#define STEAM_PRIVATE_API( ... ) #else #define STEAM_PRIVATE_API( ... ) protected: __VA_ARGS__ public: #endif @@ -75,7 +77,6 @@ typedef int32 HSteamUser; #define __cdecl #endif extern "C" typedef void (__cdecl *SteamAPIWarningMessageHook_t)(int, const char *); -extern "C" typedef void( *SteamAPI_PostAPIResultInProcess_t )(SteamAPICall_t callHandle, void *, uint32 unCallbackSize, int iCallbackNum); extern "C" typedef uint32 ( *SteamAPI_CheckCallbackRegistered_t )( int iCallbackNum ); #if defined( __SNC__ ) #pragma diag_suppress=1700 // warning 1700: class "%s" has virtual functions but non-virtual destructor @@ -227,8 +228,8 @@ public: virtual ISteamHTMLSurface *GetISteamHTMLSurface(HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char *pchVersion) = 0; // Helper functions for internal Steam usage - STEAM_PRIVATE_API( virtual void Set_SteamAPI_CPostAPIResultInProcess( SteamAPI_PostAPIResultInProcess_t func ) = 0; ) - STEAM_PRIVATE_API( virtual void Remove_SteamAPI_CPostAPIResultInProcess( SteamAPI_PostAPIResultInProcess_t func ) = 0; ) + STEAM_PRIVATE_API( virtual void DEPRECATED_Set_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) + STEAM_PRIVATE_API( virtual void DEPRECATED_Remove_SteamAPI_CPostAPIResultInProcess( void (*)() ) = 0; ) STEAM_PRIVATE_API( virtual void Set_SteamAPI_CCheckCallbackRegisteredInProcess( SteamAPI_CheckCallbackRegistered_t func ) = 0; ) // inventory @@ -287,8 +288,8 @@ enum { k_iSteamAppListCallbacks = 3900 }; enum { k_iSteamMusicCallbacks = 4000 }; enum { k_iSteamMusicRemoteCallbacks = 4100 }; enum { k_iClientVRCallbacks = 4200 }; -enum { k_iClientReservedCallbacks = 4300 }; -enum { k_iSteamReservedCallbacks = 4400 }; +enum { k_iClientGameNotificationCallbacks = 4300 }; +enum { k_iSteamGameNotificationCallbacks = 4400 }; enum { k_iSteamHTMLSurfaceCallbacks = 4500 }; enum { k_iClientVideoCallbacks = 4600 }; enum { k_iClientInventoryCallbacks = 4700 }; @@ -300,14 +301,11 @@ enum { k_iClientBluetoothManagerCallbacks = 4800 }; // Do not change any of these. //----------------------------------------------------------------------------- -struct SteamCallback_t -{ -public: - SteamCallback_t() {} -}; +#ifdef STEAM_CALLBACK_INSPECTION_ENABLED #define DEFINE_CALLBACK( callbackname, callbackid ) \ -struct callbackname : SteamCallback_t { \ +struct callbackname { \ + typedef callbackname SteamCallback_t; \ enum { k_iCallback = callbackid }; \ static callbackname *GetNullPointer() { return 0; } \ static const char *GetCallbackName() { return #callbackname; } \ @@ -345,6 +343,17 @@ struct callbackname : SteamCallback_t { \ static bool GetMemberVariable( uint32 index, uint32 &varOffset, uint32 &varSize, uint32 &varCount, const char **pszName, const char **pszType ) { REFERENCE( pszType ); REFERENCE( pszName ); REFERENCE( varCount ); REFERENCE( varSize ); REFERENCE( varOffset ); REFERENCE( index ); return false; } \ }; +#else + +#define DEFINE_CALLBACK( callbackname, callbackid ) struct callbackname { typedef callbackname SteamCallback_t; enum { k_iCallback = callbackid }; +#define CALLBACK_MEMBER( varidx, vartype, varname ) public: vartype varname ; +#define CALLBACK_ARRAY( varidx, vartype, varname, varcount ) public: vartype varname [ varcount ]; +#define END_CALLBACK_INTERNAL_BEGIN( numvars ) +#define END_CALLBACK_INTERNAL_SWITCH( varidx ) +#define END_CALLBACK_INTERNAL_END() }; +#define END_DEFINE_CALLBACK_0() }; + +#endif #define END_DEFINE_CALLBACK_1() \ END_CALLBACK_INTERNAL_BEGIN( 1 ) \ diff --git a/public/steam/isteamcontroller.h b/public/steam/isteamcontroller.h index c24de73..10d5ec2 100644 --- a/public/steam/isteamcontroller.h +++ b/public/steam/isteamcontroller.h @@ -156,8 +156,9 @@ public: virtual bool Init() = 0; virtual bool Shutdown() = 0; - // Pump callback/callresult events - // Note: SteamAPI_RunCallbacks will do this for you, so you should never need to call this directly. + // Synchronize API state with the latest Steam Controller inputs available. This + // is performed automatically by SteamAPI_RunCallbacks, but for the absolute lowest + // possible latency, you call this directly before reading controller state. virtual void RunFrame() = 0; // Enumerate currently connected controllers diff --git a/public/steam/isteamhtmlsurface.h b/public/steam/isteamhtmlsurface.h index 81b6025..ccfc6af 100644 --- a/public/steam/isteamhtmlsurface.h +++ b/public/steam/isteamhtmlsurface.h @@ -33,6 +33,13 @@ public: // identify your client on web servers. // The userCSS string lets you apply a CSS style sheet to every displayed page, leave null if // you do not require this functionality. + // + // YOU MUST HAVE IMPLEMENTED HANDLERS FOR HTML_BrowserReady_t, HTML_StartRequest_t, + // HTML_JSAlert_t, HTML_JSConfirm_t, and HTML_FileOpenDialog_t! See the CALLBACKS + // section of this interface (AllowStartRequest, etc) for more details. If you do + // not implement these callback handlers, the browser may appear to hang instead of + // navigating to new pages or triggering javascript popups. + // CALL_RESULT( HTML_BrowserReady_t ) virtual SteamAPICall_t CreateBrowser( const char *pchUserAgent, const char *pchUserCSS ) = 0; diff --git a/public/steam/isteammatchmaking.h b/public/steam/isteammatchmaking.h index 8b800a7..84f6b09 100644 --- a/public/steam/isteammatchmaking.h +++ b/public/steam/isteammatchmaking.h @@ -256,6 +256,7 @@ public: // after completion, the local user will no longer be the owner virtual void CheckForPSNGameBootInvite( unsigned int iGameBootAttributes ) = 0; #endif + CALL_BACK( LobbyChatUpdate_t ); }; #define STEAMMATCHMAKING_INTERFACE_VERSION "SteamMatchMaking009" diff --git a/public/steam/isteamremotestorage.h b/public/steam/isteamremotestorage.h index 6827cbb..5b229c1 100644 --- a/public/steam/isteamremotestorage.h +++ b/public/steam/isteamremotestorage.h @@ -666,7 +666,7 @@ struct RemoteStoragePublishedFileUpdated_t enum { k_iCallback = k_iClientRemoteStorageCallbacks + 30 }; PublishedFileId_t m_nPublishedFileId; // The published file id AppId_t m_nAppID; // ID of the app that will consume this file. - UGCHandle_t m_hFile; // The new content + uint64 m_ulUnused; // not used anymore }; //----------------------------------------------------------------------------- diff --git a/public/steam/isteamugc.h b/public/steam/isteamugc.h index 1edada6..26f8453 100644 --- a/public/steam/isteamugc.h +++ b/public/steam/isteamugc.h @@ -127,6 +127,23 @@ enum EItemStatistic k_EItemStatistic_ReportScore = 7, }; +enum EItemPreviewType +{ + k_EItemPreviewType_Image = 0, // standard image file expected (e.g. jpg, png, gif, etc.) + k_EItemPreviewType_YouTubeVideo = 1, // video id is stored + k_EItemPreviewType_Sketchfab = 2, // model id is stored + k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, // standard image file expected - cube map in the layout + // +---+---+-------+ + // | |Up | | + // +---+---+---+---+ + // | L | F | R | B | + // +---+---+---+---+ + // | |Dn | | + // +---+---+---+---+ + k_EItemPreviewType_EnvironmentMap_LatLong = 4, // standard image file expected + k_EItemPreviewType_ReservedMax = 255, // you can specify your own types above this value +}; + const uint32 kNumUGCResultsPerPage = 50; const uint32 k_cchDeveloperMetadataMax = 5000; @@ -191,7 +208,7 @@ public: virtual bool GetQueryUGCChildren( UGCQueryHandle_t handle, uint32 index, PublishedFileId_t* pvecPublishedFileID, uint32 cMaxEntries ) = 0; virtual bool GetQueryUGCStatistic( UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint32 *pStatValue ) = 0; virtual uint32 GetQueryUGCNumAdditionalPreviews( UGCQueryHandle_t handle, uint32 index ) = 0; - virtual bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, bool *pbIsImage ) = 0; + virtual bool GetQueryUGCAdditionalPreview( UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, OUT_STRING_COUNT(cchURLSize) char *pchURLOrVideoID, uint32 cchURLSize, OUT_STRING_COUNT(cchURLSize) char *pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType *pPreviewType ) = 0; virtual uint32 GetQueryUGCNumKeyValueTags( UGCQueryHandle_t handle, uint32 index ) = 0; virtual bool GetQueryUGCKeyValueTag( UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, OUT_STRING_COUNT(cchKeySize) char *pchKey, uint32 cchKeySize, OUT_STRING_COUNT(cchValueSize) char *pchValue, uint32 cchValueSize ) = 0; @@ -238,6 +255,11 @@ public: virtual bool SetItemPreview( UGCUpdateHandle_t handle, const char *pszPreviewFile ) = 0; // change preview image file for this item. pszPreviewFile points to local image file, which must be under 1MB in size virtual bool RemoveItemKeyValueTags( UGCUpdateHandle_t handle, const char *pchKey ) = 0; // remove any existing key-value tags with the specified key virtual bool AddItemKeyValueTag( UGCUpdateHandle_t handle, const char *pchKey, const char *pchValue ) = 0; // add new key-value tags for the item. Note that there can be multiple values for a tag. + virtual bool AddItemPreviewFile( UGCUpdateHandle_t handle, const char *pszPreviewFile, EItemPreviewType type ) = 0; // add preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size + virtual bool AddItemPreviewVideo( UGCUpdateHandle_t handle, const char *pszVideoID ) = 0; // add preview video for this item + virtual bool UpdateItemPreviewFile( UGCUpdateHandle_t handle, uint32 index, const char *pszPreviewFile ) = 0; // updates an existing preview file for this item. pszPreviewFile points to local file, which must be under 1MB in size + virtual bool UpdateItemPreviewVideo( UGCUpdateHandle_t handle, uint32 index, const char *pszVideoID ) = 0; // updates an existing preview video for this item + virtual bool RemoveItemPreview( UGCUpdateHandle_t handle, uint32 index ) = 0; // remove a preview by index starting at 0 (previews are sorted) CALL_RESULT( SubmitItemUpdateResult_t ) virtual SteamAPICall_t SubmitItemUpdate( UGCUpdateHandle_t handle, const char *pchChangeNote ) = 0; // commit update process started with StartItemUpdate() @@ -282,7 +304,7 @@ public: virtual void SuspendDownloads( bool bSuspend ) = 0; }; -#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION007" +#define STEAMUGC_INTERFACE_VERSION "STEAMUGC_INTERFACE_VERSION008" //----------------------------------------------------------------------------- // Purpose: Callback for querying UGC diff --git a/public/steam/isteamuser.h b/public/steam/isteamuser.h index 485aac6..4c685b9 100644 --- a/public/steam/isteamuser.h +++ b/public/steam/isteamuser.h @@ -30,8 +30,6 @@ struct CallbackMsg_t }; #pragma pack( pop ) -// reference to a steam call, to filter results by -typedef int32 HSteamCall; //----------------------------------------------------------------------------- // Purpose: Functions for accessing and manipulating a steam account @@ -180,46 +178,15 @@ public: CALL_RESULT( StoreAuthURLResponse_t ) virtual SteamAPICall_t RequestStoreAuthURL( const char *pchRedirectURL ) = 0; -#ifdef _PS3 - // Initiates PS3 Logon request using just PSN ticket. - // - // PARAMS: bInteractive - If set tells Steam to go ahead and show the PS3 NetStart dialog if needed to - // prompt the user for network setup/PSN logon before initiating the Steam side of the logon. - // - // Listen for SteamServersConnected_t or SteamServerConnectFailure_t for status. SteamServerConnectFailure_t - // may return with EResult k_EResultExternalAccountUnlinked if the PSN account is unknown to Steam. You should - // then call LogOnAndLinkSteamAccountToPSN() after prompting the user for credentials to establish a link. - // Future calls to LogOn() after the one time link call should succeed as long as the user is connected to PSN. - virtual void LogOn( bool bInteractive ) = 0; + // gets whether the users phone number is verified + virtual bool BIsPhoneVerified() = 0; - // Initiates a request to logon with a specific steam username/password and create a PSN account link at - // the same time. Should call this only if LogOn() has failed and indicated the PSN account is unlinked. - // - // PARAMS: bInteractive - If set tells Steam to go ahead and show the PS3 NetStart dialog if needed to - // prompt the user for network setup/PSN logon before initiating the Steam side of the logon. pchUserName - // should be the users Steam username, and pchPassword should be the users Steam password. - // - // Listen for SteamServersConnected_t or SteamServerConnectFailure_t for status. SteamServerConnectFailure_t - // may return with EResult k_EResultOtherAccountAlreadyLinked if already linked to another account. - virtual void LogOnAndLinkSteamAccountToPSN( bool bInteractive, const char *pchUserName, const char *pchPassword ) = 0; - - // Final logon option for PS3, this logs into an existing account if already linked, but if not already linked - // creates a new account using the info in the PSN ticket to generate a unique account name. The new account is - // then linked to the PSN ticket. This is the faster option for new users who don't have an existing Steam account - // to get into multiplayer. - // - // PARAMS: bInteractive - If set tells Steam to go ahead and show the PS3 NetStart dialog if needed to - // prompt the user for network setup/PSN logon before initiating the Steam side of the logon. - virtual void LogOnAndCreateNewSteamAccountIfNeeded( bool bInteractive ) = 0; - - // Returns a special SteamID that represents the user's PSN information. Can be used to query the user's PSN avatar, - // online name, etc. through the standard Steamworks interfaces. - virtual CSteamID GetConsoleSteamID() = 0; -#endif + // gets whether the user has two factor enabled on their account + virtual bool BIsTwoFactorEnabled() = 0; }; -#define STEAMUSER_INTERFACE_VERSION "SteamUser018" +#define STEAMUSER_INTERFACE_VERSION "SteamUser019" // callbacks diff --git a/public/steam/isteamutils.h b/public/steam/isteamutils.h index 42131a9..ef439a4 100644 --- a/public/steam/isteamutils.h +++ b/public/steam/isteamutils.h @@ -151,9 +151,17 @@ public: // Sets the inset of the overlay notification from the corner specified by SetOverlayNotificationPosition. virtual void SetOverlayNotificationInset( int nHorizontalInset, int nVerticalInset ) = 0; + + // returns true if Steam & the Steam Overlay are running in Big Picture mode + // Games much be launched through the Steam client to enable the Big Picture overlay. During development, + // a game can be added as a non-steam game to the developers library to test this feature + virtual bool IsSteamInBigPictureMode() = 0; + + // ask SteamUI to create and render its OpenVR dashboard + virtual void StartVRDashboard() = 0; }; -#define STEAMUTILS_INTERFACE_VERSION "SteamUtils007" +#define STEAMUTILS_INTERFACE_VERSION "SteamUtils008" // callbacks @@ -191,6 +199,8 @@ struct SteamAPICallCompleted_t { enum { k_iCallback = k_iSteamUtilsCallbacks + 3 }; SteamAPICall_t m_hAsyncCall; + int m_iCallback; + uint32 m_cubParam; }; diff --git a/public/steam/lib/linux32/libsdkencryptedappticket.so b/public/steam/lib/linux32/libsdkencryptedappticket.so index 0ed9c2d..4908a08 100644 Binary files a/public/steam/lib/linux32/libsdkencryptedappticket.so and b/public/steam/lib/linux32/libsdkencryptedappticket.so differ diff --git a/public/steam/lib/linux64/libsdkencryptedappticket.so b/public/steam/lib/linux64/libsdkencryptedappticket.so index 8f48840..0b6bc70 100644 Binary files a/public/steam/lib/linux64/libsdkencryptedappticket.so and b/public/steam/lib/linux64/libsdkencryptedappticket.so differ diff --git a/public/steam/lib/win32/sdkencryptedappticket.dll b/public/steam/lib/win32/sdkencryptedappticket.dll index c630e9a..1c4dfc8 100644 Binary files a/public/steam/lib/win32/sdkencryptedappticket.dll and b/public/steam/lib/win32/sdkencryptedappticket.dll differ diff --git a/public/steam/lib/win32/sdkencryptedappticket.lib b/public/steam/lib/win32/sdkencryptedappticket.lib index cc81225..c308557 100644 Binary files a/public/steam/lib/win32/sdkencryptedappticket.lib and b/public/steam/lib/win32/sdkencryptedappticket.lib differ diff --git a/public/steam/lib/win64/sdkencryptedappticket64.dll b/public/steam/lib/win64/sdkencryptedappticket64.dll index 6961e3b..28ec919 100644 Binary files a/public/steam/lib/win64/sdkencryptedappticket64.dll and b/public/steam/lib/win64/sdkencryptedappticket64.dll differ diff --git a/public/steam/lib/win64/sdkencryptedappticket64.lib b/public/steam/lib/win64/sdkencryptedappticket64.lib index 1e90a14..8ff9b68 100644 Binary files a/public/steam/lib/win64/sdkencryptedappticket64.lib and b/public/steam/lib/win64/sdkencryptedappticket64.lib differ diff --git a/public/steam/steam_api.h b/public/steam/steam_api.h index fd96b90..25e3959 100644 --- a/public/steam/steam_api.h +++ b/public/steam/steam_api.h @@ -62,81 +62,123 @@ // //----------------------------------------------------------------------------------------------------------------------------------------------------------// -// S_API void SteamAPI_Init(); (see below) + +// SteamAPI_Init must be called before using any other API functions. If it fails, an +// error message will be output to the debugger (or stderr) with further information. +S_API bool S_CALLTYPE SteamAPI_Init(); + +// SteamAPI_Shutdown should be called during process shutdown if possible. S_API void S_CALLTYPE SteamAPI_Shutdown(); -// checks if a local Steam client is running -S_API bool S_CALLTYPE SteamAPI_IsSteamRunning(); - -// Detects if your executable was launched through the Steam client, and restarts your game through -// the client if necessary. The Steam client will be started if it is not running. +// SteamAPI_RestartAppIfNecessary ensures that your executable was launched through Steam. // -// Returns: true if your executable was NOT launched through the Steam client. This function will -// then start your application through the client. Your current process should exit. +// Returns true if the current process should terminate. Steam is now re-launching your application. // -// false if your executable was started through the Steam client or a steam_appid.txt file -// is present in your game's directory (for development). Your current process should continue. +// Returns false if no action needs to be taken. This means that your executable was started through +// the Steam client, or a steam_appid.txt file is present in your game's directory (for development). +// Your current process should continue if false is returned. // -// NOTE: This function should be used only if you are using CEG or not using Steam's DRM. Once applied -// to your executable, Steam's DRM will handle restarting through Steam if necessary. +// NOTE: If you use the Steam DRM wrapper on your primary executable file, this check is unnecessary +// since the DRM wrapper will ensure that your application was launched properly through Steam. S_API bool S_CALLTYPE SteamAPI_RestartAppIfNecessary( uint32 unOwnAppID ); +// Most Steam API functions allocate some amount of thread-local memory for parameter storage. +// SteamAPI_ReleaseCurrentThreadMemory() will free API memory associated with the calling thread. +// This function is also called automatically by SteamAPI_RunCallbacks(), so a single-threaded +// program never needs to explicitly call this function. +S_API void S_CALLTYPE SteamAPI_ReleaseCurrentThreadMemory(); + + // crash dump recording functions S_API void S_CALLTYPE SteamAPI_WriteMiniDump( uint32 uStructuredExceptionCode, void* pvExceptionInfo, uint32 uBuildID ); S_API void S_CALLTYPE SteamAPI_SetMiniDumpComment( const char *pchMsg ); -// interface pointers, configured by SteamAPI_Init() -S_API ISteamClient *S_CALLTYPE SteamClient(); - - -// -// VERSION_SAFE_STEAM_API_INTERFACES is usually not necessary, but it provides safety against releasing -// new steam_api.dll's without recompiling/rereleasing modules that use it. -// -// If you use VERSION_SAFE_STEAM_API_INTERFACES, then you should call SteamAPI_InitSafe(). Also, to get the -// Steam interfaces, you must create and Init() a CSteamAPIContext (below) and use the interfaces in there. -// -// If you don't use VERSION_SAFE_STEAM_API_INTERFACES, then you can use SteamAPI_Init() and the SteamXXXX() -// functions below to get at the Steam interfaces. -// -#ifdef VERSION_SAFE_STEAM_API_INTERFACES - -S_API bool S_CALLTYPE SteamAPI_InitSafe(); - -#else - -S_API bool S_CALLTYPE SteamAPI_Init(); - -S_API ISteamUser *S_CALLTYPE SteamUser(); -S_API ISteamFriends *S_CALLTYPE SteamFriends(); -S_API ISteamUtils *S_CALLTYPE SteamUtils(); -S_API ISteamMatchmaking *S_CALLTYPE SteamMatchmaking(); -S_API ISteamUserStats *S_CALLTYPE SteamUserStats(); -S_API ISteamApps *S_CALLTYPE SteamApps(); -S_API ISteamNetworking *S_CALLTYPE SteamNetworking(); -S_API ISteamMatchmakingServers *S_CALLTYPE SteamMatchmakingServers(); -S_API ISteamRemoteStorage *S_CALLTYPE SteamRemoteStorage(); -S_API ISteamScreenshots *S_CALLTYPE SteamScreenshots(); -S_API ISteamHTTP *S_CALLTYPE SteamHTTP(); -S_API ISteamUnifiedMessages *S_CALLTYPE SteamUnifiedMessages(); -S_API ISteamController *S_CALLTYPE SteamController(); -S_API ISteamUGC *S_CALLTYPE SteamUGC(); -S_API ISteamAppList *S_CALLTYPE SteamAppList(); -S_API ISteamMusic *S_CALLTYPE SteamMusic(); -S_API ISteamMusicRemote *S_CALLTYPE SteamMusicRemote(); -S_API ISteamHTMLSurface *S_CALLTYPE SteamHTMLSurface(); -S_API ISteamInventory *S_CALLTYPE SteamInventory(); -S_API ISteamVideo *S_CALLTYPE SteamVideo(); +// If your application contains modules or libraries which could be built against different SDK +// versions, then you should define VERSION_SAFE_STEAM_API_INTERFACES to enforce that you cannot +// use the un-versioned global accessors. Instead, always create and use CSteamAPIContext objects +// to retrieve interface pointers which match the Steamworks SDK headers which match your build. +#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) +inline ISteamClient *SteamClient(); +inline ISteamUser *SteamUser(); +inline ISteamFriends *SteamFriends(); +inline ISteamUtils *SteamUtils(); +inline ISteamMatchmaking *SteamMatchmaking(); +inline ISteamUserStats *SteamUserStats(); +inline ISteamApps *SteamApps(); +inline ISteamNetworking *SteamNetworking(); +inline ISteamMatchmakingServers *SteamMatchmakingServers(); +inline ISteamRemoteStorage *SteamRemoteStorage(); +inline ISteamScreenshots *SteamScreenshots(); +inline ISteamHTTP *SteamHTTP(); +inline ISteamUnifiedMessages *SteamUnifiedMessages(); +inline ISteamController *SteamController(); +inline ISteamUGC *SteamUGC(); +inline ISteamAppList *SteamAppList(); +inline ISteamMusic *SteamMusic(); +inline ISteamMusicRemote *SteamMusicRemote(); +inline ISteamHTMLSurface *SteamHTMLSurface(); +inline ISteamInventory *SteamInventory(); +inline ISteamVideo *SteamVideo(); #endif // VERSION_SAFE_STEAM_API_INTERFACES -// Most Steam API functions allocate some amount of thread-local memory for -// parameter storage. The SteamAPI_ReleaseCurrentThreadMemory() function -// will free all API-related memory associated with the calling thread. -// This memory is also released automatically by SteamAPI_RunCallbacks(), so -// a single-threaded program does not need to explicitly call this function. -S_API void S_CALLTYPE SteamAPI_ReleaseCurrentThreadMemory(); +// Every compiled module will have its own inlined definitions of CSteamAPIContext::Init. +// Do NOT share CSteamAPIContext pointers across modules unless you are sure that they will +// all be compiled against the same SDK! +class CSteamAPIContext +{ +public: + CSteamAPIContext() { Clear(); } + void Clear(); + + bool Init(); + + ISteamClient* SteamClient() const { return m_pSteamClient; } + ISteamUser* SteamUser() const { return m_pSteamUser; } + ISteamFriends* SteamFriends() const { return m_pSteamFriends; } + ISteamUtils* SteamUtils() const { return m_pSteamUtils; } + ISteamMatchmaking* SteamMatchmaking() const { return m_pSteamMatchmaking; } + ISteamUserStats* SteamUserStats() const { return m_pSteamUserStats; } + ISteamApps* SteamApps() const { return m_pSteamApps; } + ISteamMatchmakingServers* SteamMatchmakingServers() const { return m_pSteamMatchmakingServers; } + ISteamNetworking* SteamNetworking() const { return m_pSteamNetworking; } + ISteamRemoteStorage* SteamRemoteStorage() const { return m_pSteamRemoteStorage; } + ISteamScreenshots* SteamScreenshots() const { return m_pSteamScreenshots; } + ISteamHTTP* SteamHTTP() const { return m_pSteamHTTP; } + ISteamUnifiedMessages* SteamUnifiedMessages() const { return m_pSteamUnifiedMessages; } + ISteamController* SteamController() const { return m_pController; } + ISteamUGC* SteamUGC() const { return m_pSteamUGC; } + ISteamAppList* SteamAppList() const { return m_pSteamAppList; } + ISteamMusic* SteamMusic() const { return m_pSteamMusic; } + ISteamMusicRemote* SteamMusicRemote() const { return m_pSteamMusicRemote; } + ISteamHTMLSurface* SteamHTMLSurface() const { return m_pSteamHTMLSurface; } + ISteamInventory* SteamInventory() const { return m_pSteamInventory; } + ISteamVideo* SteamVideo() const { return m_pSteamVideo; } + +private: + ISteamClient *m_pSteamClient; + ISteamUser *m_pSteamUser; + ISteamFriends *m_pSteamFriends; + ISteamUtils *m_pSteamUtils; + ISteamMatchmaking *m_pSteamMatchmaking; + ISteamUserStats *m_pSteamUserStats; + ISteamApps *m_pSteamApps; + ISteamMatchmakingServers *m_pSteamMatchmakingServers; + ISteamNetworking *m_pSteamNetworking; + ISteamRemoteStorage *m_pSteamRemoteStorage; + ISteamScreenshots *m_pSteamScreenshots; + ISteamHTTP *m_pSteamHTTP; + ISteamUnifiedMessages *m_pSteamUnifiedMessages; + ISteamController *m_pController; + ISteamUGC *m_pSteamUGC; + ISteamAppList *m_pSteamAppList; + ISteamMusic *m_pSteamMusic; + ISteamMusicRemote *m_pSteamMusicRemote; + ISteamHTMLSurface *m_pSteamHTMLSurface; + ISteamInventory *m_pSteamInventory; + ISteamVideo *m_pSteamVideo; +}; //----------------------------------------------------------------------------------------------------------------------------------------------------------// @@ -162,11 +204,12 @@ S_API void S_CALLTYPE SteamAPI_ReleaseCurrentThreadMemory(); //----------------------------------------------------------------------------------------------------------------------------------------------------------// // SteamAPI_RunCallbacks is safe to call from multiple threads simultaneously, -// but if you choose to do this, callback code may be executed on any thread. +// but if you choose to do this, callback code could be executed on any thread. +// One alternative is to call SteamAPI_RunCallbacks from the main thread only, +// and call SteamAPI_ReleaseCurrentThreadMemory regularly on other threads. S_API void S_CALLTYPE SteamAPI_RunCallbacks(); - // Declares a callback member function plus a helper member variable which // registers the callback on object creation and unregisters on destruction. // The optional fourth 'var' param exists only for backwards-compatibility @@ -239,66 +282,18 @@ class CCallResult : private CCallbackBase public: typedef void (T::*func_t)( P*, bool ); - CCallResult() - { - m_hAPICall = k_uAPICallInvalid; - m_pObj = NULL; - m_Func = NULL; - m_iCallback = P::k_iCallback; - } - - void Set( SteamAPICall_t hAPICall, T *p, func_t func ) - { - if ( m_hAPICall ) - SteamAPI_UnregisterCallResult( this, m_hAPICall ); - - m_hAPICall = hAPICall; - m_pObj = p; - m_Func = func; - - if ( hAPICall ) - SteamAPI_RegisterCallResult( this, hAPICall ); - } - - bool IsActive() const - { - return ( m_hAPICall != k_uAPICallInvalid ); - } - - void Cancel() - { - if ( m_hAPICall != k_uAPICallInvalid ) - { - SteamAPI_UnregisterCallResult( this, m_hAPICall ); - m_hAPICall = k_uAPICallInvalid; - } - - } - - ~CCallResult() - { - Cancel(); - } + CCallResult(); + ~CCallResult(); + + void Set( SteamAPICall_t hAPICall, T *p, func_t func ); + bool IsActive() const; + void Cancel(); void SetGameserverFlag() { m_nCallbackFlags |= k_ECallbackFlagsGameServer; } private: - virtual void Run( void *pvParam ) - { - m_hAPICall = k_uAPICallInvalid; // caller unregisters for us - (m_pObj->*m_Func)( (P *)pvParam, false ); - } - virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) - { - if ( hSteamAPICall == m_hAPICall ) - { - m_hAPICall = k_uAPICallInvalid; // caller unregisters for us - (m_pObj->*m_Func)( (P *)pvParam, bIOFailure ); - } - } - virtual int GetCallbackSizeBytes() - { - return sizeof( P ); - } + virtual void Run( void *pvParam ); + virtual void Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ); + virtual int GetCallbackSizeBytes() { return sizeof( P ); } SteamAPICall_t m_hAPICall; T *m_pObj; @@ -320,42 +315,14 @@ public: // NOTE: If you can't provide the correct parameters at construction time, you should // use the CCallbackManual callback object (STEAM_CALLBACK_MANUAL macro) instead. - CCallback( T *pObj, func_t func ) : m_pObj( NULL ), m_Func( NULL ) - { - if ( bGameserver ) - { - this->SetGameserverFlag(); - } - Register( pObj, func ); - } + CCallback( T *pObj, func_t func ); - // manual registration of the callback - void Register( T *pObj, func_t func ) - { - if ( !pObj || !func ) - return; - - if ( this->m_nCallbackFlags & CCallbackBase::k_ECallbackFlagsRegistered ) - Unregister(); - - m_pObj = pObj; - m_Func = func; - // SteamAPI_RegisterCallback sets k_ECallbackFlagsRegistered - SteamAPI_RegisterCallback( this, P::k_iCallback ); - } - - void Unregister() - { - // SteamAPI_UnregisterCallback removes k_ECallbackFlagsRegistered - SteamAPI_UnregisterCallback( this ); - } + void Register( T *pObj, func_t func ); + void Unregister(); protected: - virtual void Run( void *pvParam ) - { - (m_pObj->*m_Func)( (P *)pvParam ); - } - + virtual void Run( void *pvParam ); + T *m_pObj; func_t m_Func; }; @@ -376,26 +343,6 @@ public: -//----------------------------------------------------------------------------- -// The following macros are implementation details, not intended for public use -//----------------------------------------------------------------------------- -#define _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) -#define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... ) _STEAM_CALLBACK_##SELECTED -#define _STEAM_CALLBACK_SELECT( X, Y ) _STEAM_CALLBACK_HELPER X Y -#define _STEAM_CALLBACK_3( extra_code, thisclass, func, param ) \ - struct CCallbackInternal_ ## func : private CCallbackImpl< sizeof( param ) > { \ - CCallbackInternal_ ## func () { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ - CCallbackInternal_ ## func ( const CCallbackInternal_ ## func & ) { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ - CCallbackInternal_ ## func & operator=( const CCallbackInternal_ ## func & ) { return *this; } \ - private: virtual void Run( void *pvParam ) { _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) \ - thisclass *pOuter = reinterpret_cast( reinterpret_cast(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); \ - pOuter->func( reinterpret_cast( pvParam ) ); \ - } \ - } m_steamcallback_ ## func ; void func( param *pParam ) -#define _STEAM_CALLBACK_4( _, thisclass, func, param, var ) \ - CCallback< thisclass, param > var; void func( param *pParam ) - - #ifdef _WIN32 // disable this warning; this pattern need for steam callback registration #pragma warning( disable: 4355 ) // 'this' : used in base member initializer list @@ -408,6 +355,9 @@ public: // The following functions are part of abstracting API access to the steamclient.dll, but should only be used in very specific cases //----------------------------------------------------------------------------------------------------------------------------------------------------------// +// SteamAPI_IsSteamRunning() returns true if Steam is currently running +S_API bool S_CALLTYPE SteamAPI_IsSteamRunning(); + // Pumps out all the steam messages, calling registered callbacks. // NOT THREADSAFE - do not call from multiple threads simultaneously. S_API void Steam_RunCallbacks( HSteamPipe hSteamPipe, bool bGameServerCallbacks ); @@ -418,7 +368,8 @@ S_API void Steam_RegisterInterfaceFuncs( void *hModule ); // returns the HSteamUser of the last user to dispatch a callback S_API HSteamUser Steam_GetHSteamUserCurrent(); -// returns the filename path of the current running Steam process, used if you need to load an explicit steam dll by name +// returns the filename path of the current running Steam process, used if you need to load an explicit steam dll by name. +// DEPRECATED - implementation is Windows only, and the path returned is a UTF-8 string which must be converted to UTF-16 for use with Win32 APIs S_API const char *SteamAPI_GetSteamInstallPath(); // returns the pipe we are communicating to Steam with @@ -431,211 +382,12 @@ S_API void SteamAPI_SetTryCatchCallbacks( bool bTryCatchCallbacks ); S_API HSteamPipe GetHSteamPipe(); S_API HSteamUser GetHSteamUser(); -#ifdef VERSION_SAFE_STEAM_API_INTERFACES -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -// VERSION_SAFE_STEAM_API_INTERFACES uses CSteamAPIContext to provide interfaces to each module in a way that -// lets them each specify the interface versions they are compiled with. -// -// It's important that these stay inlined in the header so the calling module specifies the interface versions -// for whatever Steam API version it has. -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -S_API HSteamUser SteamAPI_GetHSteamUser(); - -class CSteamAPIContext -{ -public: - CSteamAPIContext(); - void Clear(); - - bool Init(); - - ISteamUser* SteamUser() { return m_pSteamUser; } - ISteamFriends* SteamFriends() { return m_pSteamFriends; } - ISteamUtils* SteamUtils() { return m_pSteamUtils; } - ISteamMatchmaking* SteamMatchmaking() { return m_pSteamMatchmaking; } - ISteamUserStats* SteamUserStats() { return m_pSteamUserStats; } - ISteamApps* SteamApps() { return m_pSteamApps; } - ISteamMatchmakingServers* SteamMatchmakingServers() { return m_pSteamMatchmakingServers; } - ISteamNetworking* SteamNetworking() { return m_pSteamNetworking; } - ISteamRemoteStorage* SteamRemoteStorage() { return m_pSteamRemoteStorage; } - ISteamScreenshots* SteamScreenshots() { return m_pSteamScreenshots; } - ISteamHTTP* SteamHTTP() { return m_pSteamHTTP; } - ISteamUnifiedMessages* SteamUnifiedMessages() { return m_pSteamUnifiedMessages; } - ISteamController* SteamController() { return m_pController; } - ISteamUGC* SteamUGC() { return m_pSteamUGC; } - ISteamAppList* SteamAppList() { return m_pSteamAppList; } - ISteamMusic* SteamMusic() { return m_pSteamMusic; } - ISteamMusicRemote* SteamMusicRemote() { return m_pSteamMusicRemote; } - ISteamHTMLSurface* SteamHTMLSurface() { return m_pSteamHTMLSurface; } - ISteamInventory* SteamInventory() { return m_pSteamInventory; } - ISteamVideo* SteamVideo() { return m_pSteamVideo; } - -private: - ISteamUser *m_pSteamUser; - ISteamFriends *m_pSteamFriends; - ISteamUtils *m_pSteamUtils; - ISteamMatchmaking *m_pSteamMatchmaking; - ISteamUserStats *m_pSteamUserStats; - ISteamApps *m_pSteamApps; - ISteamMatchmakingServers *m_pSteamMatchmakingServers; - ISteamNetworking *m_pSteamNetworking; - ISteamRemoteStorage *m_pSteamRemoteStorage; - ISteamScreenshots *m_pSteamScreenshots; - ISteamHTTP *m_pSteamHTTP; - ISteamUnifiedMessages*m_pSteamUnifiedMessages; - ISteamController *m_pController; - ISteamUGC *m_pSteamUGC; - ISteamAppList *m_pSteamAppList; - ISteamMusic *m_pSteamMusic; - ISteamMusicRemote *m_pSteamMusicRemote; - ISteamHTMLSurface *m_pSteamHTMLSurface; - ISteamInventory *m_pSteamInventory; - ISteamVideo *m_pSteamVideo; -}; - -inline CSteamAPIContext::CSteamAPIContext() -{ - Clear(); -} - -inline void CSteamAPIContext::Clear() -{ - m_pSteamUser = NULL; - m_pSteamFriends = NULL; - m_pSteamUtils = NULL; - m_pSteamMatchmaking = NULL; - m_pSteamUserStats = NULL; - m_pSteamApps = NULL; - m_pSteamMatchmakingServers = NULL; - m_pSteamNetworking = NULL; - m_pSteamRemoteStorage = NULL; - m_pSteamHTTP = NULL; - m_pSteamScreenshots = NULL; - m_pSteamMusic = NULL; - m_pSteamUnifiedMessages = NULL; - m_pController = NULL; - m_pSteamUGC = NULL; - m_pSteamAppList = NULL; - m_pSteamMusic = NULL; - m_pSteamMusicRemote= NULL; - m_pSteamHTMLSurface = NULL; - m_pSteamInventory = NULL; -} - -// This function must be inlined so the module using steam_api.dll gets the version names they want. -inline bool CSteamAPIContext::Init() -{ - if ( !SteamClient() ) - return false; - - HSteamUser hSteamUser = SteamAPI_GetHSteamUser(); - HSteamPipe hSteamPipe = SteamAPI_GetHSteamPipe(); - - m_pSteamUser = SteamClient()->GetISteamUser( hSteamUser, hSteamPipe, STEAMUSER_INTERFACE_VERSION ); - if ( !m_pSteamUser ) - return false; - - m_pSteamFriends = SteamClient()->GetISteamFriends( hSteamUser, hSteamPipe, STEAMFRIENDS_INTERFACE_VERSION ); - if ( !m_pSteamFriends ) - return false; - - m_pSteamUtils = SteamClient()->GetISteamUtils( hSteamPipe, STEAMUTILS_INTERFACE_VERSION ); - if ( !m_pSteamUtils ) - return false; - - m_pSteamMatchmaking = SteamClient()->GetISteamMatchmaking( hSteamUser, hSteamPipe, STEAMMATCHMAKING_INTERFACE_VERSION ); - if ( !m_pSteamMatchmaking ) - return false; - - m_pSteamMatchmakingServers = SteamClient()->GetISteamMatchmakingServers( hSteamUser, hSteamPipe, STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION ); - if ( !m_pSteamMatchmakingServers ) - return false; - - m_pSteamUserStats = SteamClient()->GetISteamUserStats( hSteamUser, hSteamPipe, STEAMUSERSTATS_INTERFACE_VERSION ); - if ( !m_pSteamUserStats ) - return false; - - m_pSteamApps = SteamClient()->GetISteamApps( hSteamUser, hSteamPipe, STEAMAPPS_INTERFACE_VERSION ); - if ( !m_pSteamApps ) - return false; - - m_pSteamNetworking = SteamClient()->GetISteamNetworking( hSteamUser, hSteamPipe, STEAMNETWORKING_INTERFACE_VERSION ); - if ( !m_pSteamNetworking ) - return false; - - m_pSteamRemoteStorage = SteamClient()->GetISteamRemoteStorage( hSteamUser, hSteamPipe, STEAMREMOTESTORAGE_INTERFACE_VERSION ); - if ( !m_pSteamRemoteStorage ) - return false; - - m_pSteamScreenshots = SteamClient()->GetISteamScreenshots( hSteamUser, hSteamPipe, STEAMSCREENSHOTS_INTERFACE_VERSION ); - if ( !m_pSteamScreenshots ) - return false; - - m_pSteamHTTP = SteamClient()->GetISteamHTTP( hSteamUser, hSteamPipe, STEAMHTTP_INTERFACE_VERSION ); - if ( !m_pSteamHTTP ) - return false; - - m_pSteamUnifiedMessages = SteamClient()->GetISteamUnifiedMessages( hSteamUser, hSteamPipe, STEAMUNIFIEDMESSAGES_INTERFACE_VERSION ); - if ( !m_pSteamUnifiedMessages ) - return false; - - m_pController = SteamClient()->GetISteamController( hSteamUser, hSteamPipe, STEAMCONTROLLER_INTERFACE_VERSION ); - if ( !m_pController ) - return false; - - m_pSteamUGC = SteamClient()->GetISteamUGC( hSteamUser, hSteamPipe, STEAMUGC_INTERFACE_VERSION ); - if ( !m_pSteamUGC ) - return false; - - m_pSteamAppList = SteamClient()->GetISteamAppList( hSteamUser, hSteamPipe, STEAMAPPLIST_INTERFACE_VERSION ); - if ( !m_pSteamAppList ) - return false; - - m_pSteamMusic = SteamClient()->GetISteamMusic( hSteamUser, hSteamPipe, STEAMMUSIC_INTERFACE_VERSION ); - if ( !m_pSteamMusic ) - { - return false; - } - - m_pSteamMusicRemote = SteamClient()->GetISteamMusicRemote( hSteamUser, hSteamPipe, STEAMMUSICREMOTE_INTERFACE_VERSION ); - if ( !m_pSteamMusicRemote ) - { - return false; - } - - m_pSteamHTMLSurface = SteamClient()->GetISteamHTMLSurface( hSteamUser, hSteamPipe, STEAMHTMLSURFACE_INTERFACE_VERSION ); - if ( !m_pSteamHTMLSurface ) - { - return false; - } - - m_pSteamInventory = SteamClient()->GetISteamInventory( hSteamUser, hSteamPipe, STEAMINVENTORY_INTERFACE_VERSION ); - if ( !m_pSteamInventory ) - { - return false; - } - - m_pSteamVideo = SteamClient()->GetISteamVideo( hSteamUser, hSteamPipe, STEAMVIDEO_INTERFACE_VERSION ); - if ( !m_pSteamVideo ) - { - return false; - } - - return true; -} - -#endif // VERSION_SAFE_STEAM_API_INTERFACES - -#if defined(USE_BREAKPAD_HANDLER) || defined(STEAM_API_EXPORTS) -// this should be called before the game initialized the steam APIs -// pchDate should be of the format "Mmm dd yyyy" (such as from the under under DATE under under macro ) -// pchTime should be of the format "hh:mm:ss" (such as from the under under TIME under under macro ) -// bFullMemoryDumps (Win32 only) -- writes out a uuid-full.dmp in the client/dumps folder -// pvContext-- can be NULL, will be the void * context passed into m_pfnPreMinidumpCallback -// PFNPreMinidumpCallback m_pfnPreMinidumpCallback -- optional callback which occurs just before a .dmp file is written during a crash. Applications can hook this to allow adding additional information into the .dmp comment stream. -S_API void S_CALLTYPE SteamAPI_UseBreakpadCrashHandler( char const *pchVersion, char const *pchDate, char const *pchTime, bool bFullMemoryDumps, void *pvContext, PFNPreMinidumpCallback m_pfnPreMinidumpCallback ); -S_API void S_CALLTYPE SteamAPI_SetBreakpadAppID( uint32 unAppID ); +#if defined( VERSION_SAFE_STEAM_API_INTERFACES ) +// backwards compat with older SDKs +S_API bool S_CALLTYPE SteamAPI_InitSafe(); #endif +#include "steam_api_internal.h" + #endif // STEAM_API_H diff --git a/public/steam/steam_api.json b/public/steam/steam_api.json index e71b22d..4eef47f 100644 --- a/public/steam/steam_api.json +++ b/public/steam/steam_api.json @@ -37,9 +37,7 @@ ,{"typedef": "HSteamPipe","type": "int32"} ,{"typedef": "HSteamUser","type": "int32"} ,{"typedef": "SteamAPIWarningMessageHook_t","type": "void (*)(int, const char *) __attribute__((cdecl))"} -,{"typedef": "SteamAPI_PostAPIResultInProcess_t","type": "void (*)(SteamAPICall_t, void *, uint32, int)"} ,{"typedef": "SteamAPI_CheckCallbackRegistered_t","type": "uint32 (*)(int)"} -,{"typedef": "HSteamCall","type": "int32"} ,{"typedef": "FriendsGroupID_t","type": "int16"} ,{"typedef": "SteamAPIWarningMessageHook_t","type": "void (*)(int, const char *) __attribute__((cdecl))"} ,{"typedef": "HServerListRequest","type": "void *"} @@ -54,6 +52,22 @@ ,{"typedef": "SNetSocket_t","type": "uint32"} ,{"typedef": "SNetListenSocket_t","type": "uint32"} ,{"typedef": "ScreenshotHandle","type": "uint32"} +,{"typedef": "PlaybackStatusHasChanged_t::SteamCallback_t","type": "struct PlaybackStatusHasChanged_t"} +,{"typedef": "VolumeHasChanged_t::SteamCallback_t","type": "struct VolumeHasChanged_t"} +,{"typedef": "MusicPlayerRemoteWillActivate_t::SteamCallback_t","type": "struct MusicPlayerRemoteWillActivate_t"} +,{"typedef": "MusicPlayerRemoteWillDeactivate_t::SteamCallback_t","type": "struct MusicPlayerRemoteWillDeactivate_t"} +,{"typedef": "MusicPlayerRemoteToFront_t::SteamCallback_t","type": "struct MusicPlayerRemoteToFront_t"} +,{"typedef": "MusicPlayerWillQuit_t::SteamCallback_t","type": "struct MusicPlayerWillQuit_t"} +,{"typedef": "MusicPlayerWantsPlay_t::SteamCallback_t","type": "struct MusicPlayerWantsPlay_t"} +,{"typedef": "MusicPlayerWantsPause_t::SteamCallback_t","type": "struct MusicPlayerWantsPause_t"} +,{"typedef": "MusicPlayerWantsPlayPrevious_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayPrevious_t"} +,{"typedef": "MusicPlayerWantsPlayNext_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayNext_t"} +,{"typedef": "MusicPlayerWantsShuffled_t::SteamCallback_t","type": "struct MusicPlayerWantsShuffled_t"} +,{"typedef": "MusicPlayerWantsLooped_t::SteamCallback_t","type": "struct MusicPlayerWantsLooped_t"} +,{"typedef": "MusicPlayerWantsVolume_t::SteamCallback_t","type": "struct MusicPlayerWantsVolume_t"} +,{"typedef": "MusicPlayerSelectsQueueEntry_t::SteamCallback_t","type": "struct MusicPlayerSelectsQueueEntry_t"} +,{"typedef": "MusicPlayerSelectsPlaylistEntry_t::SteamCallback_t","type": "struct MusicPlayerSelectsPlaylistEntry_t"} +,{"typedef": "MusicPlayerWantsPlayingRepeatStatus_t::SteamCallback_t","type": "struct MusicPlayerWantsPlayingRepeatStatus_t"} ,{"typedef": "HTTPRequestHandle","type": "uint32"} ,{"typedef": "HTTPCookieContainerHandle","type": "uint32"} ,{"typedef": "ClientUnifiedMessageHandle","type": "uint64"} @@ -63,10 +77,37 @@ ,{"typedef": "ControllerAnalogActionHandle_t","type": "uint64"} ,{"typedef": "UGCQueryHandle_t","type": "uint64"} ,{"typedef": "UGCUpdateHandle_t","type": "uint64"} +,{"typedef": "SteamAppInstalled_t::SteamCallback_t","type": "struct SteamAppInstalled_t"} +,{"typedef": "SteamAppUninstalled_t::SteamCallback_t","type": "struct SteamAppUninstalled_t"} ,{"typedef": "HHTMLBrowser","type": "uint32"} +,{"typedef": "HTML_BrowserReady_t::SteamCallback_t","type": "struct HTML_BrowserReady_t"} +,{"typedef": "HTML_NeedsPaint_t::SteamCallback_t","type": "struct HTML_NeedsPaint_t"} +,{"typedef": "HTML_StartRequest_t::SteamCallback_t","type": "struct HTML_StartRequest_t"} +,{"typedef": "HTML_CloseBrowser_t::SteamCallback_t","type": "struct HTML_CloseBrowser_t"} +,{"typedef": "HTML_URLChanged_t::SteamCallback_t","type": "struct HTML_URLChanged_t"} +,{"typedef": "HTML_FinishedRequest_t::SteamCallback_t","type": "struct HTML_FinishedRequest_t"} +,{"typedef": "HTML_OpenLinkInNewTab_t::SteamCallback_t","type": "struct HTML_OpenLinkInNewTab_t"} +,{"typedef": "HTML_ChangedTitle_t::SteamCallback_t","type": "struct HTML_ChangedTitle_t"} +,{"typedef": "HTML_SearchResults_t::SteamCallback_t","type": "struct HTML_SearchResults_t"} +,{"typedef": "HTML_CanGoBackAndForward_t::SteamCallback_t","type": "struct HTML_CanGoBackAndForward_t"} +,{"typedef": "HTML_HorizontalScroll_t::SteamCallback_t","type": "struct HTML_HorizontalScroll_t"} +,{"typedef": "HTML_VerticalScroll_t::SteamCallback_t","type": "struct HTML_VerticalScroll_t"} +,{"typedef": "HTML_LinkAtPosition_t::SteamCallback_t","type": "struct HTML_LinkAtPosition_t"} +,{"typedef": "HTML_JSAlert_t::SteamCallback_t","type": "struct HTML_JSAlert_t"} +,{"typedef": "HTML_JSConfirm_t::SteamCallback_t","type": "struct HTML_JSConfirm_t"} +,{"typedef": "HTML_FileOpenDialog_t::SteamCallback_t","type": "struct HTML_FileOpenDialog_t"} +,{"typedef": "HTML_NewWindow_t::SteamCallback_t","type": "struct HTML_NewWindow_t"} +,{"typedef": "HTML_SetCursor_t::SteamCallback_t","type": "struct HTML_SetCursor_t"} +,{"typedef": "HTML_StatusText_t::SteamCallback_t","type": "struct HTML_StatusText_t"} +,{"typedef": "HTML_ShowToolTip_t::SteamCallback_t","type": "struct HTML_ShowToolTip_t"} +,{"typedef": "HTML_UpdateToolTip_t::SteamCallback_t","type": "struct HTML_UpdateToolTip_t"} +,{"typedef": "HTML_HideToolTip_t::SteamCallback_t","type": "struct HTML_HideToolTip_t"} ,{"typedef": "SteamItemInstanceID_t","type": "uint64"} ,{"typedef": "SteamItemDef_t","type": "int32"} ,{"typedef": "SteamInventoryResult_t","type": "int32"} +,{"typedef": "BroadcastUploadStart_t::SteamCallback_t","type": "struct BroadcastUploadStart_t"} +,{"typedef": "BroadcastUploadStop_t::SteamCallback_t","type": "struct BroadcastUploadStop_t"} +,{"typedef": "GetVideoURLResult_t::SteamCallback_t","type": "struct GetVideoURLResult_t"} ,{"typedef": "CCallResult::func_t","type": "void (T::*)(P *, _Bool)"} ,{"typedef": "CCallback::func_t","type": "void (T::*)(P *)"} ], @@ -183,6 +224,7 @@ ,{"name": "k_EResultGSLTDenied","value": "102"} ,{"name": "k_EResultGSOwnerDenied","value": "103"} ,{"name": "k_EResultInvalidItemType","value": "104"} + ,{"name": "k_EResultIPBanned","value": "105"} ]} , {"enumname": "EVoiceResult","values": [ {"name": "k_EVoiceResultOK","value": "0"} @@ -279,6 +321,7 @@ ,{"name": "k_EAppOwnershipFlags_AutoGrant","value": "16384"} ,{"name": "k_EAppOwnershipFlags_PendingGift","value": "32768"} ,{"name": "k_EAppOwnershipFlags_RentalNotActivated","value": "65536"} + ,{"name": "k_EAppOwnershipFlags_Rental","value": "131072"} ]} , {"enumname": "EAppType","values": [ {"name": "k_EAppType_Invalid","value": "0"} @@ -319,8 +362,6 @@ ,{"name": "k_EChatEntryTypeWasBanned","value": "9"} ,{"name": "k_EChatEntryTypeDisconnected","value": "10"} ,{"name": "k_EChatEntryTypeHistoricalChat","value": "11"} - ,{"name": "k_EChatEntryTypeReserved1","value": "12"} - ,{"name": "k_EChatEntryTypeReserved2","value": "13"} ,{"name": "k_EChatEntryTypeLinkBlocked","value": "14"} ]} , {"enumname": "EChatRoomEnterResponse","values": [ @@ -390,6 +431,17 @@ ,{"name": "k_ELaunchOptionType_OpenVROverlay","value": "14"} ,{"name": "k_ELaunchOptionType_Dialog","value": "1000"} ]} +, {"enumname": "EVRHMDType","values": [ + {"name": "k_eEVRHMDType_Unknown","value": "0"} + ,{"name": "k_eEVRHMDType_HTC_Dev","value": "1"} + ,{"name": "k_eEVRHMDType_HTC_VivePre","value": "2"} + ,{"name": "k_eEVRHMDType_HTC_Vive","value": "3"} + ,{"name": "k_eEVRHMDType_HTC_Unknown","value": "20"} + ,{"name": "k_eEVRHMDType_Oculus_DK1","value": "21"} + ,{"name": "k_eEVRHMDType_Oculus_DK2","value": "22"} + ,{"name": "k_eEVRHMDType_Oculus_Rift","value": "23"} + ,{"name": "k_eEVRHMDType_Oculus_Unknown","value": "40"} +]} , {"enumname": "CGameID::EGameIDType","values": [ {"name": "k_EGameIDTypeApp","value": "0"} ,{"name": "k_EGameIDTypeGameMod","value": "1"} @@ -662,6 +714,7 @@ ,{"name": "k_EHTTPMethodPUT","value": "4"} ,{"name": "k_EHTTPMethodDELETE","value": "5"} ,{"name": "k_EHTTPMethodOPTIONS","value": "6"} + ,{"name": "k_EHTTPMethodPATCH","value": "7"} ]} , {"enumname": "EHTTPStatusCode","values": [ {"name": "k_EHTTPStatusCodeInvalid","value": "0"} @@ -860,6 +913,14 @@ ,{"name": "k_EItemStatistic_NumUniqueWebsiteViews","value": "6"} ,{"name": "k_EItemStatistic_ReportScore","value": "7"} ]} +, {"enumname": "EItemPreviewType","values": [ + {"name": "k_EItemPreviewType_Image","value": "0"} + ,{"name": "k_EItemPreviewType_YouTubeVideo","value": "1"} + ,{"name": "k_EItemPreviewType_Sketchfab","value": "2"} + ,{"name": "k_EItemPreviewType_EnvironmentMap_HorizontalCross","value": "3"} + ,{"name": "k_EItemPreviewType_EnvironmentMap_LatLong","value": "4"} + ,{"name": "k_EItemPreviewType_ReservedMax","value": "255"} +]} , {"enumname": "ISteamHTMLSurface::EHTMLMouseButton","values": [ {"name": "eHTMLMouseButton_Left","value": "0"} ,{"name": "eHTMLMouseButton_Right","value": "1"} @@ -1006,9 +1067,9 @@ ,{ "constname": "k_iClientVRCallbacks","consttype": "int", "constval": "4200"} ,{ - "constname": "k_iClientReservedCallbacks","consttype": "int", "constval": "4300"} + "constname": "k_iClientGameNotificationCallbacks","consttype": "int", "constval": "4300"} ,{ - "constname": "k_iSteamReservedCallbacks","consttype": "int", "constval": "4400"} + "constname": "k_iSteamGameNotificationCallbacks","consttype": "int", "constval": "4400"} ,{ "constname": "k_iSteamHTMLSurfaceCallbacks","consttype": "int", "constval": "4500"} ,{ @@ -1170,7 +1231,9 @@ ,{"struct": "LowBatteryPower_t","fields": [ { "fieldname": "m_nMinutesBatteryLeft", "fieldtype": "uint8"}]} ,{"struct": "SteamAPICallCompleted_t","fields": [ -{ "fieldname": "m_hAsyncCall", "fieldtype": "SteamAPICall_t"}]} +{ "fieldname": "m_hAsyncCall", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}, +{ "fieldname": "m_cubParam", "fieldtype": "uint32"}]} ,{"struct": "CheckFileSignature_t","fields": [ { "fieldname": "m_eCheckFileSignature", "fieldtype": "enum ECheckFileSignature"}]} ,{"struct": "GamepadTextInputDismissed_t","fields": [ @@ -1389,7 +1452,7 @@ ,{"struct": "RemoteStoragePublishedFileUpdated_t","fields": [ { "fieldname": "m_nPublishedFileId", "fieldtype": "PublishedFileId_t"}, { "fieldname": "m_nAppID", "fieldtype": "AppId_t"}, -{ "fieldname": "m_hFile", "fieldtype": "UGCHandle_t"}]} +{ "fieldname": "m_ulUnused", "fieldtype": "uint64"}]} ,{"struct": "RemoteStorageFileWriteAsyncComplete_t","fields": [ { "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} ,{"struct": "RemoteStorageFileReadAsyncComplete_t","fields": [ @@ -1461,9 +1524,8 @@ ,{"struct": "AppProofOfPurchaseKeyResponse_t","fields": [ { "fieldname": "m_eResult", "fieldtype": "enum EResult"}, { "fieldname": "m_nAppID", "fieldtype": "uint32"}, -{ "fieldname": "m_rgchKey", "fieldtype": "char [64]"}]} -,{"struct": "PublisherOwnedAppDataReady_t","fields": [ -{ "fieldname": "m_eResult", "fieldtype": "enum EResult"}]} +{ "fieldname": "m_cchKeyLength", "fieldtype": "uint32"}, +{ "fieldname": "m_rgchKey", "fieldtype": "char [240]"}]} ,{"struct": "P2PSessionState_t","fields": [ { "fieldname": "m_bConnectionActive", "fieldtype": "uint8"}, { "fieldname": "m_bConnecting", "fieldtype": "uint8"}, @@ -1709,17 +1771,8 @@ { "fieldname": "m_eResult", "fieldtype": "enum EResult"}, { "fieldname": "m_unVideoAppID", "fieldtype": "AppId_t"}, { "fieldname": "m_rgchURL", "fieldtype": "char [256]"}]} -,{"struct": "CCallbackBase","fields": [ -{ "fieldname": "m_nCallbackFlags", "fieldtype": "uint8"}, -{ "fieldname": "m_iCallback", "fieldtype": "int"}]} -,{"struct": "CCallResult","fields": [ -{ "fieldname": "m_hAPICall", "fieldtype": "SteamAPICall_t"}, -{ "fieldname": "m_pObj", "fieldtype": "T *"}, -{ "fieldname": "m_Func", "fieldtype": "func_t"}]} -,{"struct": "CCallback","fields": [ -{ "fieldname": "m_pObj", "fieldtype": "T *"}, -{ "fieldname": "m_Func", "fieldtype": "func_t"}]} ,{"struct": "CSteamAPIContext","fields": [ +{ "fieldname": "m_pSteamClient", "fieldtype": "class ISteamClient *"}, { "fieldname": "m_pSteamUser", "fieldtype": "class ISteamUser *"}, { "fieldname": "m_pSteamFriends", "fieldtype": "class ISteamFriends *"}, { "fieldname": "m_pSteamUtils", "fieldtype": "class ISteamUtils *"}, @@ -1740,6 +1793,16 @@ { "fieldname": "m_pSteamHTMLSurface", "fieldtype": "class ISteamHTMLSurface *"}, { "fieldname": "m_pSteamInventory", "fieldtype": "class ISteamInventory *"}, { "fieldname": "m_pSteamVideo", "fieldtype": "class ISteamVideo *"}]} +,{"struct": "CCallbackBase","fields": [ +{ "fieldname": "m_nCallbackFlags", "fieldtype": "uint8"}, +{ "fieldname": "m_iCallback", "fieldtype": "int"}]} +,{"struct": "CCallResult","fields": [ +{ "fieldname": "m_hAPICall", "fieldtype": "SteamAPICall_t"}, +{ "fieldname": "m_pObj", "fieldtype": "T *"}, +{ "fieldname": "m_Func", "fieldtype": "func_t"}]} +,{"struct": "CCallback","fields": [ +{ "fieldname": "m_pObj", "fieldtype": "T *"}, +{ "fieldname": "m_Func", "fieldtype": "func_t"}]} ,{"struct": "GSClientApprove_t","fields": [ { "fieldname": "m_SteamID", "fieldtype": "class CSteamID"}, { "fieldname": "m_OwnerSteamID", "fieldtype": "class CSteamID"}]} @@ -1968,11 +2031,6 @@ { "paramname": "pchVersion" ,"paramtype": "const char *"} ] } -,{ - "classname": "ISteamClient", - "methodname": "RunFrame", - "returntype": "void" -} ,{ "classname": "ISteamClient", "methodname": "GetIPCCallCount", @@ -2071,30 +2129,6 @@ { "paramname": "pchVersion" ,"paramtype": "const char *"} ] } -,{ - "classname": "ISteamClient", - "methodname": "Set_SteamAPI_CPostAPIResultInProcess", - "returntype": "void", - "params": [ -{ "paramname": "func" ,"paramtype": "SteamAPI_PostAPIResultInProcess_t"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "Remove_SteamAPI_CPostAPIResultInProcess", - "returntype": "void", - "params": [ -{ "paramname": "func" ,"paramtype": "SteamAPI_PostAPIResultInProcess_t"} - ] -} -,{ - "classname": "ISteamClient", - "methodname": "Set_SteamAPI_CCheckCallbackRegisteredInProcess", - "returntype": "void", - "params": [ -{ "paramname": "func" ,"paramtype": "SteamAPI_CheckCallbackRegistered_t"} - ] -} ,{ "classname": "ISteamClient", "methodname": "GetISteamInventory", @@ -2326,6 +2360,16 @@ { "paramname": "pchRedirectURL" ,"paramtype": "const char *"} ] } +,{ + "classname": "ISteamUser", + "methodname": "BIsPhoneVerified", + "returntype": "bool" +} +,{ + "classname": "ISteamUser", + "methodname": "BIsTwoFactorEnabled", + "returntype": "bool" +} ,{ "classname": "ISteamFriends", "methodname": "GetPersonaName", @@ -3000,11 +3044,6 @@ { "paramname": "pbFailed" ,"paramtype": "bool *"} ] } -,{ - "classname": "ISteamUtils", - "methodname": "RunFrame", - "returntype": "void" -} ,{ "classname": "ISteamUtils", "methodname": "GetIPCCallCount", @@ -3081,6 +3120,16 @@ { "paramname": "nVerticalInset" ,"paramtype": "int"} ] } +,{ + "classname": "ISteamUtils", + "methodname": "IsSteamInBigPictureMode", + "returntype": "bool" +} +,{ + "classname": "ISteamUtils", + "methodname": "StartVRDashboard", + "returntype": "void" +} ,{ "classname": "ISteamMatchmaking", "methodname": "GetFavoriteGameCount", @@ -4717,18 +4766,9 @@ } ,{ "classname": "ISteamApps", - "methodname": "RequestPublisherOwnedAppData", "callback": "PublisherOwnedAppDataReady_t", + "methodname": "RequestAllProofOfPurchaseKeys", "returntype": "void" } -,{ - "classname": "ISteamApps", - "methodname": "GetPublisherOwnedAppData", - "returntype": "uint32", - "params": [ -{ "paramname": "pubBuffer" ,"paramtype": "unsigned char *"}, -{ "paramname": "unMaxBytes" ,"paramtype": "uint32"} - ] -} ,{ "classname": "ISteamNetworking", "methodname": "SendP2PPacket", @@ -5829,7 +5869,9 @@ { "paramname": "previewIndex" ,"paramtype": "uint32"}, { "paramname": "pchURLOrVideoID" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, { "paramname": "cchURLSize" ,"paramtype": "uint32"}, -{ "paramname": "pbIsImage" ,"paramtype": "bool *"} +{ "paramname": "pchOriginalFileName" ,"out_string_count": "cchURLSize" ,"paramtype": "char *"}, +{ "paramname": "cchOriginalFileNameSize" ,"paramtype": "uint32"}, +{ "paramname": "pPreviewType" ,"paramtype": "EItemPreviewType *"} ] } ,{ @@ -6117,6 +6159,54 @@ { "paramname": "pchValue" ,"paramtype": "const char *"} ] } +,{ + "classname": "ISteamUGC", + "methodname": "AddItemPreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"}, +{ "paramname": "type" ,"paramtype": "EItemPreviewType"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "AddItemPreviewVideo", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "pszVideoID" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UpdateItemPreviewFile", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pszPreviewFile" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "UpdateItemPreviewVideo", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"}, +{ "paramname": "pszVideoID" ,"paramtype": "const char *"} + ] +} +,{ + "classname": "ISteamUGC", + "methodname": "RemoveItemPreview", + "returntype": "bool", + "params": [ +{ "paramname": "handle" ,"paramtype": "UGCUpdateHandle_t"}, +{ "paramname": "index" ,"paramtype": "uint32"} + ] +} ,{ "classname": "ISteamUGC", "methodname": "SubmitItemUpdate", "callresult": "SubmitItemUpdateResult_t", diff --git a/public/steam/steam_api_flat.h b/public/steam/steam_api_flat.h index 1363b63..539a9ee 100644 --- a/public/steam/steam_api_flat.h +++ b/public/steam/steam_api_flat.h @@ -46,7 +46,6 @@ typedef void * BREAKPAD_HANDLE; typedef char compile_time_assert_type[1]; typedef int32 HSteamPipe; typedef int32 HSteamUser; -typedef int32 HSteamCall; typedef int16 FriendsGroupID_t; typedef void * HServerListRequest; typedef int HServerQuery; @@ -116,8 +115,8 @@ int const_k_iSteamAppListCallbacks = 3900; int const_k_iSteamMusicCallbacks = 4000; int const_k_iSteamMusicRemoteCallbacks = 4100; int const_k_iClientVRCallbacks = 4200; -int const_k_iClientReservedCallbacks = 4300; -int const_k_iSteamReservedCallbacks = 4400; +int const_k_iClientGameNotificationCallbacks = 4300; +int const_k_iSteamGameNotificationCallbacks = 4400; int const_k_iSteamHTMLSurfaceCallbacks = 4500; int const_k_iClientVideoCallbacks = 4600; int const_k_iClientInventoryCallbacks = 4700; @@ -160,7 +159,6 @@ S_API class ISteamApps * SteamAPI_ISteamClient_GetISteamApps(intptr_t instancePt S_API class ISteamNetworking * SteamAPI_ISteamClient_GetISteamNetworking(intptr_t instancePtr, HSteamUser hSteamUser, HSteamPipe hSteamPipe, const char * pchVersion); S_API class ISteamRemoteStorage * SteamAPI_ISteamClient_GetISteamRemoteStorage(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); S_API class ISteamScreenshots * SteamAPI_ISteamClient_GetISteamScreenshots(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API void SteamAPI_ISteamClient_RunFrame(intptr_t instancePtr); S_API uint32 SteamAPI_ISteamClient_GetIPCCallCount(intptr_t instancePtr); S_API void SteamAPI_ISteamClient_SetWarningMessageHook(intptr_t instancePtr, SteamAPIWarningMessageHook_t pFunction); S_API bool SteamAPI_ISteamClient_BShutdownIfAllPipesClosed(intptr_t instancePtr); @@ -172,9 +170,6 @@ S_API class ISteamAppList * SteamAPI_ISteamClient_GetISteamAppList(intptr_t inst S_API class ISteamMusic * SteamAPI_ISteamClient_GetISteamMusic(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); S_API class ISteamMusicRemote * SteamAPI_ISteamClient_GetISteamMusicRemote(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); S_API class ISteamHTMLSurface * SteamAPI_ISteamClient_GetISteamHTMLSurface(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); -S_API void SteamAPI_ISteamClient_Set_SteamAPI_CPostAPIResultInProcess(intptr_t instancePtr, SteamAPI_PostAPIResultInProcess_t func); -S_API void SteamAPI_ISteamClient_Remove_SteamAPI_CPostAPIResultInProcess(intptr_t instancePtr, SteamAPI_PostAPIResultInProcess_t func); -S_API void SteamAPI_ISteamClient_Set_SteamAPI_CCheckCallbackRegisteredInProcess(intptr_t instancePtr, SteamAPI_CheckCallbackRegistered_t func); S_API class ISteamInventory * SteamAPI_ISteamClient_GetISteamInventory(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); S_API class ISteamVideo * SteamAPI_ISteamClient_GetISteamVideo(intptr_t instancePtr, HSteamUser hSteamuser, HSteamPipe hSteamPipe, const char * pchVersion); S_API HSteamUser SteamAPI_ISteamUser_GetHSteamUser(intptr_t instancePtr); @@ -202,6 +197,8 @@ S_API bool SteamAPI_ISteamUser_GetEncryptedAppTicket(intptr_t instancePtr, void S_API int SteamAPI_ISteamUser_GetGameBadgeLevel(intptr_t instancePtr, int nSeries, bool bFoil); S_API int SteamAPI_ISteamUser_GetPlayerSteamLevel(intptr_t instancePtr); S_API SteamAPICall_t SteamAPI_ISteamUser_RequestStoreAuthURL(intptr_t instancePtr, const char * pchRedirectURL); +S_API bool SteamAPI_ISteamUser_BIsPhoneVerified(intptr_t instancePtr); +S_API bool SteamAPI_ISteamUser_BIsTwoFactorEnabled(intptr_t instancePtr); S_API const char * SteamAPI_ISteamFriends_GetPersonaName(intptr_t instancePtr); S_API SteamAPICall_t SteamAPI_ISteamFriends_SetPersonaName(intptr_t instancePtr, const char * pchPersonaName); S_API EPersonaState SteamAPI_ISteamFriends_GetPersonaState(intptr_t instancePtr); @@ -286,7 +283,6 @@ S_API void SteamAPI_ISteamUtils_SetOverlayNotificationPosition(intptr_t instance S_API bool SteamAPI_ISteamUtils_IsAPICallCompleted(intptr_t instancePtr, SteamAPICall_t hSteamAPICall, bool * pbFailed); S_API ESteamAPICallFailure SteamAPI_ISteamUtils_GetAPICallFailureReason(intptr_t instancePtr, SteamAPICall_t hSteamAPICall); S_API bool SteamAPI_ISteamUtils_GetAPICallResult(intptr_t instancePtr, SteamAPICall_t hSteamAPICall, void * pCallback, int cubCallback, int iCallbackExpected, bool * pbFailed); -S_API void SteamAPI_ISteamUtils_RunFrame(intptr_t instancePtr); S_API uint32 SteamAPI_ISteamUtils_GetIPCCallCount(intptr_t instancePtr); S_API void SteamAPI_ISteamUtils_SetWarningMessageHook(intptr_t instancePtr, SteamAPIWarningMessageHook_t pFunction); S_API bool SteamAPI_ISteamUtils_IsOverlayEnabled(intptr_t instancePtr); @@ -298,6 +294,8 @@ S_API bool SteamAPI_ISteamUtils_GetEnteredGamepadTextInput(intptr_t instancePtr, S_API const char * SteamAPI_ISteamUtils_GetSteamUILanguage(intptr_t instancePtr); S_API bool SteamAPI_ISteamUtils_IsSteamRunningInVR(intptr_t instancePtr); S_API void SteamAPI_ISteamUtils_SetOverlayNotificationInset(intptr_t instancePtr, int nHorizontalInset, int nVerticalInset); +S_API bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(intptr_t instancePtr); +S_API void SteamAPI_ISteamUtils_StartVRDashboard(intptr_t instancePtr); S_API int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(intptr_t instancePtr); S_API bool SteamAPI_ISteamMatchmaking_GetFavoriteGame(intptr_t instancePtr, int iGame, AppId_t * pnAppID, uint32 * pnIP, uint16 * pnConnPort, uint16 * pnQueryPort, uint32 * punFlags, uint32 * pRTime32LastPlayedOnServer); S_API int SteamAPI_ISteamMatchmaking_AddFavoriteGame(intptr_t instancePtr, AppId_t nAppID, uint32 nIP, uint16 nConnPort, uint16 nQueryPort, uint32 unFlags, uint32 rTime32LastPlayedOnServer); @@ -486,8 +484,7 @@ S_API uint64 SteamAPI_ISteamApps_GetAppOwner(intptr_t instancePtr); S_API const char * SteamAPI_ISteamApps_GetLaunchQueryParam(intptr_t instancePtr, const char * pchKey); S_API bool SteamAPI_ISteamApps_GetDlcDownloadProgress(intptr_t instancePtr, AppId_t nAppID, uint64 * punBytesDownloaded, uint64 * punBytesTotal); S_API int SteamAPI_ISteamApps_GetAppBuildId(intptr_t instancePtr); -S_API void SteamAPI_ISteamApps_RequestPublisherOwnedAppData(intptr_t instancePtr); -S_API uint32 SteamAPI_ISteamApps_GetPublisherOwnedAppData(intptr_t instancePtr, unsigned char * pubBuffer, uint32 unMaxBytes); +S_API void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(intptr_t instancePtr); S_API bool SteamAPI_ISteamNetworking_SendP2PPacket(intptr_t instancePtr, class CSteamID steamIDRemote, const void * pubData, uint32 cubData, EP2PSend eP2PSendType, int nChannel); S_API bool SteamAPI_ISteamNetworking_IsP2PPacketAvailable(intptr_t instancePtr, uint32 * pcubMsgSize, int nChannel); S_API bool SteamAPI_ISteamNetworking_ReadP2PPacket(intptr_t instancePtr, void * pubDest, uint32 cubDest, uint32 * pcubMsgSize, class CSteamID * psteamIDRemote, int nChannel); @@ -615,7 +612,7 @@ S_API bool SteamAPI_ISteamUGC_GetQueryUGCMetadata(intptr_t instancePtr, UGCQuery S_API bool SteamAPI_ISteamUGC_GetQueryUGCChildren(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, PublishedFileId_t * pvecPublishedFileID, uint32 cMaxEntries); S_API bool SteamAPI_ISteamUGC_GetQueryUGCStatistic(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, EItemStatistic eStatType, uint32 * pStatValue); S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index); -S_API bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, char * pchURLOrVideoID, uint32 cchURLSize, bool * pbIsImage); +S_API bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, uint32 previewIndex, char * pchURLOrVideoID, uint32 cchURLSize, char * pchOriginalFileName, uint32 cchOriginalFileNameSize, EItemPreviewType * pPreviewType); S_API uint32 SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index); S_API bool SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag(intptr_t instancePtr, UGCQueryHandle_t handle, uint32 index, uint32 keyValueTagIndex, char * pchKey, uint32 cchKeySize, char * pchValue, uint32 cchValueSize); S_API bool SteamAPI_ISteamUGC_ReleaseQueryUGCRequest(intptr_t instancePtr, UGCQueryHandle_t handle); @@ -647,6 +644,11 @@ S_API bool SteamAPI_ISteamUGC_SetItemContent(intptr_t instancePtr, UGCUpdateHand S_API bool SteamAPI_ISteamUGC_SetItemPreview(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszPreviewFile); S_API bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchKey); S_API bool SteamAPI_ISteamUGC_AddItemKeyValueTag(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchKey, const char * pchValue); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewFile(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszPreviewFile, EItemPreviewType type); +S_API bool SteamAPI_ISteamUGC_AddItemPreviewVideo(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pszVideoID); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewFile(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index, const char * pszPreviewFile); +S_API bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index, const char * pszVideoID); +S_API bool SteamAPI_ISteamUGC_RemoveItemPreview(intptr_t instancePtr, UGCUpdateHandle_t handle, uint32 index); S_API SteamAPICall_t SteamAPI_ISteamUGC_SubmitItemUpdate(intptr_t instancePtr, UGCUpdateHandle_t handle, const char * pchChangeNote); S_API EItemUpdateStatus SteamAPI_ISteamUGC_GetItemUpdateProgress(intptr_t instancePtr, UGCUpdateHandle_t handle, uint64 * punBytesProcessed, uint64 * punBytesTotal); S_API SteamAPICall_t SteamAPI_ISteamUGC_SetUserItemVote(intptr_t instancePtr, PublishedFileId_t nPublishedFileID, bool bVoteUp); diff --git a/public/steam/steam_api_internal.h b/public/steam/steam_api_internal.h new file mode 100644 index 0000000..a12fca6 --- /dev/null +++ b/public/steam/steam_api_internal.h @@ -0,0 +1,325 @@ +//====== Copyright 1996-2015, Valve Corporation, All rights reserved. ======= +// +// Purpose: Internal private Steamworks API declarations and definitions +// +//============================================================================= + +#ifndef STEAM_API_INTERNAL_H +#define STEAM_API_INTERNAL_H + +S_API HSteamUser SteamAPI_GetHSteamUser(); +S_API bool S_CALLTYPE SteamInternal_Init(); +S_API void * S_CALLTYPE SteamInternal_CreateInterface( const char *ver ); + +#if !defined( STEAM_API_EXPORTS ) + +#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) +inline CSteamAPIContext& SteamInternal_ModuleContext() +{ + // NOTE: declaring "static CSteamAPIConext" creates a large function + // which queries the initialization status of the object. We know that + // it is pointer-aligned and fully memset with zeros, so just alias a + // static buffer of the appropriate size and call it a CSteamAPIContext. + static void* ctx[ sizeof(CSteamAPIContext)/sizeof(void*) ]; + return *(CSteamAPIContext*)ctx; +} +#define _STEAMINTERNAL_ACCESSOR_BODY( AccessFunc ) \ + if ( !SteamAPI_GetHSteamPipe() ) return 0; \ + CSteamAPIContext &ctx = SteamInternal_ModuleContext(); \ + if ( !ctx.AccessFunc() ) ctx.Init(); \ + return ctx.AccessFunc(); +inline ISteamClient *SteamClient() { _STEAMINTERNAL_ACCESSOR_BODY( SteamClient ) } +inline ISteamUser *SteamUser() { _STEAMINTERNAL_ACCESSOR_BODY( SteamUser ) } +inline ISteamFriends *SteamFriends() { _STEAMINTERNAL_ACCESSOR_BODY( SteamFriends ) } +inline ISteamUtils *SteamUtils() { _STEAMINTERNAL_ACCESSOR_BODY( SteamUtils ) } +inline ISteamMatchmaking *SteamMatchmaking() { _STEAMINTERNAL_ACCESSOR_BODY( SteamMatchmaking ) } +inline ISteamUserStats *SteamUserStats() { _STEAMINTERNAL_ACCESSOR_BODY( SteamUserStats ) } +inline ISteamApps *SteamApps() { _STEAMINTERNAL_ACCESSOR_BODY( SteamApps ) } +inline ISteamMatchmakingServers *SteamMatchmakingServers() { _STEAMINTERNAL_ACCESSOR_BODY( SteamMatchmakingServers ) } +inline ISteamNetworking *SteamNetworking() { _STEAMINTERNAL_ACCESSOR_BODY( SteamNetworking ) } +inline ISteamRemoteStorage *SteamRemoteStorage() { _STEAMINTERNAL_ACCESSOR_BODY( SteamRemoteStorage ) } +inline ISteamScreenshots *SteamScreenshots() { _STEAMINTERNAL_ACCESSOR_BODY( SteamScreenshots ) } +inline ISteamHTTP *SteamHTTP() { _STEAMINTERNAL_ACCESSOR_BODY( SteamHTTP ) } +inline ISteamUnifiedMessages *SteamUnifiedMessages() { _STEAMINTERNAL_ACCESSOR_BODY( SteamUnifiedMessages ) } +inline ISteamController *SteamController() { _STEAMINTERNAL_ACCESSOR_BODY( SteamController ) } +inline ISteamUGC *SteamUGC() { _STEAMINTERNAL_ACCESSOR_BODY( SteamUGC ) } +inline ISteamAppList *SteamAppList() { _STEAMINTERNAL_ACCESSOR_BODY( SteamAppList ) } +inline ISteamMusic *SteamMusic() { _STEAMINTERNAL_ACCESSOR_BODY( SteamMusic ) } +inline ISteamMusicRemote *SteamMusicRemote() { _STEAMINTERNAL_ACCESSOR_BODY( SteamMusicRemote ) } +inline ISteamHTMLSurface *SteamHTMLSurface() { _STEAMINTERNAL_ACCESSOR_BODY( SteamHTMLSurface ) } +inline ISteamInventory *SteamInventory() { _STEAMINTERNAL_ACCESSOR_BODY( SteamInventory ) } +inline ISteamVideo *SteamVideo() { _STEAMINTERNAL_ACCESSOR_BODY( SteamVideo ) } +#undef _STEAMINTERNAL_ACCESSOR_BODY +#endif // !defined( VERSION_SAFE_STEAM_API_INTERFACES ) + +#endif // !defined( STEAM_API_EXPORTS ) + + +inline void CSteamAPIContext::Clear() +{ + m_pSteamClient = NULL; + m_pSteamUser = NULL; + m_pSteamFriends = NULL; + m_pSteamUtils = NULL; + m_pSteamMatchmaking = NULL; + m_pSteamUserStats = NULL; + m_pSteamApps = NULL; + m_pSteamMatchmakingServers = NULL; + m_pSteamNetworking = NULL; + m_pSteamRemoteStorage = NULL; + m_pSteamHTTP = NULL; + m_pSteamScreenshots = NULL; + m_pSteamMusic = NULL; + m_pSteamUnifiedMessages = NULL; + m_pController = NULL; + m_pSteamUGC = NULL; + m_pSteamAppList = NULL; + m_pSteamMusic = NULL; + m_pSteamMusicRemote = NULL; + m_pSteamHTMLSurface = NULL; + m_pSteamInventory = NULL; +} + + +// This function must be declared inline in the header so the module using steam_api.dll gets the version names they want. +inline bool CSteamAPIContext::Init() +{ + HSteamUser hSteamUser = SteamAPI_GetHSteamUser(); + HSteamPipe hSteamPipe = SteamAPI_GetHSteamPipe(); + if ( !hSteamPipe ) + return false; + + m_pSteamClient = (ISteamClient*) SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ); + if ( !m_pSteamClient ) + return false; + + m_pSteamUser = m_pSteamClient->GetISteamUser( hSteamUser, hSteamPipe, STEAMUSER_INTERFACE_VERSION ); + if ( !m_pSteamUser ) + return false; + + m_pSteamFriends = m_pSteamClient->GetISteamFriends( hSteamUser, hSteamPipe, STEAMFRIENDS_INTERFACE_VERSION ); + if ( !m_pSteamFriends ) + return false; + + m_pSteamUtils = m_pSteamClient->GetISteamUtils( hSteamPipe, STEAMUTILS_INTERFACE_VERSION ); + if ( !m_pSteamUtils ) + return false; + + m_pSteamMatchmaking = m_pSteamClient->GetISteamMatchmaking( hSteamUser, hSteamPipe, STEAMMATCHMAKING_INTERFACE_VERSION ); + if ( !m_pSteamMatchmaking ) + return false; + + m_pSteamMatchmakingServers = m_pSteamClient->GetISteamMatchmakingServers( hSteamUser, hSteamPipe, STEAMMATCHMAKINGSERVERS_INTERFACE_VERSION ); + if ( !m_pSteamMatchmakingServers ) + return false; + + m_pSteamUserStats = m_pSteamClient->GetISteamUserStats( hSteamUser, hSteamPipe, STEAMUSERSTATS_INTERFACE_VERSION ); + if ( !m_pSteamUserStats ) + return false; + + m_pSteamApps = m_pSteamClient->GetISteamApps( hSteamUser, hSteamPipe, STEAMAPPS_INTERFACE_VERSION ); + if ( !m_pSteamApps ) + return false; + + m_pSteamNetworking = m_pSteamClient->GetISteamNetworking( hSteamUser, hSteamPipe, STEAMNETWORKING_INTERFACE_VERSION ); + if ( !m_pSteamNetworking ) + return false; + + m_pSteamRemoteStorage = m_pSteamClient->GetISteamRemoteStorage( hSteamUser, hSteamPipe, STEAMREMOTESTORAGE_INTERFACE_VERSION ); + if ( !m_pSteamRemoteStorage ) + return false; + + m_pSteamScreenshots = m_pSteamClient->GetISteamScreenshots( hSteamUser, hSteamPipe, STEAMSCREENSHOTS_INTERFACE_VERSION ); + if ( !m_pSteamScreenshots ) + return false; + + m_pSteamHTTP = m_pSteamClient->GetISteamHTTP( hSteamUser, hSteamPipe, STEAMHTTP_INTERFACE_VERSION ); + if ( !m_pSteamHTTP ) + return false; + + m_pSteamUnifiedMessages = m_pSteamClient->GetISteamUnifiedMessages( hSteamUser, hSteamPipe, STEAMUNIFIEDMESSAGES_INTERFACE_VERSION ); + if ( !m_pSteamUnifiedMessages ) + return false; + + m_pController = m_pSteamClient->GetISteamController( hSteamUser, hSteamPipe, STEAMCONTROLLER_INTERFACE_VERSION ); + if ( !m_pController ) + return false; + + m_pSteamUGC = m_pSteamClient->GetISteamUGC( hSteamUser, hSteamPipe, STEAMUGC_INTERFACE_VERSION ); + if ( !m_pSteamUGC ) + return false; + + m_pSteamAppList = m_pSteamClient->GetISteamAppList( hSteamUser, hSteamPipe, STEAMAPPLIST_INTERFACE_VERSION ); + if ( !m_pSteamAppList ) + return false; + + m_pSteamMusic = m_pSteamClient->GetISteamMusic( hSteamUser, hSteamPipe, STEAMMUSIC_INTERFACE_VERSION ); + if ( !m_pSteamMusic ) + return false; + + m_pSteamMusicRemote = m_pSteamClient->GetISteamMusicRemote( hSteamUser, hSteamPipe, STEAMMUSICREMOTE_INTERFACE_VERSION ); + if ( !m_pSteamMusicRemote ) + return false; + + m_pSteamHTMLSurface = m_pSteamClient->GetISteamHTMLSurface( hSteamUser, hSteamPipe, STEAMHTMLSURFACE_INTERFACE_VERSION ); + if ( !m_pSteamHTMLSurface ) + return false; + + m_pSteamInventory = m_pSteamClient->GetISteamInventory( hSteamUser, hSteamPipe, STEAMINVENTORY_INTERFACE_VERSION ); + if ( !m_pSteamInventory ) + return false; + + m_pSteamVideo = m_pSteamClient->GetISteamVideo( hSteamUser, hSteamPipe, STEAMVIDEO_INTERFACE_VERSION ); + if ( !m_pSteamVideo ) + return false; + + return true; +} + + +//----------------------------------------------------------------------------- +// The following macros are implementation details, not intended for public use +//----------------------------------------------------------------------------- +#define _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) +#define _STEAM_CALLBACK_HELPER( _1, _2, SELECTED, ... ) _STEAM_CALLBACK_##SELECTED +#define _STEAM_CALLBACK_SELECT( X, Y ) _STEAM_CALLBACK_HELPER X Y +#define _STEAM_CALLBACK_3( extra_code, thisclass, func, param ) \ + struct CCallbackInternal_ ## func : private CCallbackImpl< sizeof( param ) > { \ + CCallbackInternal_ ## func () { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ + CCallbackInternal_ ## func ( const CCallbackInternal_ ## func & ) { extra_code SteamAPI_RegisterCallback( this, param::k_iCallback ); } \ + CCallbackInternal_ ## func & operator=( const CCallbackInternal_ ## func & ) { return *this; } \ + private: virtual void Run( void *pvParam ) { _STEAM_CALLBACK_AUTO_HOOK( thisclass, func, param ) \ + thisclass *pOuter = reinterpret_cast( reinterpret_cast(this) - offsetof( thisclass, m_steamcallback_ ## func ) ); \ + pOuter->func( reinterpret_cast( pvParam ) ); \ + } \ + } m_steamcallback_ ## func ; void func( param *pParam ) +#define _STEAM_CALLBACK_4( _, thisclass, func, param, var ) \ + CCallback< thisclass, param > var; void func( param *pParam ) + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam async call result to a class member function +// template params: T = local class, P = parameter struct +//----------------------------------------------------------------------------- +template< class T, class P > +inline CCallResult::CCallResult() +{ + m_hAPICall = k_uAPICallInvalid; + m_pObj = NULL; + m_Func = NULL; + m_iCallback = P::k_iCallback; +} + +template< class T, class P > +inline void CCallResult::Set( SteamAPICall_t hAPICall, T *p, func_t func ) +{ + if ( m_hAPICall ) + SteamAPI_UnregisterCallResult( this, m_hAPICall ); + + m_hAPICall = hAPICall; + m_pObj = p; + m_Func = func; + + if ( hAPICall ) + SteamAPI_RegisterCallResult( this, hAPICall ); +} + +template< class T, class P > +inline bool CCallResult::IsActive() const +{ + return (m_hAPICall != k_uAPICallInvalid); +} + +template< class T, class P > +inline void CCallResult::Cancel() +{ + if ( m_hAPICall != k_uAPICallInvalid ) + { + SteamAPI_UnregisterCallResult( this, m_hAPICall ); + m_hAPICall = k_uAPICallInvalid; + } + +} + +template< class T, class P > +inline CCallResult::~CCallResult() +{ + Cancel(); +} + +template< class T, class P > +inline void CCallResult::Run( void *pvParam ) +{ + m_hAPICall = k_uAPICallInvalid; // caller unregisters for us + (m_pObj->*m_Func)((P *)pvParam, false); +} + +template< class T, class P > +inline void CCallResult::Run( void *pvParam, bool bIOFailure, SteamAPICall_t hSteamAPICall ) +{ + if ( hSteamAPICall == m_hAPICall ) + { + m_hAPICall = k_uAPICallInvalid; // caller unregisters for us + (m_pObj->*m_Func)((P *)pvParam, bIOFailure); + } +} + + +//----------------------------------------------------------------------------- +// Purpose: maps a steam callback to a class member function +// template params: T = local class, P = parameter struct, +// bGameserver = listen for gameserver callbacks instead of client callbacks +//----------------------------------------------------------------------------- +template< class T, class P, bool bGameserver > +inline CCallback< T, P, bGameserver >::CCallback( T *pObj, func_t func ) + : m_pObj( NULL ), m_Func( NULL ) +{ + if ( bGameserver ) + { + this->SetGameserverFlag(); + } + Register( pObj, func ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Register( T *pObj, func_t func ) +{ + if ( !pObj || !func ) + return; + + if ( this->m_nCallbackFlags & CCallbackBase::k_ECallbackFlagsRegistered ) + Unregister(); + + m_pObj = pObj; + m_Func = func; + // SteamAPI_RegisterCallback sets k_ECallbackFlagsRegistered + SteamAPI_RegisterCallback( this, P::k_iCallback ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Unregister() +{ + // SteamAPI_UnregisterCallback removes k_ECallbackFlagsRegistered + SteamAPI_UnregisterCallback( this ); +} + +template< class T, class P, bool bGameserver > +inline void CCallback< T, P, bGameserver >::Run( void *pvParam ) +{ + (m_pObj->*m_Func)((P *)pvParam); +} + + +#if defined(USE_BREAKPAD_HANDLER) || defined(STEAM_API_EXPORTS) +// this should be called before the game initialized the steam APIs +// pchDate should be of the format "Mmm dd yyyy" (such as from the __ DATE __ macro ) +// pchTime should be of the format "hh:mm:ss" (such as from the __ TIME __ macro ) +// bFullMemoryDumps (Win32 only) -- writes out a uuid-full.dmp in the client/dumps folder +// pvContext-- can be NULL, will be the void * context passed into m_pfnPreMinidumpCallback +// PFNPreMinidumpCallback m_pfnPreMinidumpCallback -- optional callback which occurs just before a .dmp file is written during a crash. Applications can hook this to allow adding additional information into the .dmp comment stream. +S_API void S_CALLTYPE SteamAPI_UseBreakpadCrashHandler( char const *pchVersion, char const *pchDate, char const *pchTime, bool bFullMemoryDumps, void *pvContext, PFNPreMinidumpCallback m_pfnPreMinidumpCallback ); +S_API void S_CALLTYPE SteamAPI_SetBreakpadAppID( uint32 unAppID ); +#endif + + +#endif // STEAM_API_INTERNAL_H diff --git a/public/steam/steam_api_interop.cs b/public/steam/steam_api_interop.cs index 0863dc8..d15469b 100644 --- a/public/steam/steam_api_interop.cs +++ b/public/steam/steam_api_interop.cs @@ -55,8 +55,6 @@ internal static extern IntPtr SteamAPI_ISteamClient_GetISteamNetworking(IntPtr i internal static extern IntPtr SteamAPI_ISteamClient_GetISteamRemoteStorage(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamScreenshots")] internal static extern IntPtr SteamAPI_ISteamClient_GetISteamScreenshots(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_RunFrame")] -internal static extern void SteamAPI_ISteamClient_RunFrame(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetIPCCallCount")] internal static extern uint SteamAPI_ISteamClient_GetIPCCallCount(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_SetWarningMessageHook")] @@ -79,12 +77,6 @@ internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMusic(IntPtr instan internal static extern IntPtr SteamAPI_ISteamClient_GetISteamMusicRemote(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamHTMLSurface")] internal static extern IntPtr SteamAPI_ISteamClient_GetISteamHTMLSurface(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_Set_SteamAPI_CPostAPIResultInProcess")] -internal static extern void SteamAPI_ISteamClient_Set_SteamAPI_CPostAPIResultInProcess(IntPtr instancePtr, IntPtr func); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_Remove_SteamAPI_CPostAPIResultInProcess")] -internal static extern void SteamAPI_ISteamClient_Remove_SteamAPI_CPostAPIResultInProcess(IntPtr instancePtr, IntPtr func); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_Set_SteamAPI_CCheckCallbackRegisteredInProcess")] -internal static extern void SteamAPI_ISteamClient_Set_SteamAPI_CCheckCallbackRegisteredInProcess(IntPtr instancePtr, IntPtr func); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamInventory")] internal static extern IntPtr SteamAPI_ISteamClient_GetISteamInventory(IntPtr instancePtr, uint hSteamuser, uint hSteamPipe, string pchVersion); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamClient_GetISteamVideo")] @@ -139,6 +131,10 @@ internal static extern int SteamAPI_ISteamUser_GetGameBadgeLevel(IntPtr instance internal static extern int SteamAPI_ISteamUser_GetPlayerSteamLevel(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_RequestStoreAuthURL")] internal static extern ulong SteamAPI_ISteamUser_RequestStoreAuthURL(IntPtr instancePtr, string pchRedirectURL); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsPhoneVerified")] +internal static extern bool SteamAPI_ISteamUser_BIsPhoneVerified(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUser_BIsTwoFactorEnabled")] +internal static extern bool SteamAPI_ISteamUser_BIsTwoFactorEnabled(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_GetPersonaName")] internal static extern IntPtr SteamAPI_ISteamFriends_GetPersonaName(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamFriends_SetPersonaName")] @@ -307,8 +303,6 @@ internal static extern bool SteamAPI_ISteamUtils_IsAPICallCompleted(IntPtr insta internal static extern int SteamAPI_ISteamUtils_GetAPICallFailureReason(IntPtr instancePtr, ulong hSteamAPICall); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetAPICallResult")] internal static extern bool SteamAPI_ISteamUtils_GetAPICallResult(IntPtr instancePtr, ulong hSteamAPICall, IntPtr pCallback, int cubCallback, int iCallbackExpected, ref bool pbFailed); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_RunFrame")] -internal static extern void SteamAPI_ISteamUtils_RunFrame(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_GetIPCCallCount")] internal static extern uint SteamAPI_ISteamUtils_GetIPCCallCount(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetWarningMessageHook")] @@ -331,6 +325,10 @@ internal static extern IntPtr SteamAPI_ISteamUtils_GetSteamUILanguage(IntPtr ins internal static extern bool SteamAPI_ISteamUtils_IsSteamRunningInVR(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_SetOverlayNotificationInset")] internal static extern void SteamAPI_ISteamUtils_SetOverlayNotificationInset(IntPtr instancePtr, int nHorizontalInset, int nVerticalInset); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_IsSteamInBigPictureMode")] +internal static extern bool SteamAPI_ISteamUtils_IsSteamInBigPictureMode(IntPtr instancePtr); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUtils_StartVRDashboard")] +internal static extern void SteamAPI_ISteamUtils_StartVRDashboard(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGameCount")] internal static extern int SteamAPI_ISteamMatchmaking_GetFavoriteGameCount(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamMatchmaking_GetFavoriteGame")] @@ -707,10 +705,8 @@ internal static extern IntPtr SteamAPI_ISteamApps_GetLaunchQueryParam(IntPtr ins internal static extern bool SteamAPI_ISteamApps_GetDlcDownloadProgress(IntPtr instancePtr, uint nAppID, ref ulong punBytesDownloaded, ref ulong punBytesTotal); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetAppBuildId")] internal static extern int SteamAPI_ISteamApps_GetAppBuildId(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_RequestPublisherOwnedAppData")] -internal static extern void SteamAPI_ISteamApps_RequestPublisherOwnedAppData(IntPtr instancePtr); -[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_GetPublisherOwnedAppData")] -internal static extern uint SteamAPI_ISteamApps_GetPublisherOwnedAppData(IntPtr instancePtr, ref byte pubBuffer, uint unMaxBytes); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys")] +internal static extern void SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(IntPtr instancePtr); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_SendP2PPacket")] internal static extern bool SteamAPI_ISteamNetworking_SendP2PPacket(IntPtr instancePtr, ulong steamIDRemote, IntPtr pubData, uint cubData, uint eP2PSendType, int nChannel); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamNetworking_IsP2PPacketAvailable")] @@ -966,7 +962,7 @@ internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCStatistic(IntPtr insta [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews")] internal static extern uint SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(IntPtr instancePtr, ulong handle, uint index); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview")] -internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(IntPtr instancePtr, ulong handle, uint index, uint previewIndex, System.Text.StringBuilder pchURLOrVideoID, uint cchURLSize, ref bool pbIsImage); +internal static extern bool SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(IntPtr instancePtr, ulong handle, uint index, uint previewIndex, System.Text.StringBuilder pchURLOrVideoID, uint cchURLSize, System.Text.StringBuilder pchOriginalFileName, uint cchOriginalFileNameSize, ref uint pPreviewType); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags")] internal static extern uint SteamAPI_ISteamUGC_GetQueryUGCNumKeyValueTags(IntPtr instancePtr, ulong handle, uint index); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetQueryUGCKeyValueTag")] @@ -1029,6 +1025,16 @@ internal static extern bool SteamAPI_ISteamUGC_SetItemPreview(IntPtr instancePtr internal static extern bool SteamAPI_ISteamUGC_RemoveItemKeyValueTags(IntPtr instancePtr, ulong handle, string pchKey); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemKeyValueTag")] internal static extern bool SteamAPI_ISteamUGC_AddItemKeyValueTag(IntPtr instancePtr, ulong handle, string pchKey, string pchValue); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewFile")] +internal static extern bool SteamAPI_ISteamUGC_AddItemPreviewFile(IntPtr instancePtr, ulong handle, string pszPreviewFile, uint type); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_AddItemPreviewVideo")] +internal static extern bool SteamAPI_ISteamUGC_AddItemPreviewVideo(IntPtr instancePtr, ulong handle, string pszVideoID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewFile")] +internal static extern bool SteamAPI_ISteamUGC_UpdateItemPreviewFile(IntPtr instancePtr, ulong handle, uint index, string pszPreviewFile); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_UpdateItemPreviewVideo")] +internal static extern bool SteamAPI_ISteamUGC_UpdateItemPreviewVideo(IntPtr instancePtr, ulong handle, uint index, string pszVideoID); +[DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_RemoveItemPreview")] +internal static extern bool SteamAPI_ISteamUGC_RemoveItemPreview(IntPtr instancePtr, ulong handle, uint index); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_SubmitItemUpdate")] internal static extern ulong SteamAPI_ISteamUGC_SubmitItemUpdate(IntPtr instancePtr, ulong handle, string pchChangeNote); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamUGC_GetItemUpdateProgress")] @@ -1297,11 +1303,6 @@ internal static extern bool SteamAPI_ISteamGameServerStats_SetUserAchievement(In internal static extern bool SteamAPI_ISteamGameServerStats_ClearUserAchievement(IntPtr instancePtr, ulong steamIDUser, string pchName); [DllImportAttribute("Steam_api", EntryPoint = "SteamAPI_ISteamGameServerStats_StoreUserStats")] internal static extern ulong SteamAPI_ISteamGameServerStats_StoreUserStats(IntPtr instancePtr, ulong steamIDUser); -public delegate void SteamAPI_PublisherOwnedAppDataReady_t_Callback(PublisherOwnedAppDataReady_t pPublisherOwnedAppDataReady_t); -[DllImportAttribute("Steam_api", EntryPoint = "CPublisherOwnedAppDataReady_t_SetCallback")] -public static extern ulong CPublisherOwnedAppDataReady_t_SetCallback(SteamAPI_PublisherOwnedAppDataReady_t_Callback func); -[DllImportAttribute("Steam_api", EntryPoint = "CPublisherOwnedAppDataReady_t_RemoveCallback")] -public static extern ulong CPublisherOwnedAppDataReady_t_RemoveCallback(ulong handle); public delegate void SteamAPI_UserStatsReceived_t_Callback(UserStatsReceived_t pUserStatsReceived_t); [DllImportAttribute("Steam_api", EntryPoint = "CUserStatsReceived_t_SetCallback")] public static extern ulong CUserStatsReceived_t_SetCallback(SteamAPI_UserStatsReceived_t_Callback func); @@ -1577,7 +1578,6 @@ namespace Valve.Steamworks public abstract ISteamNetworking GetISteamNetworking(uint hSteamUser,uint hSteamPipe,string pchVersion); public abstract ISteamRemoteStorage GetISteamRemoteStorage(uint hSteamuser,uint hSteamPipe,string pchVersion); public abstract ISteamScreenshots GetISteamScreenshots(uint hSteamuser,uint hSteamPipe,string pchVersion); - public abstract void RunFrame(); public abstract uint GetIPCCallCount(); public abstract void SetWarningMessageHook(IntPtr pFunction); public abstract bool BShutdownIfAllPipesClosed(); @@ -1589,9 +1589,6 @@ namespace Valve.Steamworks public abstract ISteamMusic GetISteamMusic(uint hSteamuser,uint hSteamPipe,string pchVersion); public abstract ISteamMusicRemote GetISteamMusicRemote(uint hSteamuser,uint hSteamPipe,string pchVersion); public abstract ISteamHTMLSurface GetISteamHTMLSurface(uint hSteamuser,uint hSteamPipe,string pchVersion); - public abstract void Set_SteamAPI_CPostAPIResultInProcess(IntPtr func); - public abstract void Remove_SteamAPI_CPostAPIResultInProcess(IntPtr func); - public abstract void Set_SteamAPI_CCheckCallbackRegisteredInProcess(IntPtr func); public abstract ISteamInventory GetISteamInventory(uint hSteamuser,uint hSteamPipe,string pchVersion); public abstract ISteamVideo GetISteamVideo(uint hSteamuser,uint hSteamPipe,string pchVersion); } @@ -1625,6 +1622,8 @@ namespace Valve.Steamworks public abstract int GetGameBadgeLevel(int nSeries,bool bFoil); public abstract int GetPlayerSteamLevel(); public abstract ulong RequestStoreAuthURL(string pchRedirectURL); + public abstract bool BIsPhoneVerified(); + public abstract bool BIsTwoFactorEnabled(); } @@ -1721,7 +1720,6 @@ namespace Valve.Steamworks public abstract bool IsAPICallCompleted(ulong hSteamAPICall,ref bool pbFailed); public abstract int GetAPICallFailureReason(ulong hSteamAPICall); public abstract bool GetAPICallResult(ulong hSteamAPICall,IntPtr pCallback,int cubCallback,int iCallbackExpected,ref bool pbFailed); - public abstract void RunFrame(); public abstract uint GetIPCCallCount(); public abstract void SetWarningMessageHook(IntPtr pFunction); public abstract bool IsOverlayEnabled(); @@ -1733,6 +1731,8 @@ namespace Valve.Steamworks public abstract string GetSteamUILanguage(); public abstract bool IsSteamRunningInVR(); public abstract void SetOverlayNotificationInset(int nHorizontalInset,int nVerticalInset); + public abstract bool IsSteamInBigPictureMode(); + public abstract void StartVRDashboard(); } @@ -1975,8 +1975,7 @@ namespace Valve.Steamworks public abstract string GetLaunchQueryParam(string pchKey); public abstract bool GetDlcDownloadProgress(uint nAppID,ref ulong punBytesDownloaded,ref ulong punBytesTotal); public abstract int GetAppBuildId(); - public abstract void RequestPublisherOwnedAppData(); - public abstract uint GetPublisherOwnedAppData(ref byte pubBuffer,uint unMaxBytes); + public abstract void RequestAllProofOfPurchaseKeys(); } @@ -2152,7 +2151,7 @@ namespace Valve.Steamworks public abstract bool GetQueryUGCChildren(ulong handle,uint index,ref ulong pvecPublishedFileID,uint cMaxEntries); public abstract bool GetQueryUGCStatistic(ulong handle,uint index,uint eStatType,ref uint pStatValue); public abstract uint GetQueryUGCNumAdditionalPreviews(ulong handle,uint index); - public abstract bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,ref bool pbIsImage); + public abstract bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,out string pchOriginalFileName,uint cchOriginalFileNameSize,ref uint pPreviewType); public abstract uint GetQueryUGCNumKeyValueTags(ulong handle,uint index); public abstract bool GetQueryUGCKeyValueTag(ulong handle,uint index,uint keyValueTagIndex,out string pchKey,out string pchValue); public abstract bool ReleaseQueryUGCRequest(ulong handle); @@ -2184,6 +2183,11 @@ namespace Valve.Steamworks public abstract bool SetItemPreview(ulong handle,string pszPreviewFile); public abstract bool RemoveItemKeyValueTags(ulong handle,string pchKey); public abstract bool AddItemKeyValueTag(ulong handle,string pchKey,string pchValue); + public abstract bool AddItemPreviewFile(ulong handle,string pszPreviewFile,uint type); + public abstract bool AddItemPreviewVideo(ulong handle,string pszVideoID); + public abstract bool UpdateItemPreviewFile(ulong handle,uint index,string pszPreviewFile); + public abstract bool UpdateItemPreviewVideo(ulong handle,uint index,string pszVideoID); + public abstract bool RemoveItemPreview(ulong handle,uint index); public abstract ulong SubmitItemUpdate(ulong handle,string pchChangeNote); public abstract uint GetItemUpdateProgress(ulong handle,ref ulong punBytesProcessed,ref ulong punBytesTotal); public abstract ulong SetUserItemVote(ulong nPublishedFileID,bool bVoteUp); @@ -2487,11 +2491,6 @@ public override ISteamScreenshots GetISteamScreenshots(uint hSteamuser,uint hSte IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamScreenshots(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); return (ISteamScreenshots) Marshal.PtrToStructure(result, typeof(ISteamScreenshots)); } -public override void RunFrame() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamClient_RunFrame(m_pSteamClient); -} public override uint GetIPCCallCount() { CheckIfUsable(); @@ -2557,21 +2556,6 @@ public override ISteamHTMLSurface GetISteamHTMLSurface(uint hSteamuser,uint hSte IntPtr result = NativeEntrypoints.SteamAPI_ISteamClient_GetISteamHTMLSurface(m_pSteamClient,hSteamuser,hSteamPipe,pchVersion); return (ISteamHTMLSurface) Marshal.PtrToStructure(result, typeof(ISteamHTMLSurface)); } -public override void Set_SteamAPI_CPostAPIResultInProcess(IntPtr func) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamClient_Set_SteamAPI_CPostAPIResultInProcess(m_pSteamClient,func); -} -public override void Remove_SteamAPI_CPostAPIResultInProcess(IntPtr func) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamClient_Remove_SteamAPI_CPostAPIResultInProcess(m_pSteamClient,func); -} -public override void Set_SteamAPI_CCheckCallbackRegisteredInProcess(IntPtr func) -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamClient_Set_SteamAPI_CCheckCallbackRegisteredInProcess(m_pSteamClient,func); -} public override ISteamInventory GetISteamInventory(uint hSteamuser,uint hSteamPipe,string pchVersion) { CheckIfUsable(); @@ -2754,6 +2738,18 @@ public override ulong RequestStoreAuthURL(string pchRedirectURL) ulong result = NativeEntrypoints.SteamAPI_ISteamUser_RequestStoreAuthURL(m_pSteamUser,pchRedirectURL); return result; } +public override bool BIsPhoneVerified() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsPhoneVerified(m_pSteamUser); + return result; +} +public override bool BIsTwoFactorEnabled() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUser_BIsTwoFactorEnabled(m_pSteamUser); + return result; +} } @@ -3302,11 +3298,6 @@ public override bool GetAPICallResult(ulong hSteamAPICall,IntPtr pCallback,int c bool result = NativeEntrypoints.SteamAPI_ISteamUtils_GetAPICallResult(m_pSteamUtils,hSteamAPICall,pCallback,cubCallback,iCallbackExpected,ref pbFailed); return result; } -public override void RunFrame() -{ - CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamUtils_RunFrame(m_pSteamUtils); -} public override uint GetIPCCallCount() { CheckIfUsable(); @@ -3371,6 +3362,17 @@ public override void SetOverlayNotificationInset(int nHorizontalInset,int nVerti CheckIfUsable(); NativeEntrypoints.SteamAPI_ISteamUtils_SetOverlayNotificationInset(m_pSteamUtils,nHorizontalInset,nVerticalInset); } +public override bool IsSteamInBigPictureMode() +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUtils_IsSteamInBigPictureMode(m_pSteamUtils); + return result; +} +public override void StartVRDashboard() +{ + CheckIfUsable(); + NativeEntrypoints.SteamAPI_ISteamUtils_StartVRDashboard(m_pSteamUtils); +} } @@ -4692,16 +4694,10 @@ public override int GetAppBuildId() int result = NativeEntrypoints.SteamAPI_ISteamApps_GetAppBuildId(m_pSteamApps); return result; } -public override void RequestPublisherOwnedAppData() +public override void RequestAllProofOfPurchaseKeys() { CheckIfUsable(); - NativeEntrypoints.SteamAPI_ISteamApps_RequestPublisherOwnedAppData(m_pSteamApps); -} -public override uint GetPublisherOwnedAppData(ref byte pubBuffer,uint unMaxBytes) -{ - CheckIfUsable(); - uint result = NativeEntrypoints.SteamAPI_ISteamApps_GetPublisherOwnedAppData(m_pSteamApps,ref pubBuffer,unMaxBytes); - return result; + NativeEntrypoints.SteamAPI_ISteamApps_RequestAllProofOfPurchaseKeys(m_pSteamApps); } } @@ -5644,13 +5640,15 @@ public override uint GetQueryUGCNumAdditionalPreviews(ulong handle,uint index) uint result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCNumAdditionalPreviews(m_pSteamUGC,handle,index); return result; } -public override bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,ref bool pbIsImage) +public override bool GetQueryUGCAdditionalPreview(ulong handle,uint index,uint previewIndex,out string pchURLOrVideoID,out string pchOriginalFileName,uint cchOriginalFileNameSize,ref uint pPreviewType) { CheckIfUsable(); - pbIsImage = false; + pPreviewType = 0; System.Text.StringBuilder pStrBuffer1 = new System.Text.StringBuilder(2048); - bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(m_pSteamUGC,handle,index,previewIndex,pStrBuffer1,2048,ref pbIsImage); + System.Text.StringBuilder pStrBuffer2 = new System.Text.StringBuilder(2048); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_GetQueryUGCAdditionalPreview(m_pSteamUGC,handle,index,previewIndex,pStrBuffer1,2048,pStrBuffer2,cchOriginalFileNameSize,ref pPreviewType); pchURLOrVideoID = pStrBuffer1.ToString(); + pchOriginalFileName = pStrBuffer2.ToString(); return result; } public override uint GetQueryUGCNumKeyValueTags(ulong handle,uint index) @@ -5843,6 +5841,36 @@ public override bool AddItemKeyValueTag(ulong handle,string pchKey,string pchVal bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemKeyValueTag(m_pSteamUGC,handle,pchKey,pchValue); return result; } +public override bool AddItemPreviewFile(ulong handle,string pszPreviewFile,uint type) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemPreviewFile(m_pSteamUGC,handle,pszPreviewFile,type); + return result; +} +public override bool AddItemPreviewVideo(ulong handle,string pszVideoID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_AddItemPreviewVideo(m_pSteamUGC,handle,pszVideoID); + return result; +} +public override bool UpdateItemPreviewFile(ulong handle,uint index,string pszPreviewFile) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_UpdateItemPreviewFile(m_pSteamUGC,handle,index,pszPreviewFile); + return result; +} +public override bool UpdateItemPreviewVideo(ulong handle,uint index,string pszVideoID) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_UpdateItemPreviewVideo(m_pSteamUGC,handle,index,pszVideoID); + return result; +} +public override bool RemoveItemPreview(ulong handle,uint index) +{ + CheckIfUsable(); + bool result = NativeEntrypoints.SteamAPI_ISteamUGC_RemoveItemPreview(m_pSteamUGC,handle,index); + return result; +} public override ulong SubmitItemUpdate(ulong handle,string pchChangeNote) { CheckIfUsable(); @@ -6748,26 +6776,6 @@ public override ulong StoreUserStats(ulong steamIDUser) } -public class CPublisherOwnedAppDataReady_t_Callback -{ - public CPublisherOwnedAppDataReady_t_Callback() { } - ~CPublisherOwnedAppDataReady_t_Callback() - { - if(m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CPublisherOwnedAppDataReady_t_RemoveCallback(m_Handle); - } - } - ulong m_Handle = 0; - public void Set(Valve.Interop.NativeEntrypoints.SteamAPI_PublisherOwnedAppDataReady_t_Callback func) - { - if (m_Handle != 0) - { - Valve.Interop.NativeEntrypoints.CPublisherOwnedAppDataReady_t_RemoveCallback(m_Handle); - } - m_Handle = Valve.Interop.NativeEntrypoints.CPublisherOwnedAppDataReady_t_SetCallback(func); - } -} public class CUserStatsReceived_t_Callback { public CUserStatsReceived_t_Callback() { } @@ -7931,6 +7939,7 @@ public enum EResult k_EResultGSLTDenied = 102, k_EResultGSOwnerDenied = 103, k_EResultInvalidItemType = 104, + k_EResultIPBanned = 105, } public enum EVoiceResult { @@ -8035,6 +8044,7 @@ public enum EAppOwnershipFlags k_EAppOwnershipFlags_AutoGrant = 16384, k_EAppOwnershipFlags_PendingGift = 32768, k_EAppOwnershipFlags_RentalNotActivated = 65536, + k_EAppOwnershipFlags_Rental = 131072, } public enum EAppType { @@ -8078,8 +8088,6 @@ public enum EChatEntryType k_EChatEntryTypeWasBanned = 9, k_EChatEntryTypeDisconnected = 10, k_EChatEntryTypeHistoricalChat = 11, - k_EChatEntryTypeReserved1 = 12, - k_EChatEntryTypeReserved2 = 13, k_EChatEntryTypeLinkBlocked = 14, } public enum EChatRoomEnterResponse @@ -8155,6 +8163,18 @@ public enum ELaunchOptionType k_ELaunchOptionType_OpenVROverlay = 14, k_ELaunchOptionType_Dialog = 1000, } +public enum EVRHMDType +{ + k_eEVRHMDType_Unknown = 0, + k_eEVRHMDType_HTC_Dev = 1, + k_eEVRHMDType_HTC_VivePre = 2, + k_eEVRHMDType_HTC_Vive = 3, + k_eEVRHMDType_HTC_Unknown = 20, + k_eEVRHMDType_Oculus_DK1 = 21, + k_eEVRHMDType_Oculus_DK2 = 22, + k_eEVRHMDType_Oculus_Rift = 23, + k_eEVRHMDType_Oculus_Unknown = 40, +} public enum EFailureType { k_EFailureFlushedCallbackQueue = 0, @@ -8457,6 +8477,7 @@ public enum EHTTPMethod k_EHTTPMethodPUT = 4, k_EHTTPMethodDELETE = 5, k_EHTTPMethodOPTIONS = 6, + k_EHTTPMethodPATCH = 7, } public enum EHTTPStatusCode { @@ -8667,6 +8688,15 @@ public enum EItemStatistic k_EItemStatistic_NumUniqueWebsiteViews = 6, k_EItemStatistic_ReportScore = 7, } +public enum EItemPreviewType +{ + k_EItemPreviewType_Image = 0, + k_EItemPreviewType_YouTubeVideo = 1, + k_EItemPreviewType_Sketchfab = 2, + k_EItemPreviewType_EnvironmentMap_HorizontalCross = 3, + k_EItemPreviewType_EnvironmentMap_LatLong = 4, + k_EItemPreviewType_ReservedMax = 255, +} public enum EHTMLMouseButton { eHTMLMouseButton_Left = 0, @@ -8945,6 +8975,8 @@ public enum ESteamItemFlags [StructLayout(LayoutKind.Sequential)] public struct SteamAPICallCompleted_t { public ulong m_hAsyncCall; + public int m_iCallback; + public uint m_cubParam; } [StructLayout(LayoutKind.Sequential)] public struct CheckFileSignature_t { @@ -9291,7 +9323,7 @@ public enum ESteamItemFlags { public ulong m_nPublishedFileId; public uint m_nAppID; - public ulong m_hFile; + public ulong m_ulUnused; } [StructLayout(LayoutKind.Sequential)] public struct RemoteStorageFileWriteAsyncComplete_t { @@ -9405,12 +9437,9 @@ public enum ESteamItemFlags { public EResult m_eResult; public uint m_nAppID; - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] - public string m_rgchKey; //char[64] -} -[StructLayout(LayoutKind.Sequential)] public struct PublisherOwnedAppDataReady_t -{ - public EResult m_eResult; + public uint m_cchKeyLength; + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 240)] + public string m_rgchKey; //char[240] } [StructLayout(LayoutKind.Sequential)] public struct P2PSessionState_t { @@ -9444,33 +9473,33 @@ public enum ESteamItemFlags public uint m_hLocal; public EResult m_eResult; } -[StructLayout(LayoutKind.Sequential)] public struct VolumeHasChanged_t +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t { public float m_flNewVolume; } -[StructLayout(LayoutKind.Sequential)] public struct MusicPlayerWantsShuffled_t +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t { [MarshalAs(UnmanagedType.I1)] public bool m_bShuffled; } -[StructLayout(LayoutKind.Sequential)] public struct MusicPlayerWantsLooped_t +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t { [MarshalAs(UnmanagedType.I1)] public bool m_bLooped; } -[StructLayout(LayoutKind.Sequential)] public struct MusicPlayerWantsVolume_t +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t { public float m_flNewVolume; } -[StructLayout(LayoutKind.Sequential)] public struct MusicPlayerSelectsQueueEntry_t +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t { public int nID; } -[StructLayout(LayoutKind.Sequential)] public struct MusicPlayerSelectsPlaylistEntry_t +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t { public int nID; } -[StructLayout(LayoutKind.Sequential)] public struct MusicPlayerWantsPlayingRepeatStatus_t +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t { public int m_nPlayingRepeatStatus; } @@ -9613,11 +9642,11 @@ public enum ESteamItemFlags [MarshalAs(UnmanagedType.I1)] public bool m_bVoteSkipped; } -[StructLayout(LayoutKind.Sequential)] public struct SteamAppInstalled_t +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t { public uint m_nAppID; } -[StructLayout(LayoutKind.Sequential)] public struct SteamAppUninstalled_t +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t { public uint m_nAppID; } @@ -9791,35 +9820,20 @@ public enum ESteamItemFlags { public int m_handle; } -[StructLayout(LayoutKind.Sequential)] public struct BroadcastUploadStop_t +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t { public EBroadcastUploadResult m_eResult; } -[StructLayout(LayoutKind.Sequential)] public struct GetVideoURLResult_t +[StructLayout(LayoutKind.Sequential)] public struct SteamCallback_t { public EResult m_eResult; public uint m_unVideoAppID; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string m_rgchURL; //char[256] } -[StructLayout(LayoutKind.Sequential)] public struct CCallbackBase -{ - public byte m_nCallbackFlags; - public int m_iCallback; -} -[StructLayout(LayoutKind.Sequential)] public struct CCallResult -{ - public ulong m_hAPICall; - public IntPtr m_pObj; // T * - public IntPtr m_Func; -} -[StructLayout(LayoutKind.Sequential)] public struct CCallback -{ - public IntPtr m_pObj; // T * - public IntPtr m_Func; -} [StructLayout(LayoutKind.Sequential)] public struct CSteamAPIContext { + public IntPtr m_pSteamClient; // class ISteamClient * public IntPtr m_pSteamUser; // class ISteamUser * public IntPtr m_pSteamFriends; // class ISteamFriends * public IntPtr m_pSteamUtils; // class ISteamUtils * @@ -9841,6 +9855,22 @@ public enum ESteamItemFlags public IntPtr m_pSteamInventory; // class ISteamInventory * public IntPtr m_pSteamVideo; // class ISteamVideo * } +[StructLayout(LayoutKind.Sequential)] public struct CCallbackBase +{ + public byte m_nCallbackFlags; + public int m_iCallback; +} +[StructLayout(LayoutKind.Sequential)] public struct CCallResult +{ + public ulong m_hAPICall; + public IntPtr m_pObj; // T * + public IntPtr m_Func; +} +[StructLayout(LayoutKind.Sequential)] public struct CCallback +{ + public IntPtr m_pObj; // T * + public IntPtr m_Func; +} [StructLayout(LayoutKind.Sequential)] public struct GSClientApprove_t { public ulong m_SteamID; @@ -9989,8 +10019,8 @@ public const int k_iSteamAppListCallbacks = 3900; public const int k_iSteamMusicCallbacks = 4000; public const int k_iSteamMusicRemoteCallbacks = 4100; public const int k_iClientVRCallbacks = 4200; -public const int k_iClientReservedCallbacks = 4300; -public const int k_iSteamReservedCallbacks = 4400; +public const int k_iClientGameNotificationCallbacks = 4300; +public const int k_iSteamGameNotificationCallbacks = 4400; public const int k_iSteamHTMLSurfaceCallbacks = 4500; public const int k_iClientVideoCallbacks = 4600; public const int k_iClientInventoryCallbacks = 4700; diff --git a/public/steam/steam_gameserver.h b/public/steam/steam_gameserver.h index f58791f..f2d2847 100644 --- a/public/steam/steam_gameserver.h +++ b/public/steam/steam_gameserver.h @@ -35,40 +35,77 @@ enum EServerMode // UDP packets for the master server updater. See references to GameSocketShare in isteamgameserver.h. // - The version string is usually in the form x.x.x.x, and is used by the master server to detect when the // server is out of date. (Only servers with the latest version will be listed.) -#ifndef _PS3 -#ifdef VERSION_SAFE_STEAM_API_INTERFACES -S_API bool SteamGameServer_InitSafe( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); -#else -S_API bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); -#endif - -#else - -#ifdef VERSION_SAFE_STEAM_API_INTERFACES -S_API bool SteamGameServer_InitSafe( const SteamPS3Params_t *ps3Params, uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); -#else -S_API bool SteamGameServer_Init( const SteamPS3Params_t *ps3Params, uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); -#endif - -#endif - -#ifndef VERSION_SAFE_STEAM_API_INTERFACES -S_API ISteamGameServer *SteamGameServer(); -S_API ISteamUtils *SteamGameServerUtils(); -S_API ISteamNetworking *SteamGameServerNetworking(); -S_API ISteamGameServerStats *SteamGameServerStats(); -S_API ISteamHTTP *SteamGameServerHTTP(); -S_API ISteamInventory *SteamGameServerInventory(); -S_API ISteamUGC *SteamGameServerUGC(); -#endif +inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); S_API void SteamGameServer_Shutdown(); S_API void SteamGameServer_RunCallbacks(); +// Most Steam API functions allocate some amount of thread-local memory for +// parameter storage. Calling SteamGameServer_ReleaseCurrentThreadMemory() +// will free all API-related memory associated with the calling thread. +// This memory is released automatically by SteamGameServer_RunCallbacks(), +// so single-threaded servers do not need to explicitly call this function. +inline void SteamGameServer_ReleaseCurrentThreadMemory(); + S_API bool SteamGameServer_BSecure(); S_API uint64 SteamGameServer_GetSteamID(); +// If your application contains modules which could be built against different Steamworks SDK +// versions, then you should define VERSION_SAFE_STEAM_API_INTERFACES to enforce that you cannot +// use the version-less global accessors. Instead, create and use CSteamGameServerAPIContext +// objects to retrieve interface pointers which are appropriate for your Steamworks SDK headers. +#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) +inline ISteamClient *SteamGameServerClient(); +inline ISteamGameServer *SteamGameServer(); +inline ISteamUtils *SteamGameServerUtils(); +inline ISteamNetworking *SteamGameServerNetworking(); +inline ISteamGameServerStats *SteamGameServerStats(); +inline ISteamHTTP *SteamGameServerHTTP(); +inline ISteamInventory *SteamGameServerInventory(); +inline ISteamUGC *SteamGameServerUGC(); +inline ISteamApps *SteamGameServerApps(); +#endif + +class CSteamGameServerAPIContext +{ +public: + CSteamGameServerAPIContext() { Clear(); } + inline void Clear(); + inline bool Init(); + + ISteamClient *SteamClient() const { return m_pSteamClient; } + ISteamGameServer *SteamGameServer() const { return m_pSteamGameServer; } + ISteamUtils *SteamGameServerUtils() const { return m_pSteamGameServerUtils; } + ISteamNetworking *SteamGameServerNetworking() const { return m_pSteamGameServerNetworking; } + ISteamGameServerStats *SteamGameServerStats() const { return m_pSteamGameServerStats; } + ISteamHTTP *SteamHTTP() const { return m_pSteamHTTP; } + ISteamInventory *SteamInventory() const { return m_pSteamInventory; } + ISteamUGC *SteamUGC() const { return m_pSteamUGC; } + ISteamApps *SteamApps() const { return m_pSteamApps; } + +private: + ISteamClient *m_pSteamClient; + ISteamGameServer *m_pSteamGameServer; + ISteamUtils *m_pSteamGameServerUtils; + ISteamNetworking *m_pSteamGameServerNetworking; + ISteamGameServerStats *m_pSteamGameServerStats; + ISteamHTTP *m_pSteamHTTP; + ISteamInventory *m_pSteamInventory; + ISteamUGC *m_pSteamUGC; + ISteamApps *m_pSteamApps; +}; + + +// Older SDKs exported this global pointer, but it is no longer supported. +// You should use SteamGameServerClient() or CSteamGameServerAPIContext to +// safely access the ISteamClient APIs from your game server application. +//S_API ISteamClient *g_pSteamClientGameServer; + +// SteamGameServer_InitSafe has been replaced with SteamGameServer_Init and +// is no longer supported. Use SteamGameServer_Init instead. +//S_API void S_CALLTYPE SteamGameServer_InitSafe(); + //----------------------------------------------------------------------------------------------------------------------------------------------------------// // These macros are similar to the STEAM_CALLBACK_* macros in steam_api.h, but only trigger for gameserver callbacks @@ -80,7 +117,6 @@ S_API uint64 SteamGameServer_GetSteamID(); CCallbackManual< thisclass, callback_type, true > var; void func( callback_type *pParam ) - #define _STEAM_CALLBACK_GS( _, thisclass, func, param, var ) \ CCallback< thisclass, param, true > var; void func( param *pParam ) @@ -89,52 +125,43 @@ S_API uint64 SteamGameServer_GetSteamID(); // // The following functions are part of abstracting API access to the steamclient.dll, but should only be used in very specific cases //----------------------------------------------------------------------------------------------------------------------------------------------------------// -S_API HSteamPipe SteamGameServer_GetHSteamPipe(); +S_API HSteamPipe S_CALLTYPE SteamGameServer_GetHSteamPipe(); +S_API HSteamUser S_CALLTYPE SteamGameServer_GetHSteamUser(); +S_API bool S_CALLTYPE SteamInternal_GameServer_Init( uint32 unIP, uint16 usPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ); -#ifdef VERSION_SAFE_STEAM_API_INTERFACES -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -// VERSION_SAFE_STEAM_API_INTERFACES uses CSteamAPIContext to provide interfaces to each module in a way that -// lets them each specify the interface versions they are compiled with. -// -// It's important that these stay inlined in the header so the calling module specifies the interface versions -// for whatever Steam API version it has. -//----------------------------------------------------------------------------------------------------------------------------------------------------------// -S_API HSteamUser SteamGameServer_GetHSteamUser(); - -class CSteamGameServerAPIContext +#if !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) +inline CSteamGameServerAPIContext& SteamGameServerInternal_ModuleContext() { -public: - CSteamGameServerAPIContext(); - void Clear(); - - bool Init(); - - ISteamGameServer *SteamGameServer() { return m_pSteamGameServer; } - ISteamUtils *SteamGameServerUtils() { return m_pSteamGameServerUtils; } - ISteamNetworking *SteamGameServerNetworking() { return m_pSteamGameServerNetworking; } - ISteamGameServerStats *SteamGameServerStats() { return m_pSteamGameServerStats; } - ISteamHTTP *SteamHTTP() { return m_pSteamHTTP; } - ISteamInventory *SteamInventory() { return m_pSteamInventory; } - ISteamUGC *SteamUGC() { return m_pSteamUGC; } - -private: - ISteamGameServer *m_pSteamGameServer; - ISteamUtils *m_pSteamGameServerUtils; - ISteamNetworking *m_pSteamGameServerNetworking; - ISteamGameServerStats *m_pSteamGameServerStats; - ISteamHTTP *m_pSteamHTTP; - ISteamInventory *m_pSteamInventory; - ISteamUGC *m_pSteamUGC; -}; - -inline CSteamGameServerAPIContext::CSteamGameServerAPIContext() -{ - Clear(); + // NOTE: declaring "static CSteamAPIConext" creates a large function + // which queries the initialization status of the object. We know that + // it is pointer-aligned and fully memset with zeros, so just alias a + // static buffer of the appropriate size and call it a CSteamAPIContext. + static void* ctx[ sizeof(CSteamGameServerAPIContext)/sizeof(void*) ]; + return *(CSteamGameServerAPIContext*)ctx; } +#define _STEAMINTERNAL_ACCESSOR_BODY( AccessFunc ) \ + if ( !SteamGameServer_GetHSteamPipe() ) return 0; \ + CSteamGameServerAPIContext &ctx = SteamGameServerInternal_ModuleContext(); \ + if ( !ctx.AccessFunc() ) ctx.Init(); \ + return ctx.AccessFunc(); + +inline ISteamClient *SteamGameServerClient() { _STEAMINTERNAL_ACCESSOR_BODY( SteamClient ) } +inline ISteamGameServer *SteamGameServer() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServer ) } +inline ISteamUtils *SteamGameServerUtils() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerUtils ) } +inline ISteamNetworking *SteamGameServerNetworking() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerNetworking ) } +inline ISteamGameServerStats *SteamGameServerStats() { _STEAMINTERNAL_ACCESSOR_BODY( SteamGameServerStats ) } +inline ISteamHTTP *SteamGameServerHTTP() { _STEAMINTERNAL_ACCESSOR_BODY( SteamHTTP ) } +inline ISteamInventory *SteamGameServerInventory() { _STEAMINTERNAL_ACCESSOR_BODY( SteamInventory ) } +inline ISteamUGC *SteamGameServerUGC() { _STEAMINTERNAL_ACCESSOR_BODY( SteamUGC ) } +inline ISteamApps *SteamGameServerApps() { _STEAMINTERNAL_ACCESSOR_BODY( SteamApps ) } +#undef _STEAMINTERNAL_ACCESSOR_BODY +#endif // !defined( VERSION_SAFE_STEAM_API_INTERFACES ) && !defined( STEAM_API_EXPORTS ) + inline void CSteamGameServerAPIContext::Clear() { + m_pSteamClient = NULL; m_pSteamGameServer = NULL; m_pSteamGameServerUtils = NULL; m_pSteamGameServerNetworking = NULL; @@ -142,50 +169,69 @@ inline void CSteamGameServerAPIContext::Clear() m_pSteamHTTP = NULL; m_pSteamInventory = NULL; m_pSteamUGC = NULL; + m_pSteamApps = NULL; } -S_API ISteamClient *g_pSteamClientGameServer; -// This function must be inlined so the module using steam_api.dll gets the version names they want. +// This function must be declared inline in the header so the module using steam_api.dll gets the version names they want. inline bool CSteamGameServerAPIContext::Init() { - if ( !g_pSteamClientGameServer ) - return false; - HSteamUser hSteamUser = SteamGameServer_GetHSteamUser(); HSteamPipe hSteamPipe = SteamGameServer_GetHSteamPipe(); + if ( !hSteamPipe ) + return false; - m_pSteamGameServer = g_pSteamClientGameServer->GetISteamGameServer( hSteamUser, hSteamPipe, STEAMGAMESERVER_INTERFACE_VERSION ); + m_pSteamClient = (ISteamClient*) SteamInternal_CreateInterface( STEAMCLIENT_INTERFACE_VERSION ); + if ( !m_pSteamClient ) + return false; + + m_pSteamGameServer = m_pSteamClient->GetISteamGameServer( hSteamUser, hSteamPipe, STEAMGAMESERVER_INTERFACE_VERSION ); if ( !m_pSteamGameServer ) return false; - m_pSteamGameServerUtils = g_pSteamClientGameServer->GetISteamUtils( hSteamPipe, STEAMUTILS_INTERFACE_VERSION ); + m_pSteamGameServerUtils = m_pSteamClient->GetISteamUtils( hSteamPipe, STEAMUTILS_INTERFACE_VERSION ); if ( !m_pSteamGameServerUtils ) return false; - m_pSteamGameServerNetworking = g_pSteamClientGameServer->GetISteamNetworking( hSteamUser, hSteamPipe, STEAMNETWORKING_INTERFACE_VERSION ); + m_pSteamGameServerNetworking = m_pSteamClient->GetISteamNetworking( hSteamUser, hSteamPipe, STEAMNETWORKING_INTERFACE_VERSION ); if ( !m_pSteamGameServerNetworking ) return false; - m_pSteamGameServerStats = g_pSteamClientGameServer->GetISteamGameServerStats( hSteamUser, hSteamPipe, STEAMGAMESERVERSTATS_INTERFACE_VERSION ); + m_pSteamGameServerStats = m_pSteamClient->GetISteamGameServerStats( hSteamUser, hSteamPipe, STEAMGAMESERVERSTATS_INTERFACE_VERSION ); if ( !m_pSteamGameServerStats ) return false; - m_pSteamHTTP = g_pSteamClientGameServer->GetISteamHTTP( hSteamUser, hSteamPipe, STEAMHTTP_INTERFACE_VERSION ); + m_pSteamHTTP = m_pSteamClient->GetISteamHTTP( hSteamUser, hSteamPipe, STEAMHTTP_INTERFACE_VERSION ); if ( !m_pSteamHTTP ) return false; - m_pSteamInventory = g_pSteamClientGameServer->GetISteamInventory( hSteamUser, hSteamPipe, STEAMINVENTORY_INTERFACE_VERSION ); + m_pSteamInventory = m_pSteamClient->GetISteamInventory( hSteamUser, hSteamPipe, STEAMINVENTORY_INTERFACE_VERSION ); if ( !m_pSteamInventory ) return false; - m_pSteamUGC = g_pSteamClientGameServer->GetISteamUGC( hSteamUser, hSteamPipe, STEAMUGC_INTERFACE_VERSION ); + m_pSteamUGC = m_pSteamClient->GetISteamUGC( hSteamUser, hSteamPipe, STEAMUGC_INTERFACE_VERSION ); if ( !m_pSteamUGC ) return false; + m_pSteamApps = m_pSteamClient->GetISteamApps( hSteamUser, hSteamPipe, STEAMAPPS_INTERFACE_VERSION ); + if ( !m_pSteamApps ) + return false; + return true; } -#endif // VERSION_SAFE_STEAM_API_INTERFACES +inline bool SteamGameServer_Init( uint32 unIP, uint16 usSteamPort, uint16 usGamePort, uint16 usQueryPort, EServerMode eServerMode, const char *pchVersionString ) +{ + if ( !SteamInternal_GameServer_Init( unIP, usSteamPort, usGamePort, usQueryPort, eServerMode, pchVersionString ) ) + return false; + + return true; +} + + +inline void SteamGameServer_ReleaseCurrentThreadMemory() +{ + SteamAPI_ReleaseCurrentThreadMemory(); +} #endif // STEAM_GAMESERVER_H diff --git a/public/steam/steamclientpublic.h b/public/steam/steamclientpublic.h index 0c4c324..8ca755c 100644 --- a/public/steam/steamclientpublic.h +++ b/public/steam/steamclientpublic.h @@ -129,6 +129,7 @@ enum EResult k_EResultGSLTDenied = 102, // a game server login token owned by this token's owner has been banned k_EResultGSOwnerDenied = 103, // game server owner is denied for other reason (account lock, community ban, vac ban, missing phone) k_EResultInvalidItemType = 104, // the type of thing we were requested to act on is invalid + k_EResultIPBanned = 105, // the ip address has been banned from taking this action }; // Error codes for use with the voice functions @@ -264,6 +265,7 @@ enum EAppOwnershipFlags k_EAppOwnershipFlags_AutoGrant = 0x4000, // Ownership is based on any kind of autogrant license k_EAppOwnershipFlags_PendingGift = 0x8000, // user has pending gift to redeem k_EAppOwnershipFlags_RentalNotActivated = 0x10000, // Rental hasn't been activated yet + k_EAppOwnershipFlags_Rental = 0x20000, // Is a rental }; @@ -331,8 +333,8 @@ enum EChatEntryType k_EChatEntryTypeWasBanned = 9, // user was banned (data: 64-bit steamid of actor performing the ban) k_EChatEntryTypeDisconnected = 10, // user disconnected k_EChatEntryTypeHistoricalChat = 11, // a chat message from user's chat history or offilne message - k_EChatEntryTypeReserved1 = 12, - k_EChatEntryTypeReserved2 = 13, + //k_EChatEntryTypeReserved1 = 12, // No longer used + //k_EChatEntryTypeReserved2 = 13, // No longer used k_EChatEntryTypeLinkBlocked = 14, // a link was removed by the chat filter. }; @@ -463,7 +465,56 @@ enum ELaunchOptionType }; -#pragma pack( push, 1 ) +//----------------------------------------------------------------------------- +// Purpose: true if this launch option is any of the vr launching types +//----------------------------------------------------------------------------- +static inline bool BIsVRLaunchOptionType( const ELaunchOptionType eType ) +{ + return eType == k_ELaunchOptionType_OpenVR || eType == k_ELaunchOptionType_OpenVROverlay || eType == k_ELaunchOptionType_OtherVR; +} + + +//----------------------------------------------------------------------------- +// Purpose: code points for VR HMD vendors and models +// WARNING: DO NOT RENUMBER EXISTING VALUES - STORED IN A DATABASE +//----------------------------------------------------------------------------- +enum EVRHMDType +{ + k_eEVRHMDType_Unknown = 0, // unknown vendor and model + + k_eEVRHMDType_HTC_Dev = 1, // original HTC dev kits + k_eEVRHMDType_HTC_VivePre = 2, // htc vive pre + k_eEVRHMDType_HTC_Vive = 3, // htc vive consumer release + + k_eEVRHMDType_HTC_Unknown = 20, // unknown htc hmd + + k_eEVRHMDType_Oculus_DK1 = 21, // occulus DK1 + k_eEVRHMDType_Oculus_DK2 = 22, // occulus DK2 + k_eEVRHMDType_Oculus_Rift = 23, // occulus rift + + k_eEVRHMDType_Oculus_Unknown = 40, // // occulus unknown HMD +}; + + +//----------------------------------------------------------------------------- +// Purpose: true if this is from an Oculus HMD +//----------------------------------------------------------------------------- +static inline bool BIsOcculusHMD( EVRHMDType eType ) +{ + return eType == k_eEVRHMDType_Oculus_DK1 || eType == k_eEVRHMDType_Oculus_DK2 || eType == k_eEVRHMDType_Oculus_Rift || eType == k_eEVRHMDType_Oculus_Unknown; +} + + +//----------------------------------------------------------------------------- +// Purpose: true if this is from an Vive HMD +//----------------------------------------------------------------------------- +static inline bool BIsViveHMD( EVRHMDType eType ) +{ + return eType == k_eEVRHMDType_HTC_Dev || eType == k_eEVRHMDType_HTC_VivePre || eType == k_eEVRHMDType_HTC_Vive || eType == k_eEVRHMDType_HTC_Unknown; +} + + +#pragma pack( push, 1 ) #define CSTEAMID_DEFINED diff --git a/public/steam/steamhttpenums.h b/public/steam/steamhttpenums.h index e15171f..d95f195 100644 --- a/public/steam/steamhttpenums.h +++ b/public/steam/steamhttpenums.h @@ -23,6 +23,7 @@ enum EHTTPMethod k_EHTTPMethodPUT, k_EHTTPMethodDELETE, k_EHTTPMethodOPTIONS, + k_EHTTPMethodPATCH, // The remaining HTTP methods are not yet supported, per rfc2616 section 5.1.1 only GET and HEAD are required for // a compliant general purpose server. We'll likely add more as we find uses for them. diff --git a/public/steam/steamtypes.h b/public/steam/steamtypes.h index f0dfa32..f74df1a 100644 --- a/public/steam/steamtypes.h +++ b/public/steam/steamtypes.h @@ -84,7 +84,7 @@ typedef unsigned int uintp; #endif // else _WIN32 -#ifdef __clang__ +#ifdef API_GEN # define CLANG_ATTR(ATTR) __attribute__((annotate( ATTR ))) #else # define CLANG_ATTR(ATTR) diff --git a/redistributable_bin/linux32/libsteam_api.so b/redistributable_bin/linux32/libsteam_api.so index 62f9ae1..4574b80 100644 Binary files a/redistributable_bin/linux32/libsteam_api.so and b/redistributable_bin/linux32/libsteam_api.so differ diff --git a/redistributable_bin/linux64/libsteam_api.so b/redistributable_bin/linux64/libsteam_api.so index ddff43e..f930d8e 100644 Binary files a/redistributable_bin/linux64/libsteam_api.so and b/redistributable_bin/linux64/libsteam_api.so differ diff --git a/redistributable_bin/osx32/libsteam_api.dylib b/redistributable_bin/osx32/libsteam_api.dylib index 4c5979a..f358b08 100644 Binary files a/redistributable_bin/osx32/libsteam_api.dylib and b/redistributable_bin/osx32/libsteam_api.dylib differ diff --git a/redistributable_bin/steam_api.dll b/redistributable_bin/steam_api.dll index 1b06c10..535ba15 100644 Binary files a/redistributable_bin/steam_api.dll and b/redistributable_bin/steam_api.dll differ diff --git a/redistributable_bin/steam_api.lib b/redistributable_bin/steam_api.lib index 58cf1a5..415732e 100644 Binary files a/redistributable_bin/steam_api.lib and b/redistributable_bin/steam_api.lib differ diff --git a/redistributable_bin/win64/steam_api64.dll b/redistributable_bin/win64/steam_api64.dll index 6d61394..7b4da36 100644 Binary files a/redistributable_bin/win64/steam_api64.dll and b/redistributable_bin/win64/steam_api64.dll differ diff --git a/redistributable_bin/win64/steam_api64.lib b/redistributable_bin/win64/steam_api64.lib index d53acf8..4d9ce2d 100644 Binary files a/redistributable_bin/win64/steam_api64.lib and b/redistributable_bin/win64/steam_api64.lib differ diff --git a/steamworksexample/gameenginesdl.cpp b/steamworksexample/gameenginesdl.cpp index cd0c324..fd4fd0f 100644 --- a/steamworksexample/gameenginesdl.cpp +++ b/steamworksexample/gameenginesdl.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include diff --git a/steamworksexample/htmlsurface.cpp b/steamworksexample/htmlsurface.cpp index 9509244..a7451f9 100644 --- a/steamworksexample/htmlsurface.cpp +++ b/steamworksexample/htmlsurface.cpp @@ -14,11 +14,7 @@ //----------------------------------------------------------------------------- // Purpose: Constructor //----------------------------------------------------------------------------- -CHTMLSurface::CHTMLSurface( IGameEngine *pGameEngine ) : - m_CloseBrowser( this, &CHTMLSurface::OnCloseBrowser ), - m_NeedsPaint( this, &CHTMLSurface::OnNeedsPaint ), - m_StartRequest( this, &CHTMLSurface::OnStartRequest ), - m_FinishedRequest( this, &CHTMLSurface::OnFinishedRequest ) +CHTMLSurface::CHTMLSurface( IGameEngine *pGameEngine ) { m_pGameEngine = pGameEngine; m_unBrowserHandle = INVALID_HTMLBROWSER; @@ -121,7 +117,7 @@ void CHTMLSurface::OnBrowserReady( HTML_BrowserReady_t *pBrowserReady, bool bIOF return; m_unBrowserHandle = pBrowserReady->unBrowserHandle; - SteamHTMLSurface()->SetSize( m_unBrowserHandle, m_unHTMLWide, m_unHTMLWide ); + SteamHTMLSurface()->SetSize( m_unBrowserHandle, m_unHTMLWide, m_unHTMLTall ); SteamHTMLSurface()->LoadURL( m_unBrowserHandle, "http://steamcommunity.com/", NULL ); } @@ -149,10 +145,59 @@ void CHTMLSurface::OnNeedsPaint( HTML_NeedsPaint_t *pParam ) //----------------------------------------------------------------------------- void CHTMLSurface::OnStartRequest( HTML_StartRequest_t *pParam ) { + // MUST call AllowStartRequest once for every OnStartRequest callback! SteamHTMLSurface()->AllowStartRequest( m_unBrowserHandle, true ); } +//----------------------------------------------------------------------------- +// Purpose: the page has requested a modal javascript message box +//----------------------------------------------------------------------------- +void CHTMLSurface::OnJSAlert( HTML_JSAlert_t *pParam ) +{ + // MUST call JSDialogResponse once for every OnJSAlert callback! + + // ShowModalMessageBox( pParam->pchMessage ); + SteamHTMLSurface()->JSDialogResponse( m_unBrowserHandle, true ); +} + + +//----------------------------------------------------------------------------- +// Purpose: the page has requested a modal javascript yes/no dialog box +//----------------------------------------------------------------------------- +void CHTMLSurface::OnJSConfirm( HTML_JSConfirm_t *pParam ) +{ + // MUST call JSDialogResponse once for every OnJSConfirm callback! + + // if ( ShowModalYesNoDialogBox( pParam->pchMessage ) == BUTTON_NO ); + // SteamHTMLSurface()->JSDialogResponse( m_unBrowserHandle, false ); + // else + SteamHTMLSurface()->JSDialogResponse( m_unBrowserHandle, true ); +} + + +//----------------------------------------------------------------------------- +// Purpose: the page has requested a local file upload dialog box. +//----------------------------------------------------------------------------- +void CHTMLSurface::OnUploadLocalFile( HTML_FileOpenDialog_t *pParam ) +{ + // MUST call FileLoadDialogResponse once for every OnLocalFileBrowse callback! + + // Most applications do NOT want to allow the web browser to upload local file + // content from the customer's hard drive to the remote web server! That would + // be a pretty big security hole, unless you carefully vetted every file path. + SteamHTMLSurface()->FileLoadDialogResponse( m_unBrowserHandle, NULL ); + + // But if you did want to allow it, you would do something like this: + // ... show modal file selection dialog box ... + // ... verify that the selected files are safe to upload ... + // std::vector< const char * > vecUTF8FilenamesArray; + // ... populate vecUTF8FilenamesArray ... + // vecUTF8FilenamesArray.push_back( NULL ); + // SteamHTMLSurface()->FileLoadDialogResponse( m_unBrowserHandle, &vecUTF8FilenamesArray[0] ); +} + + //----------------------------------------------------------------------------- // Purpose: the page is now fully loaded //----------------------------------------------------------------------------- @@ -160,4 +205,4 @@ void CHTMLSurface::OnFinishedRequest( HTML_FinishedRequest_t *pParam ) { // Uncomment this if you want to scale a pages contents when you display it //SteamHTMLSurface()->SetPageScaleFactor( m_unBrowserHandle, 2.0, 0, 0 ); -} \ No newline at end of file +} diff --git a/steamworksexample/htmlsurface.h b/steamworksexample/htmlsurface.h index 2a20eca..7984a3d 100644 --- a/steamworksexample/htmlsurface.h +++ b/steamworksexample/htmlsurface.h @@ -29,11 +29,16 @@ public: void Show(); private: - STEAM_CALLBACK( CHTMLSurface, OnCloseBrowser, HTML_CloseBrowser_t, m_CloseBrowser ); - STEAM_CALLBACK( CHTMLSurface, OnNeedsPaint, HTML_NeedsPaint_t, m_NeedsPaint ); - STEAM_CALLBACK( CHTMLSurface, OnStartRequest, HTML_StartRequest_t, m_StartRequest ); - STEAM_CALLBACK( CHTMLSurface, OnFinishedRequest, HTML_FinishedRequest_t, m_FinishedRequest ); - + STEAM_CALLBACK( CHTMLSurface, OnStartRequest, HTML_StartRequest_t ); // REQUIRED + STEAM_CALLBACK( CHTMLSurface, OnJSAlert, HTML_JSAlert_t ); // REQUIRED + STEAM_CALLBACK( CHTMLSurface, OnJSConfirm, HTML_JSConfirm_t ); // REQUIRED + STEAM_CALLBACK( CHTMLSurface, OnUploadLocalFile, HTML_FileOpenDialog_t ); // REQUIRED + + STEAM_CALLBACK( CHTMLSurface, OnNeedsPaint, HTML_NeedsPaint_t ); + STEAM_CALLBACK( CHTMLSurface, OnCloseBrowser, HTML_CloseBrowser_t ); + STEAM_CALLBACK( CHTMLSurface, OnFinishedRequest, HTML_FinishedRequest_t ); + + void OnBrowserReady( HTML_BrowserReady_t *pBrowserReady, bool bIOFailure ); CCallResult< CHTMLSurface, HTML_BrowserReady_t > m_SteamCallResultBrowserReady; diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Breakpad b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Breakpad index 9fd8b92..5159262 100644 Binary files a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Breakpad and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Breakpad differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Headers b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Headers deleted file mode 100644 index 5bbdca6..0000000 --- a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Headers +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Headers diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Headers/Breakpad.h b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Headers/Breakpad.h new file mode 100644 index 0000000..b9c3b78 --- /dev/null +++ b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Headers/Breakpad.h @@ -0,0 +1,282 @@ +// Copyright (c) 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Framework to provide a simple C API to crash reporting for +// applications. By default, if any machine-level exception (e.g., +// EXC_BAD_ACCESS) occurs, it will be handled by the BreakpadRef +// object as follows: +// +// 1. Create a minidump file (see Breakpad for details) +// 2. Prompt the user (using CFUserNotification) +// 3. Invoke a command line reporting tool to send the minidump to a +// server +// +// By specifying parameters to the BreakpadCreate function, you can +// modify the default behavior to suit your needs and wants and +// desires. + +// A service name associated with the original bootstrap parent port, saved in +// OnDemandServer and restored in Inspector. +#define BREAKPAD_BOOTSTRAP_PARENT_PORT "com.Breakpad.BootstrapParent" + +typedef void *BreakpadRef; + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#include "BreakpadDefines.h" + +// Optional user-defined function to dec to decide if we should handle +// this crash or forward it along. +// Return true if you want Breakpad to handle it. +// Return false if you want Breakpad to skip it +// The exception handler always returns false, as if SEND_AND_EXIT were false +// (which means the next exception handler will take the exception) +typedef bool (*BreakpadFilterCallback)(int exception_type, + int exception_code, + mach_port_t crashing_thread, + void *context); + +// Create a new BreakpadRef object and install it as an exception +// handler. The |parameters| will typically be the contents of your +// bundle's Info.plist. +// +// You can also specify these additional keys for customizable behavior: +// Key: Value: +// BREAKPAD_PRODUCT Product name (e.g., "MyAwesomeProduct") +// This one is used as the key to identify +// the product when uploading. Falls back to +// CFBundleName if not specified. +// REQUIRED +// +// BREAKPAD_PRODUCT_DISPLAY This is the display name, e.g. a pretty +// name for the product when the crash_sender +// pops up UI for the user. Falls back first to +// CFBundleDisplayName and then to +// BREAKPAD_PRODUCT if not specified. +// +// BREAKPAD_VERSION Product version (e.g., 1.2.3), used +// as metadata for crash report. Falls back to +// CFBundleVersion if not specified. +// REQUIRED +// +// BREAKPAD_VENDOR Vendor name, used in UI (e.g. "A report has +// been created that you can send to ") +// +// BREAKPAD_URL URL destination for reporting +// REQUIRED +// +// BREAKPAD_REPORT_INTERVAL # of seconds between sending +// reports. If an additional report is +// generated within this time, it will +// be ignored. Default: 3600sec. +// Specify 0 to send all reports. +// +// BREAKPAD_SKIP_CONFIRM If true, the reporter will send the report +// without any user intervention. +// Defaults to NO +// +// BREAKPAD_CONFIRM_TIMEOUT Number of seconds before the upload +// confirmation dialog will be automatically +// dismissed (cancelling the upload). +// Default: 300 seconds (min of 60). +// Specify 0 to prevent timeout. +// +// BREAKPAD_SEND_AND_EXIT If true, the handler will exit after sending. +// This will prevent any other handler (e.g., +// CrashReporter) from getting the crash. +// Defaults TO YES +// +// BREAKPAD_DUMP_DIRECTORY The directory to store crash-dumps +// in. By default, we use +// ~/Library/Breakpad/ +// The path you specify here is tilde-expanded. +// +// BREAKPAD_INSPECTOR_LOCATION The full path to the Inspector executable. +// Defaults to /Inspector +// +// BREAKPAD_REPORTER_EXE_LOCATION The full path to the Reporter/sender +// executable. +// Default: +// /crash_report_sender.app +// +// BREAKPAD_LOGFILES Indicates an array of log file paths that +// should be uploaded at crash time. +// +// BREAKPAD_REQUEST_COMMENTS If true, the message dialog will have a +// text box for the user to enter comments. +// Default: NO +// +// BREAKPAD_REQUEST_EMAIL If true and BREAKPAD_REQUEST_COMMENTS is also +// true, the message dialog will have a text +// box for the user to enter their email address. +// Default: NO +// +// BREAKPAD_SERVER_TYPE A parameter that tells Breakpad how to +// rewrite the upload parameters for a specific +// server type. The currently valid values are +// 'socorro' or 'google'. If you want to add +// other types, see the function in +// crash_report_sender.m that maps parameters to +// URL parameters. Defaults to 'google'. +// +// BREAKPAD_SERVER_PARAMETER_DICT A plist dictionary of static +// parameters that are uploaded to the +// server. The parameters are sent as +// is to the crash server. Their +// content isn't added to the minidump +// but pass as URL parameters when +// uploading theminidump to the crash +// server. +//============================================================================= +// The BREAKPAD_PRODUCT, BREAKPAD_VERSION and BREAKPAD_URL are +// required to have non-NULL values. By default, the BREAKPAD_PRODUCT +// will be the CFBundleName and the BREAKPAD_VERSION will be the +// CFBundleVersion when these keys are present in the bundle's +// Info.plist, which is usually passed in to BreakpadCreate() as an +// NSDictionary (you could also pass in another dictionary that had +// the same keys configured). If the BREAKPAD_PRODUCT or +// BREAKPAD_VERSION are ultimately undefined, BreakpadCreate() will +// fail. You have been warned. +// +// If you are running in a debugger, Breakpad will not install, unless the +// BREAKPAD_IGNORE_DEBUGGER envionment variable is set and/or non-zero. +// +// The BREAKPAD_SKIP_CONFIRM and BREAKPAD_SEND_AND_EXIT default +// values are NO and YES. However, they can be controlled by setting their +// values in a user or global plist. +// +// It's easiest to use Breakpad via the Framework, but if you're compiling the +// code in directly, BREAKPAD_INSPECTOR_LOCATION and +// BREAKPAD_REPORTER_EXE_LOCATION allow you to specify custom paths +// to the helper executables. +// +//============================================================================= +// The following are NOT user-supplied but are documented here for +// completeness. They are calculated by Breakpad during initialization & +// crash-dump generation, or entered in by the user. +// +// BREAKPAD_PROCESS_START_TIME The time, in seconds since the Epoch, the +// process started +// +// BREAKPAD_PROCESS_CRASH_TIME The time, in seconds since the Epoch, the +// process crashed. +// +// BREAKPAD_PROCESS_UP_TIME The total time in milliseconds the process +// has been running. This parameter is not +// set until the crash-dump-generation phase. +// +// BREAKPAD_LOGFILE_KEY_PREFIX Used to find out which parameters in the +// parameter dictionary correspond to log +// file paths. +// +// BREAKPAD_SERVER_PARAMETER_PREFIX This prefix is used by Breakpad +// internally, because Breakpad uses +// the same dictionary internally to +// track both its internal +// configuration parameters and +// parameters meant to be uploaded +// to the server. This string is +// used internally by Breakpad to +// prefix user-supplied parameter +// names so those can be sent to the +// server without leaking Breakpad's +// internal values. +// +// BREAKPAD_ON_DEMAND Used internally to indicate to the +// Reporter that we're sending on-demand, +// not as result of a crash. +// +// BREAKPAD_COMMENTS The text the user provided as comments. +// Only used in crash_report_sender. + +// Returns a new BreakpadRef object on success, NULL otherwise. +BreakpadRef BreakpadCreate(NSDictionary *parameters); + +// Uninstall and release the data associated with |ref|. +void BreakpadRelease(BreakpadRef ref); + +// Clients may set an optional callback which gets called when a crash +// occurs. The callback function should return |true| if we should +// handle the crash, generate a crash report, etc. or |false| if we +// should ignore it and forward the crash (normally to CrashReporter). +// Context is a pointer to arbitrary data to make the callback with. +void BreakpadSetFilterCallback(BreakpadRef ref, + BreakpadFilterCallback callback, + void *context); + +// User defined key and value string storage. Generally this is used +// to configure Breakpad's internal operation, such as whether the +// crash_sender should prompt the user, or the filesystem location for +// the minidump file. See Breakpad.h for some parameters that can be +// set. Anything longer than 255 bytes will be truncated. Note that +// the string is converted to UTF8 before truncation, so any multibyte +// character that straddles the 255(256 - 1 for terminator) byte limit +// will be mangled. +// +// A maximum number of 64 key/value pairs are supported. An assert() +// will fire if more than this number are set. Unfortunately, right +// now, the same dictionary is used for both Breakpad's parameters AND +// the Upload parameters. +// +// TODO (nealsid): Investigate how necessary this is if we don't +// automatically upload parameters to the server anymore. +// TODO (nealsid): separate server parameter dictionary from the +// dictionary used to configure Breakpad, and document limits for each +// independently. +void BreakpadSetKeyValue(BreakpadRef ref, NSString *key, NSString *value); +NSString *BreakpadKeyValue(BreakpadRef ref, NSString *key); +void BreakpadRemoveKeyValue(BreakpadRef ref, NSString *key); + +// You can use this method to specify parameters that will be uploaded +// to the crash server. They will be automatically encoded as +// necessary. Note that as mentioned above there are limits on both +// the number of keys and their length. +void BreakpadAddUploadParameter(BreakpadRef ref, NSString *key, + NSString *value); + +// This method will remove a previously-added parameter from the +// upload parameter set. +void BreakpadRemoveUploadParameter(BreakpadRef ref, NSString *key); + +// Add a log file for Breakpad to read and send upon crash dump +void BreakpadAddLogFile(BreakpadRef ref, NSString *logPathname); + +// Generate a minidump and send +void BreakpadGenerateAndSendReport(BreakpadRef ref); + +void BreakpadSetComment( BreakpadRef ref, char const *pchComment ); + +#ifdef __cplusplus +} +#endif diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Headers/BreakpadDefines.h b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Headers/BreakpadDefines.h new file mode 100644 index 0000000..8986cd1 --- /dev/null +++ b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Headers/BreakpadDefines.h @@ -0,0 +1,72 @@ +// Copyright (c) 2011, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Keys for configuration file +#define kReporterMinidumpDirectoryKey "MinidumpDir" +#define kReporterMinidumpIDKey "MinidumpID" + +// Filename for recording uploaded IDs +#define kReporterLogFilename "uploads.log" + +// The default subdirectory of the Library to put crash dumps in +// The subdirectory is +// ~/Library// +#define kDefaultLibrarySubdirectory "Breakpad" + +// Specify some special keys to be used in the configuration file that is +// generated by Breakpad and consumed by the crash_sender. +#define BREAKPAD_PRODUCT "BreakpadProduct" +#define BREAKPAD_PRODUCT_DISPLAY "BreakpadProductDisplay" +#define BREAKPAD_VERSION "BreakpadVersion" +#define BREAKPAD_VENDOR "BreakpadVendor" +#define BREAKPAD_URL "BreakpadURL" +#define BREAKPAD_REPORT_INTERVAL "BreakpadReportInterval" +#define BREAKPAD_SKIP_CONFIRM "BreakpadSkipConfirm" +#define BREAKPAD_CONFIRM_TIMEOUT "BreakpadConfirmTimeout" +#define BREAKPAD_SEND_AND_EXIT "BreakpadSendAndExit" +#define BREAKPAD_DUMP_DIRECTORY "BreakpadMinidumpLocation" +#define BREAKPAD_INSPECTOR_LOCATION "BreakpadInspectorLocation" +#define BREAKPAD_REPORTER_EXE_LOCATION \ + "BreakpadReporterExeLocation" +#define BREAKPAD_LOGFILES "BreakpadLogFiles" +#define BREAKPAD_LOGFILE_UPLOAD_SIZE "BreakpadLogFileTailSize" +#define BREAKPAD_REQUEST_COMMENTS "BreakpadRequestComments" +#define BREAKPAD_COMMENTS "BreakpadComments" +#define BREAKPAD_REQUEST_EMAIL "BreakpadRequestEmail" +#define BREAKPAD_EMAIL "BreakpadEmail" +#define BREAKPAD_SERVER_TYPE "BreakpadServerType" +#define BREAKPAD_SERVER_PARAMETER_DICT "BreakpadServerParameters" + +// The keys below are NOT user supplied, and are used internally. +#define BREAKPAD_PROCESS_START_TIME "BreakpadProcStartTime" +#define BREAKPAD_PROCESS_UP_TIME "BreakpadProcessUpTime" +#define BREAKPAD_PROCESS_CRASH_TIME "BreakpadProcessCrashTime" +#define BREAKPAD_LOGFILE_KEY_PREFIX "BreakpadAppLogFile" +#define BREAKPAD_SERVER_PARAMETER_PREFIX "BreakpadServerParameterPrefix_" +#define BREAKPAD_ON_DEMAND "BreakpadOnDemand" diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources deleted file mode 100644 index 6e50ab9..0000000 --- a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources +++ /dev/null @@ -1 +0,0 @@ -Versions/Current/Resources diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/Info.plist b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/Info.plist new file mode 100644 index 0000000..1113206 --- /dev/null +++ b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/Info.plist @@ -0,0 +1,38 @@ + + + + + BuildMachineOSBuild + 11G63 + CFBundleDevelopmentRegion + English + CFBundleExecutable + Breakpad + CFBundleIdentifier + com.googlecode.google-breakpad + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Breakpad + CFBundlePackageType + FMWK + CFBundleSignature + ???? + CFBundleVersion + 1.0 + DTCompiler + com.apple.compilers.llvm.clang.1_0.compiler + DTPlatformBuild + 4E3002 + DTPlatformVersion + GM + DTSDKBuild + 10K549 + DTSDKName + macosx10.6 + DTXcode + 0433 + DTXcodeBuild + 4E3002 + + diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/Inspector b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/Inspector new file mode 100644 index 0000000..e4d6ca5 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/Inspector differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/breakpadUtilities.dylib b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/breakpadUtilities.dylib new file mode 100644 index 0000000..ba6037a Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/breakpadUtilities.dylib differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Info.plist b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Info.plist new file mode 100644 index 0000000..f802b01 --- /dev/null +++ b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Info.plist @@ -0,0 +1,48 @@ + + + + + BuildMachineOSBuild + 11G63 + CFBundleDevelopmentRegion + English + CFBundleDisplayName + crash_report_sender + CFBundleExecutable + crash_report_sender + CFBundleIconFile + crash_report_sender + CFBundleIdentifier + com.Breakpad.crash_report_sender + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + crash_report_sender + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + DTCompiler + com.apple.compilers.llvm.clang.1_0.compiler + DTPlatformBuild + 4E3002 + DTPlatformVersion + GM + DTSDKBuild + 10K549 + DTSDKName + macosx10.6 + DTXcode + 0433 + DTXcodeBuild + 4E3002 + LSHasLocalizedDisplayName + + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/MacOS/crash_report_sender b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/MacOS/crash_report_sender new file mode 100644 index 0000000..14abcbf Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/MacOS/crash_report_sender differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/PkgInfo b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/PkgInfo new file mode 100644 index 0000000..bd04210 --- /dev/null +++ b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/PkgInfo @@ -0,0 +1 @@ +APPL???? \ No newline at end of file diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/Breakpad.nib b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/Breakpad.nib new file mode 100644 index 0000000..432a001 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/Breakpad.nib differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/English.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/English.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/English.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/English.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/English.lproj/Localizable.strings new file mode 100644 index 0000000..b731522 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/English.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/crash_report_sender.icns b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/crash_report_sender.icns new file mode 100644 index 0000000..e8c2124 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/crash_report_sender.icns differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/da.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/da.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/da.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/da.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/da.lproj/Localizable.strings new file mode 100644 index 0000000..59b0fae Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/da.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/de.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/de.lproj/InfoPlist.strings new file mode 100644 index 0000000..e30f049 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/de.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/de.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/de.lproj/Localizable.strings new file mode 100644 index 0000000..4fb2a0a Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/de.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/es.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/es.lproj/InfoPlist.strings new file mode 100644 index 0000000..2ddf311 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/es.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/es.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/es.lproj/Localizable.strings new file mode 100644 index 0000000..ee3c368 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/es.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/fr.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/fr.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/fr.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/fr.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/fr.lproj/Localizable.strings new file mode 100644 index 0000000..760e85a Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/fr.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/goArrow.png b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/goArrow.png new file mode 100644 index 0000000..f318a56 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/goArrow.png differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/it.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/it.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/it.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/it.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/it.lproj/Localizable.strings new file mode 100644 index 0000000..9e99cd1 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/it.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/ja.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/ja.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/ja.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/ja.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/ja.lproj/Localizable.strings new file mode 100644 index 0000000..8d8fd91 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/ja.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/nl.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/nl.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/nl.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/nl.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/nl.lproj/Localizable.strings new file mode 100644 index 0000000..affe56e Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/nl.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/no.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/no.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/no.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/no.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/no.lproj/Localizable.strings new file mode 100644 index 0000000..8849c0b Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/no.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/sl.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/sl.lproj/InfoPlist.strings new file mode 100644 index 0000000..a375f9d Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/sl.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/sl.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/sl.lproj/Localizable.strings new file mode 100644 index 0000000..3ad772d Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/sl.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/sv.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/sv.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/sv.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/sv.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/sv.lproj/Localizable.strings new file mode 100644 index 0000000..ffcce74 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/sv.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/tr.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/tr.lproj/InfoPlist.strings new file mode 100644 index 0000000..3a0f347 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/tr.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/tr.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/tr.lproj/Localizable.strings new file mode 100644 index 0000000..05acb9b Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Resources/crash_report_sender.app/Contents/Resources/tr.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current deleted file mode 100644 index f70f10e..0000000 --- a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current +++ /dev/null @@ -1 +0,0 @@ -A diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Breakpad b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Breakpad new file mode 100644 index 0000000..5159262 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Breakpad differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Headers/Breakpad.h b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Headers/Breakpad.h new file mode 100644 index 0000000..b9c3b78 --- /dev/null +++ b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Headers/Breakpad.h @@ -0,0 +1,282 @@ +// Copyright (c) 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Framework to provide a simple C API to crash reporting for +// applications. By default, if any machine-level exception (e.g., +// EXC_BAD_ACCESS) occurs, it will be handled by the BreakpadRef +// object as follows: +// +// 1. Create a minidump file (see Breakpad for details) +// 2. Prompt the user (using CFUserNotification) +// 3. Invoke a command line reporting tool to send the minidump to a +// server +// +// By specifying parameters to the BreakpadCreate function, you can +// modify the default behavior to suit your needs and wants and +// desires. + +// A service name associated with the original bootstrap parent port, saved in +// OnDemandServer and restored in Inspector. +#define BREAKPAD_BOOTSTRAP_PARENT_PORT "com.Breakpad.BootstrapParent" + +typedef void *BreakpadRef; + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#include "BreakpadDefines.h" + +// Optional user-defined function to dec to decide if we should handle +// this crash or forward it along. +// Return true if you want Breakpad to handle it. +// Return false if you want Breakpad to skip it +// The exception handler always returns false, as if SEND_AND_EXIT were false +// (which means the next exception handler will take the exception) +typedef bool (*BreakpadFilterCallback)(int exception_type, + int exception_code, + mach_port_t crashing_thread, + void *context); + +// Create a new BreakpadRef object and install it as an exception +// handler. The |parameters| will typically be the contents of your +// bundle's Info.plist. +// +// You can also specify these additional keys for customizable behavior: +// Key: Value: +// BREAKPAD_PRODUCT Product name (e.g., "MyAwesomeProduct") +// This one is used as the key to identify +// the product when uploading. Falls back to +// CFBundleName if not specified. +// REQUIRED +// +// BREAKPAD_PRODUCT_DISPLAY This is the display name, e.g. a pretty +// name for the product when the crash_sender +// pops up UI for the user. Falls back first to +// CFBundleDisplayName and then to +// BREAKPAD_PRODUCT if not specified. +// +// BREAKPAD_VERSION Product version (e.g., 1.2.3), used +// as metadata for crash report. Falls back to +// CFBundleVersion if not specified. +// REQUIRED +// +// BREAKPAD_VENDOR Vendor name, used in UI (e.g. "A report has +// been created that you can send to ") +// +// BREAKPAD_URL URL destination for reporting +// REQUIRED +// +// BREAKPAD_REPORT_INTERVAL # of seconds between sending +// reports. If an additional report is +// generated within this time, it will +// be ignored. Default: 3600sec. +// Specify 0 to send all reports. +// +// BREAKPAD_SKIP_CONFIRM If true, the reporter will send the report +// without any user intervention. +// Defaults to NO +// +// BREAKPAD_CONFIRM_TIMEOUT Number of seconds before the upload +// confirmation dialog will be automatically +// dismissed (cancelling the upload). +// Default: 300 seconds (min of 60). +// Specify 0 to prevent timeout. +// +// BREAKPAD_SEND_AND_EXIT If true, the handler will exit after sending. +// This will prevent any other handler (e.g., +// CrashReporter) from getting the crash. +// Defaults TO YES +// +// BREAKPAD_DUMP_DIRECTORY The directory to store crash-dumps +// in. By default, we use +// ~/Library/Breakpad/ +// The path you specify here is tilde-expanded. +// +// BREAKPAD_INSPECTOR_LOCATION The full path to the Inspector executable. +// Defaults to /Inspector +// +// BREAKPAD_REPORTER_EXE_LOCATION The full path to the Reporter/sender +// executable. +// Default: +// /crash_report_sender.app +// +// BREAKPAD_LOGFILES Indicates an array of log file paths that +// should be uploaded at crash time. +// +// BREAKPAD_REQUEST_COMMENTS If true, the message dialog will have a +// text box for the user to enter comments. +// Default: NO +// +// BREAKPAD_REQUEST_EMAIL If true and BREAKPAD_REQUEST_COMMENTS is also +// true, the message dialog will have a text +// box for the user to enter their email address. +// Default: NO +// +// BREAKPAD_SERVER_TYPE A parameter that tells Breakpad how to +// rewrite the upload parameters for a specific +// server type. The currently valid values are +// 'socorro' or 'google'. If you want to add +// other types, see the function in +// crash_report_sender.m that maps parameters to +// URL parameters. Defaults to 'google'. +// +// BREAKPAD_SERVER_PARAMETER_DICT A plist dictionary of static +// parameters that are uploaded to the +// server. The parameters are sent as +// is to the crash server. Their +// content isn't added to the minidump +// but pass as URL parameters when +// uploading theminidump to the crash +// server. +//============================================================================= +// The BREAKPAD_PRODUCT, BREAKPAD_VERSION and BREAKPAD_URL are +// required to have non-NULL values. By default, the BREAKPAD_PRODUCT +// will be the CFBundleName and the BREAKPAD_VERSION will be the +// CFBundleVersion when these keys are present in the bundle's +// Info.plist, which is usually passed in to BreakpadCreate() as an +// NSDictionary (you could also pass in another dictionary that had +// the same keys configured). If the BREAKPAD_PRODUCT or +// BREAKPAD_VERSION are ultimately undefined, BreakpadCreate() will +// fail. You have been warned. +// +// If you are running in a debugger, Breakpad will not install, unless the +// BREAKPAD_IGNORE_DEBUGGER envionment variable is set and/or non-zero. +// +// The BREAKPAD_SKIP_CONFIRM and BREAKPAD_SEND_AND_EXIT default +// values are NO and YES. However, they can be controlled by setting their +// values in a user or global plist. +// +// It's easiest to use Breakpad via the Framework, but if you're compiling the +// code in directly, BREAKPAD_INSPECTOR_LOCATION and +// BREAKPAD_REPORTER_EXE_LOCATION allow you to specify custom paths +// to the helper executables. +// +//============================================================================= +// The following are NOT user-supplied but are documented here for +// completeness. They are calculated by Breakpad during initialization & +// crash-dump generation, or entered in by the user. +// +// BREAKPAD_PROCESS_START_TIME The time, in seconds since the Epoch, the +// process started +// +// BREAKPAD_PROCESS_CRASH_TIME The time, in seconds since the Epoch, the +// process crashed. +// +// BREAKPAD_PROCESS_UP_TIME The total time in milliseconds the process +// has been running. This parameter is not +// set until the crash-dump-generation phase. +// +// BREAKPAD_LOGFILE_KEY_PREFIX Used to find out which parameters in the +// parameter dictionary correspond to log +// file paths. +// +// BREAKPAD_SERVER_PARAMETER_PREFIX This prefix is used by Breakpad +// internally, because Breakpad uses +// the same dictionary internally to +// track both its internal +// configuration parameters and +// parameters meant to be uploaded +// to the server. This string is +// used internally by Breakpad to +// prefix user-supplied parameter +// names so those can be sent to the +// server without leaking Breakpad's +// internal values. +// +// BREAKPAD_ON_DEMAND Used internally to indicate to the +// Reporter that we're sending on-demand, +// not as result of a crash. +// +// BREAKPAD_COMMENTS The text the user provided as comments. +// Only used in crash_report_sender. + +// Returns a new BreakpadRef object on success, NULL otherwise. +BreakpadRef BreakpadCreate(NSDictionary *parameters); + +// Uninstall and release the data associated with |ref|. +void BreakpadRelease(BreakpadRef ref); + +// Clients may set an optional callback which gets called when a crash +// occurs. The callback function should return |true| if we should +// handle the crash, generate a crash report, etc. or |false| if we +// should ignore it and forward the crash (normally to CrashReporter). +// Context is a pointer to arbitrary data to make the callback with. +void BreakpadSetFilterCallback(BreakpadRef ref, + BreakpadFilterCallback callback, + void *context); + +// User defined key and value string storage. Generally this is used +// to configure Breakpad's internal operation, such as whether the +// crash_sender should prompt the user, or the filesystem location for +// the minidump file. See Breakpad.h for some parameters that can be +// set. Anything longer than 255 bytes will be truncated. Note that +// the string is converted to UTF8 before truncation, so any multibyte +// character that straddles the 255(256 - 1 for terminator) byte limit +// will be mangled. +// +// A maximum number of 64 key/value pairs are supported. An assert() +// will fire if more than this number are set. Unfortunately, right +// now, the same dictionary is used for both Breakpad's parameters AND +// the Upload parameters. +// +// TODO (nealsid): Investigate how necessary this is if we don't +// automatically upload parameters to the server anymore. +// TODO (nealsid): separate server parameter dictionary from the +// dictionary used to configure Breakpad, and document limits for each +// independently. +void BreakpadSetKeyValue(BreakpadRef ref, NSString *key, NSString *value); +NSString *BreakpadKeyValue(BreakpadRef ref, NSString *key); +void BreakpadRemoveKeyValue(BreakpadRef ref, NSString *key); + +// You can use this method to specify parameters that will be uploaded +// to the crash server. They will be automatically encoded as +// necessary. Note that as mentioned above there are limits on both +// the number of keys and their length. +void BreakpadAddUploadParameter(BreakpadRef ref, NSString *key, + NSString *value); + +// This method will remove a previously-added parameter from the +// upload parameter set. +void BreakpadRemoveUploadParameter(BreakpadRef ref, NSString *key); + +// Add a log file for Breakpad to read and send upon crash dump +void BreakpadAddLogFile(BreakpadRef ref, NSString *logPathname); + +// Generate a minidump and send +void BreakpadGenerateAndSendReport(BreakpadRef ref); + +void BreakpadSetComment( BreakpadRef ref, char const *pchComment ); + +#ifdef __cplusplus +} +#endif diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Headers/BreakpadDefines.h b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Headers/BreakpadDefines.h new file mode 100644 index 0000000..8986cd1 --- /dev/null +++ b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Headers/BreakpadDefines.h @@ -0,0 +1,72 @@ +// Copyright (c) 2011, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Keys for configuration file +#define kReporterMinidumpDirectoryKey "MinidumpDir" +#define kReporterMinidumpIDKey "MinidumpID" + +// Filename for recording uploaded IDs +#define kReporterLogFilename "uploads.log" + +// The default subdirectory of the Library to put crash dumps in +// The subdirectory is +// ~/Library// +#define kDefaultLibrarySubdirectory "Breakpad" + +// Specify some special keys to be used in the configuration file that is +// generated by Breakpad and consumed by the crash_sender. +#define BREAKPAD_PRODUCT "BreakpadProduct" +#define BREAKPAD_PRODUCT_DISPLAY "BreakpadProductDisplay" +#define BREAKPAD_VERSION "BreakpadVersion" +#define BREAKPAD_VENDOR "BreakpadVendor" +#define BREAKPAD_URL "BreakpadURL" +#define BREAKPAD_REPORT_INTERVAL "BreakpadReportInterval" +#define BREAKPAD_SKIP_CONFIRM "BreakpadSkipConfirm" +#define BREAKPAD_CONFIRM_TIMEOUT "BreakpadConfirmTimeout" +#define BREAKPAD_SEND_AND_EXIT "BreakpadSendAndExit" +#define BREAKPAD_DUMP_DIRECTORY "BreakpadMinidumpLocation" +#define BREAKPAD_INSPECTOR_LOCATION "BreakpadInspectorLocation" +#define BREAKPAD_REPORTER_EXE_LOCATION \ + "BreakpadReporterExeLocation" +#define BREAKPAD_LOGFILES "BreakpadLogFiles" +#define BREAKPAD_LOGFILE_UPLOAD_SIZE "BreakpadLogFileTailSize" +#define BREAKPAD_REQUEST_COMMENTS "BreakpadRequestComments" +#define BREAKPAD_COMMENTS "BreakpadComments" +#define BREAKPAD_REQUEST_EMAIL "BreakpadRequestEmail" +#define BREAKPAD_EMAIL "BreakpadEmail" +#define BREAKPAD_SERVER_TYPE "BreakpadServerType" +#define BREAKPAD_SERVER_PARAMETER_DICT "BreakpadServerParameters" + +// The keys below are NOT user supplied, and are used internally. +#define BREAKPAD_PROCESS_START_TIME "BreakpadProcStartTime" +#define BREAKPAD_PROCESS_UP_TIME "BreakpadProcessUpTime" +#define BREAKPAD_PROCESS_CRASH_TIME "BreakpadProcessCrashTime" +#define BREAKPAD_LOGFILE_KEY_PREFIX "BreakpadAppLogFile" +#define BREAKPAD_SERVER_PARAMETER_PREFIX "BreakpadServerParameterPrefix_" +#define BREAKPAD_ON_DEMAND "BreakpadOnDemand" diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/Info.plist b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/Info.plist new file mode 100644 index 0000000..1113206 --- /dev/null +++ b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/Info.plist @@ -0,0 +1,38 @@ + + + + + BuildMachineOSBuild + 11G63 + CFBundleDevelopmentRegion + English + CFBundleExecutable + Breakpad + CFBundleIdentifier + com.googlecode.google-breakpad + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Breakpad + CFBundlePackageType + FMWK + CFBundleSignature + ???? + CFBundleVersion + 1.0 + DTCompiler + com.apple.compilers.llvm.clang.1_0.compiler + DTPlatformBuild + 4E3002 + DTPlatformVersion + GM + DTSDKBuild + 10K549 + DTSDKName + macosx10.6 + DTXcode + 0433 + DTXcodeBuild + 4E3002 + + diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/Inspector b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/Inspector new file mode 100644 index 0000000..e4d6ca5 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/Inspector differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/breakpadUtilities.dylib b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/breakpadUtilities.dylib new file mode 100644 index 0000000..ba6037a Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/breakpadUtilities.dylib differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Info.plist b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Info.plist new file mode 100644 index 0000000..f802b01 --- /dev/null +++ b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Info.plist @@ -0,0 +1,48 @@ + + + + + BuildMachineOSBuild + 11G63 + CFBundleDevelopmentRegion + English + CFBundleDisplayName + crash_report_sender + CFBundleExecutable + crash_report_sender + CFBundleIconFile + crash_report_sender + CFBundleIdentifier + com.Breakpad.crash_report_sender + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + crash_report_sender + CFBundlePackageType + APPL + CFBundleSignature + ???? + CFBundleVersion + 1.0 + DTCompiler + com.apple.compilers.llvm.clang.1_0.compiler + DTPlatformBuild + 4E3002 + DTPlatformVersion + GM + DTSDKBuild + 10K549 + DTSDKName + macosx10.6 + DTXcode + 0433 + DTXcodeBuild + 4E3002 + LSHasLocalizedDisplayName + + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/MacOS/crash_report_sender b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/MacOS/crash_report_sender new file mode 100644 index 0000000..14abcbf Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/MacOS/crash_report_sender differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/PkgInfo b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/PkgInfo new file mode 100644 index 0000000..bd04210 --- /dev/null +++ b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/PkgInfo @@ -0,0 +1 @@ +APPL???? \ No newline at end of file diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/Breakpad.nib b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/Breakpad.nib new file mode 100644 index 0000000..432a001 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/Breakpad.nib differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/English.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/English.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/English.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/English.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/English.lproj/Localizable.strings new file mode 100644 index 0000000..b731522 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/English.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/crash_report_sender.icns b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/crash_report_sender.icns new file mode 100644 index 0000000..e8c2124 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/crash_report_sender.icns differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/da.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/da.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/da.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/da.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/da.lproj/Localizable.strings new file mode 100644 index 0000000..59b0fae Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/da.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/de.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/de.lproj/InfoPlist.strings new file mode 100644 index 0000000..e30f049 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/de.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/de.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/de.lproj/Localizable.strings new file mode 100644 index 0000000..4fb2a0a Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/de.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/es.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/es.lproj/InfoPlist.strings new file mode 100644 index 0000000..2ddf311 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/es.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/es.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/es.lproj/Localizable.strings new file mode 100644 index 0000000..ee3c368 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/es.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/fr.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/fr.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/fr.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/fr.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/fr.lproj/Localizable.strings new file mode 100644 index 0000000..760e85a Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/fr.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/goArrow.png b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/goArrow.png new file mode 100644 index 0000000..f318a56 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/goArrow.png differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/it.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/it.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/it.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/it.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/it.lproj/Localizable.strings new file mode 100644 index 0000000..9e99cd1 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/it.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/ja.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/ja.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/ja.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/ja.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/ja.lproj/Localizable.strings new file mode 100644 index 0000000..8d8fd91 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/ja.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/nl.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/nl.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/nl.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/nl.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/nl.lproj/Localizable.strings new file mode 100644 index 0000000..affe56e Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/nl.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/no.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/no.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/no.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/no.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/no.lproj/Localizable.strings new file mode 100644 index 0000000..8849c0b Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/no.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/sl.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/sl.lproj/InfoPlist.strings new file mode 100644 index 0000000..a375f9d Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/sl.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/sl.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/sl.lproj/Localizable.strings new file mode 100644 index 0000000..3ad772d Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/sl.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/sv.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/sv.lproj/InfoPlist.strings new file mode 100644 index 0000000..ae230ab Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/sv.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/sv.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/sv.lproj/Localizable.strings new file mode 100644 index 0000000..ffcce74 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/sv.lproj/Localizable.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/tr.lproj/InfoPlist.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/tr.lproj/InfoPlist.strings new file mode 100644 index 0000000..3a0f347 Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/tr.lproj/InfoPlist.strings differ diff --git a/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/tr.lproj/Localizable.strings b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/tr.lproj/Localizable.strings new file mode 100644 index 0000000..05acb9b Binary files /dev/null and b/tools/ContentBuilder/builder_osx/frameworks/Breakpad.framework/Versions/Current/Resources/crash_report_sender.app/Contents/Resources/tr.lproj/Localizable.strings differ diff --git a/tools/drm/drmtoolp.exe b/tools/drm/drmtoolp.exe index bbd913b..68e76ab 100644 Binary files a/tools/drm/drmtoolp.exe and b/tools/drm/drmtoolp.exe differ diff --git a/tools/drm/ubuntu12_32/drmtoolp b/tools/drm/ubuntu12_32/drmtoolp index 856700f..b824e3b 100644 Binary files a/tools/drm/ubuntu12_32/drmtoolp and b/tools/drm/ubuntu12_32/drmtoolp differ diff --git a/tools/drm/ubuntu12_32/drmunpackp.so b/tools/drm/ubuntu12_32/drmunpackp.so index c7f448b..12f6fd5 100644 Binary files a/tools/drm/ubuntu12_32/drmunpackp.so and b/tools/drm/ubuntu12_32/drmunpackp.so differ diff --git a/tools/drm/ubuntu12_32/steamdrmp.so b/tools/drm/ubuntu12_32/steamdrmp.so index 99c6b3f..1ba15f7 100644 Binary files a/tools/drm/ubuntu12_32/steamdrmp.so and b/tools/drm/ubuntu12_32/steamdrmp.so differ diff --git a/tools/drm/ubuntu12_64/drmtoolp b/tools/drm/ubuntu12_64/drmtoolp index 881bf4e..fb7ba33 100644 Binary files a/tools/drm/ubuntu12_64/drmtoolp and b/tools/drm/ubuntu12_64/drmtoolp differ diff --git a/tools/drm/ubuntu12_64/drmunpackp.so b/tools/drm/ubuntu12_64/drmunpackp.so index 3cce832..fec16ea 100644 Binary files a/tools/drm/ubuntu12_64/drmunpackp.so and b/tools/drm/ubuntu12_64/drmunpackp.so differ diff --git a/tools/drm/ubuntu12_64/steamdrmp.so b/tools/drm/ubuntu12_64/steamdrmp.so index c15dc6c..a20591f 100644 Binary files a/tools/drm/ubuntu12_64/steamdrmp.so and b/tools/drm/ubuntu12_64/steamdrmp.so differ