diff --git a/.gitignore b/.gitignore index a007fea..4ec6f58 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ build/* +_out/* +.vs/* diff --git a/CMakeLists.txt b/CMakeLists.txt index 603293a..0ad16ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -83,4 +83,6 @@ if (BUILD_SAMPLES) add_subdirectory(samples/SDKDllDirectRefSample) add_subdirectory(samples/PartnerDataAPI) add_subdirectory(samples/CubeSample) + add_subdirectory(samples/PreWarmSample) + add_subdirectory(samples/OpenClientBrowser) endif () diff --git a/README.md b/README.md index 8711e1e..796d3af 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# NVIDIA GeForce NOW SDK Release 2.3 +# NVIDIA GeForce NOW SDK Release 2.4 ## At a Glance @@ -18,14 +18,12 @@ Please refer to the [SDK GFN Primer](./doc/SDK-GFN-PRIMER.pdf) for a more detail ### What's New in This Release -* Added two new samples - CubeSample and PartnerDataAPI. -* Added documentation for integrating this SDK with Epic Games' Unreal Engine. - * See SDK-GFN-UNREALENGINE-INTEGRATION-GUIDE.pdf in the doc folder for more details. -* Added Virtual Studio 2022 support -* Improved documentation throughout the SDK. +* Added `gfnOpenURLOnClient` API for app to request client application to open a URL in their local web browser. +* Added `OpenClientBrowser` sample to demonstrate `gfnOpenURLOnClient` API usage. +* Added `PreWarmSample` sample to demonstrate usage of the APIs and callbacks associated with PreWarm feature. +* Added touch input support to `CubeSample` app. * Various bug fixes and improvements. - ## GeForce NOW Developer Portal * Please [contact us](mailto:gdp-queries@nvidia.com) to register your organization or game with the GeForce NOW Developer Portal. @@ -88,7 +86,9 @@ The distribution is laid out as below: ├───CloudCheckAPI ├───Common ├───CubeSample + ├───OpenClientBrowser ├───PartnerDataAPI + ├───PreWarmSample ├───SampleLauncher └───SDKDllDirectRefSample diff --git a/doc/SDK-GFN-ACCOUNT-LINKING-SSO-GUIDE.pdf b/doc/SDK-GFN-ACCOUNT-LINKING-SSO-GUIDE.pdf index 2584a0a..3392dd0 100644 Binary files a/doc/SDK-GFN-ACCOUNT-LINKING-SSO-GUIDE.pdf and b/doc/SDK-GFN-ACCOUNT-LINKING-SSO-GUIDE.pdf differ diff --git a/doc/SDK-GFN-CLOUD-API.pdf b/doc/SDK-GFN-CLOUD-API.pdf index bd19a0f..34f4001 100644 Binary files a/doc/SDK-GFN-CLOUD-API.pdf and b/doc/SDK-GFN-CLOUD-API.pdf differ diff --git a/doc/SDK-GFN-DEEP-LINKING.pdf b/doc/SDK-GFN-DEEP-LINKING.pdf index f72d105..528fead 100644 Binary files a/doc/SDK-GFN-DEEP-LINKING.pdf and b/doc/SDK-GFN-DEEP-LINKING.pdf differ diff --git a/doc/SDK-GFN-IP-API-GUIDE.pdf b/doc/SDK-GFN-IP-API-GUIDE.pdf index 550cef9..a766531 100644 Binary files a/doc/SDK-GFN-IP-API-GUIDE.pdf and b/doc/SDK-GFN-IP-API-GUIDE.pdf differ diff --git a/doc/SDK-GFN-MOBILE-TOUCH-INTEGRATION-GUIDE.pdf b/doc/SDK-GFN-MOBILE-TOUCH-INTEGRATION-GUIDE.pdf index 5e98e05..7ebf19d 100644 Binary files a/doc/SDK-GFN-MOBILE-TOUCH-INTEGRATION-GUIDE.pdf and b/doc/SDK-GFN-MOBILE-TOUCH-INTEGRATION-GUIDE.pdf differ diff --git a/doc/SDK-GFN-PRIMER.pdf b/doc/SDK-GFN-PRIMER.pdf index 94275cf..4114bb4 100644 Binary files a/doc/SDK-GFN-PRIMER.pdf and b/doc/SDK-GFN-PRIMER.pdf differ diff --git a/doc/SDK-GFN-QUICK-START-GUIDE.pdf b/doc/SDK-GFN-QUICK-START-GUIDE.pdf index 6a4add8..47231f6 100644 Binary files a/doc/SDK-GFN-QUICK-START-GUIDE.pdf and b/doc/SDK-GFN-QUICK-START-GUIDE.pdf differ diff --git a/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___c_a_p_i_8h.html b/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___c_a_p_i_8h.html index 7fb6b5a..18db153 100644 --- a/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___c_a_p_i_8h.html +++ b/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___c_a_p_i_8h.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
@@ -398,6 +398,8 @@   NVGFNSDK_EXPORT GfnRuntimeError gfnSendMessage (const char *pchMessage, unsigned int length)   +NVGFNSDK_EXPORT GfnRuntimeError gfnOpenURLOnClient (const char *pchUrl) + 

Detailed Description

API definitions

@@ -609,7 +611,7 @@

Function Documentation

- +
gfnSuccess- On success when running in a GeForce NOW environment
gfnInvalidParameter- If callback was NULL
gfnCloudLibraryNotFound- If the on-seat dll was not present (Usually due to not running on a seat)
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- If the API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- If the on-seat dll detected that it was not on a game seat
@@ -656,7 +658,7 @@

Function Documentation

- +
gfnSuccess- On success when running in a GFN environment
gfnInvalidParameter- If callback was NULL
gfnCloudLibraryNotFound- If the on-seat dll was not present (Usually due to not running on a seat)
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- If the API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- If the on-seat dll detected that it was not on a game seat
@@ -710,7 +712,7 @@

Function Documentation

- +
gfnSuccess- On success when running in a GeForce NOW environment
gfnInvalidParameter- If callback was NULL
gfnCloudLibraryNotFound- If the on-seat dll was not present (Usually due to not running on a seat)
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- If the API was not found in the GFN SDK Library
gfnCallWrongEnvironment- If the on-seat dll detected that it was not on a game seat
@@ -801,7 +803,7 @@

Function Documentation

- +
gfnSuccess- On success when running in a GeForce NOW environment
gfnInvalidParameter- If callback was NULL
gfnCloudLibraryNotFound- If the on-seat dll was not present (Usually due to not running on a seat)
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- If the API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- If the on-seat dll detected that it was not on a game seat
diff --git a/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___c_a_p_i_8h_source.html b/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___c_a_p_i_8h_source.html index caccc45..87b456e 100644 --- a/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___c_a_p_i_8h_source.html +++ b/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___c_a_p_i_8h_source.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
@@ -90,19 +90,19 @@
GfnRuntimeSdk_CAPI.h
-Go to the documentation of this file.
1 // This code contains NVIDIA Confidential Information and is disclosed to you
2 // under a form of NVIDIA software license agreement provided separately to you.
3 //
4 // Notice
5 // NVIDIA Corporation and its licensors retain all intellectual property and
6 // proprietary rights in and to this software and related documentation and
7 // any modifications thereto. Any use, reproduction, disclosure, or
8 // distribution of this software and related documentation without an express
9 // license agreement from NVIDIA Corporation is strictly prohibited.
10 //
11 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
12 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
13 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
14 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
15 //
16 // Information and code furnished is believed to be accurate and reliable.
17 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
18 // information or for any infringement of patents or other rights of third parties that may
19 // result from its use. No license is granted by implication or otherwise under any patent
20 // or patent rights of NVIDIA Corporation. Details are subject to change without notice.
21 // This code supersedes and replaces all information previously supplied.
22 // NVIDIA Corporation products are not authorized for use as critical
23 // components in life support devices or systems without express written approval of
24 // NVIDIA Corporation.
25 //
26 // Copyright (c) 2020-2021 NVIDIA Corporation. All rights reserved.
27 
28 //
29 // ===============================================================================================
30 //
31 // C API declarations for GFN Runtime SDK
32 //
33 // ===============================================================================================
39 
290 #ifndef GFN_SDK_RUNTIME_CAPI_H
291 #define GFN_SDK_RUNTIME_CAPI_H
292 
293 
294 #include "GfnSdk.h"
295 
296 // Defining GfnRuntimeError for backwards compatibility
297 #define GfnRuntimeError GfnError
298 
299 #ifdef __cplusplus
300  extern "C"
301  {
302 #endif
303  // ============================================================================================
304  // Constants/Enums
305  // ============================================================================================
306 
311  {
315 
320  {
326 
328  typedef struct StartStreamResponse
329  {
330  bool downloaded;
332 
334  typedef void(GFN_CALLBACK *StartStreamCallbackSig)(GfnRuntimeError, StartStreamResponse*, void* context);
335 
337  typedef void(GFN_CALLBACK* StopStreamCallbackSig)(GfnRuntimeError, void* context);
338 
340  typedef struct StartStreamInput
341  {
342  unsigned int uiTitleId;
343  const char* pchPartnerData;
344  const char* pchPartnerSecureData;
346 
349  {
350  const char* pchPlatformAppId;
351  const char* pchBuildPath;
352  const char* pchMetadataPath;
354 
356  typedef enum GfnStreamStatus
357  {
366  } GfnStreamStatus;
367 
369  inline const char* GfnStreamStatusToString(GfnStreamStatus status)
370  {
371  switch (status)
372  {
373  case GfnStreamStatusInit: return "Init";
374  case GfnStreamStatusNetworkTest: return "NetworkTest";
375  case GfnStreamStatusLoading: return "Loading";
376  case GfnStreamStatusStreaming: return "Streaming";
377  case GfnStreamStatusDone: return "Done";
378  case GfnStreamStatusError: return "Error";
379  case GfnStreamStatusGotInputFocus: return "GotInputFocus";
380  case GfnStreamStatusLostInputFocus: return "LostInputFocus";
381  }
382  return "Unknown GfnStreamStatus";
383  }
384 
385 
388  typedef enum GfnActionType
389  {
393  } GfnActionType;
394 
395 
396  #define IP_V4_SIZE (17) // INET_ADDRSTRLEN + NULL
397  #define IP_V6_SIZE (49) // INET6_ADDRSTRLEN + NULL
398  #define CC_SIZE (3) // ISO 3166-1 Alpha-2
399  #define LOCALE_SIZE (6) // ISO 639-1 Alpha-2
400  #define SESSION_ID_SIZE (38)
401 
403  typedef enum GfnOsType
404  {
405  gfnUnknownOs = 0,
406  gfnWindows = 1,
407  gfnMacOs = 2,
408  gfnShield = 3,
409  gfnAndroid = 4,
410  gfnIOs = 5,
411  gfnIPadOs = 6,
412  gfnChromeOs = 7,
413  gfnLinux = 8,
414  gfnTizen = 9,
415  gfnWebOs = 10,
416  gfnTvOs = 11,
417  gfnOsTypeMax = 11
418  } GfnOsType;
419 
421  typedef struct
422  {
423  unsigned int version;
425  char ipV4[IP_V4_SIZE];
426  char country[CC_SIZE];
427  char locale[LOCALE_SIZE];
428  unsigned int RTDAverageLatencyMs;
430  } GfnClientInfo;
431 
434  {
435  gfnOs = 0,
436  gfnIP = 1,
441 
443  typedef struct GfnClientInfoUpdateData
444  {
445  unsigned int version;
447  union
448  {
450  char ipV4[IP_V4_SIZE];
453  } data;
455 
458  {
462 
465  {
466  unsigned int version;
468  union
469  {
470  unsigned int RTDAverageLatencyMs;
471  } data;
473 
474 
476  typedef struct
477  {
478  unsigned int sessionMaxDurationSec;
479  unsigned int sessionTimeRemainingSec;
480  char sessionId[SESSION_ID_SIZE];
482  } GfnSessionInfo;
483 
485  typedef struct GfnCloudCheckChallenge
486  {
487  const char* nonce;
488  unsigned int nonceSize;
490 
492  typedef struct GfnCloudCheckResponse
493  {
494  const char* attestationData;
495  unsigned int attestationDataSize;
497 
498  // ============================================================================================
499  // Callback signatures
500  // ============================================================================================
501 
502  // Callbacks that client code should implement and register via the appropriate callback
503  // registration function (listed as part of the C API below).
511  typedef GfnApplicationCallbackResult(GFN_CALLBACK *StreamStatusCallbackSig)(GfnStreamStatus status, void* pUserContext);
516  typedef GfnApplicationCallbackResult(GFN_CALLBACK* SessionInitCallbackSig)(const char* partnerInfoMutable, void* pUserContext);
522  typedef GfnApplicationCallbackResult(GFN_CALLBACK* MessageCallbackSig)(const GfnString* pStrData, void* pUserContext);
523 
524  // ============================================================================================
525  // C API
526  // ============================================================================================
527 
528  // ============================================================================================
529  // SDK Initialization / Shutdown
530 
534 
559 
574 
579 
608  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterExitCallback(ExitCallbackSig exitCallback, void* pUserContext);
609 
637  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void* pUserContext);
638 
664  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterInstallCallback(InstallCallbackSig installCallback, void* pUserContext);
666 
688  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void* pUserContext);
690 
714  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterSaveCallback(SaveCallbackSig saveCallback, void* pUserContext);
716 
745  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void* pUserContext);
747 
773  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterMessageCallback(MessageCallbackSig messageCallback, void* pUserContext);
796  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterClientInfoCallback(ClientInfoCallbackSig clientInfoCallback, void* pUserContext);
798 
822  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void* pUserContext);
824 
825  // ============================================================================================
826  // Application -> GeForce NOW SDK communication
827  // The application should call these methods at the appropriate locations.
832 
862 
893 
922  NVGFNSDK_EXPORT GfnRuntimeError gfnCloudCheck(const GfnCloudCheckChallenge* challenge, GfnCloudCheckResponse* response, bool* isCloudEnvironment);
923 
944  NVGFNSDK_EXPORT bool NVGFNSDKApi gfnIsTitleAvailable(const char* pchPlatformAppId);
945 
969  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetTitlesAvailable(const char** ppchPlatformAppIds);
970 
996  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnSetupTitle(const char* pchPlatformAppId);
997 
1021  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnTitleExited(const char* pchPlatformId, const char* pchPlatformAppId);
1022 
1055  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetClientIp(const char** ppchClientIp);
1056 
1082  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetClientLanguageCode(const char** ppchLanguageCode);
1083 
1106  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetClientCountryCode(char* pchCountryCode, unsigned int length);
1122 
1135  NVGFNSDK_EXPORT GfnRuntimeError gfnGetClientInfo(GfnClientInfo* clientInfo);
1136 
1152 
1164  NVGFNSDK_EXPORT GfnRuntimeError gfnGetSessionInfo(GfnSessionInfo* sessionInfo);
1165 
1183  NVGFNSDK_EXPORT void NVGFNSDKApi gfnStartStreamAsync(const StartStreamInput * pStartStreamInput, StartStreamCallbackSig cb, void* context, unsigned int timeoutMs);
1184 
1207  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnStartStream(StartStreamInput* pStartStreamInput, StartStreamResponse* response);
1208 
1227  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnStopStream(void);
1228 
1246  NVGFNSDK_EXPORT void NVGFNSDKApi gfnStopStreamAsync(StopStreamCallbackSig cb, void* context, unsigned int timeoutMs);
1247 
1271  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetPartnerData(const char** ppchPartnerData);
1272 
1296  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetPartnerSecureData(const char** ppchPartnerSecureData);
1297 
1318  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnFree(const char** ppchData);
1319 
1320 
1339  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnAppReady(bool success, const char * status);
1340 
1366  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnSetActionZone(GfnActionType type, unsigned int id, GfnRect* zone);
1367 
1394  NVGFNSDK_EXPORT GfnRuntimeError gfnSendMessage(const char* pchMessage, unsigned int length);
1395 
1397 #ifdef __cplusplus
1398  } // extern "C"
1399 #endif
1400 
1401 
1402 #endif // GFN_SDK_RUNTIME_CAPI_H
GfnApplicationCallbackResult(GFN_CALLBACK * ExitCallbackSig)(void *pUserContext)
Callback function for notification when a game should exit due to session shutdown request...
Definition: GfnRuntimeSdk_CAPI.h:505
-
GfnOsType
Types of operating systems that can be reported by the SDK.
Definition: GfnRuntimeSdk_CAPI.h:403
-
An update notification for a piece of client info data.
Definition: GfnRuntimeSdk_CAPI.h:443
-
unsigned int sessionTimeRemainingSec
Nominal time remaining in the session in seconds.
Definition: GfnRuntimeSdk_CAPI.h:479
-
GfnRect safeZone
Client safe zone rectangle (title-safe area), in normalized coordinates. If the entire screen is titl...
Definition: GfnRuntimeSdk_CAPI.h:452
+Go to the documentation of this file.
1 // This code contains NVIDIA Confidential Information and is disclosed to you
2 // under a form of NVIDIA software license agreement provided separately to you.
3 //
4 // Notice
5 // NVIDIA Corporation and its licensors retain all intellectual property and
6 // proprietary rights in and to this software and related documentation and
7 // any modifications thereto. Any use, reproduction, disclosure, or
8 // distribution of this software and related documentation without an express
9 // license agreement from NVIDIA Corporation is strictly prohibited.
10 //
11 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
12 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
13 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
14 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
15 //
16 // Information and code furnished is believed to be accurate and reliable.
17 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
18 // information or for any infringement of patents or other rights of third parties that may
19 // result from its use. No license is granted by implication or otherwise under any patent
20 // or patent rights of NVIDIA Corporation. Details are subject to change without notice.
21 // This code supersedes and replaces all information previously supplied.
22 // NVIDIA Corporation products are not authorized for use as critical
23 // components in life support devices or systems without express written approval of
24 // NVIDIA Corporation.
25 //
26 // Copyright (c) 2020-2021 NVIDIA Corporation. All rights reserved.
27 
28 //
29 // ===============================================================================================
30 //
31 // C API declarations for GFN Runtime SDK
32 //
33 // ===============================================================================================
39 
296 #ifndef GFN_SDK_RUNTIME_CAPI_H
297 #define GFN_SDK_RUNTIME_CAPI_H
298 
299 
300 #include "GfnSdk.h"
301 
302 // Defining GfnRuntimeError for backwards compatibility
303 #define GfnRuntimeError GfnError
304 
305 #ifdef __cplusplus
306  extern "C"
307  {
308 #endif
309  // ============================================================================================
310  // Constants/Enums
311  // ============================================================================================
312 
317  {
321 
326  {
332 
334  typedef struct StartStreamResponse
335  {
336  bool downloaded;
338 
340  typedef void(GFN_CALLBACK *StartStreamCallbackSig)(GfnRuntimeError, StartStreamResponse*, void* context);
341 
343  typedef void(GFN_CALLBACK* StopStreamCallbackSig)(GfnRuntimeError, void* context);
344 
346  typedef struct StartStreamInput
347  {
348  unsigned int uiTitleId;
349  const char* pchPartnerData;
350  const char* pchPartnerSecureData;
352 
355  {
356  const char* pchPlatformAppId;
357  const char* pchBuildPath;
358  const char* pchMetadataPath;
360 
362  typedef enum GfnStreamStatus
363  {
372  } GfnStreamStatus;
373 
375  inline const char* GfnStreamStatusToString(GfnStreamStatus status)
376  {
377  switch (status)
378  {
379  case GfnStreamStatusInit: return "Init";
380  case GfnStreamStatusNetworkTest: return "NetworkTest";
381  case GfnStreamStatusLoading: return "Loading";
382  case GfnStreamStatusStreaming: return "Streaming";
383  case GfnStreamStatusDone: return "Done";
384  case GfnStreamStatusError: return "Error";
385  case GfnStreamStatusGotInputFocus: return "GotInputFocus";
386  case GfnStreamStatusLostInputFocus: return "LostInputFocus";
387  }
388  return "Unknown GfnStreamStatus";
389  }
390 
391 
394  typedef enum GfnActionType
395  {
399  } GfnActionType;
400 
401 
402  #define IP_V4_SIZE (17) // INET_ADDRSTRLEN + NULL
403  #define IP_V6_SIZE (49) // INET6_ADDRSTRLEN + NULL
404  #define CC_SIZE (3) // ISO 3166-1 Alpha-2
405  #define LOCALE_SIZE (6) // ISO 639-1 Alpha-2
406  #define SESSION_ID_SIZE (38)
407 
409  typedef enum GfnOsType
410  {
411  gfnUnknownOs = 0,
412  gfnWindows = 1,
413  gfnMacOs = 2,
414  gfnShield = 3,
415  gfnAndroid = 4,
416  gfnIOs = 5,
417  gfnIPadOs = 6,
418  gfnChromeOs = 7,
419  gfnLinux = 8,
420  gfnTizen = 9,
421  gfnWebOs = 10,
422  gfnTvOs = 11,
423  gfnOsTypeMax = 11
424  } GfnOsType;
425 
427  typedef struct
428  {
429  unsigned int version;
431  char ipV4[IP_V4_SIZE];
432  char country[CC_SIZE];
433  char locale[LOCALE_SIZE];
434  unsigned int RTDAverageLatencyMs;
436  } GfnClientInfo;
437 
440  {
441  gfnOs = 0,
442  gfnIP = 1,
447 
449  typedef struct GfnClientInfoUpdateData
450  {
451  unsigned int version;
453  union
454  {
456  char ipV4[IP_V4_SIZE];
459  } data;
461 
464  {
468 
471  {
472  unsigned int version;
474  union
475  {
476  unsigned int RTDAverageLatencyMs;
477  } data;
479 
480 
482  typedef struct
483  {
484  unsigned int sessionMaxDurationSec;
485  unsigned int sessionTimeRemainingSec;
486  char sessionId[SESSION_ID_SIZE];
488  } GfnSessionInfo;
489 
491  typedef struct GfnCloudCheckChallenge
492  {
493  const char* nonce;
494  unsigned int nonceSize;
496 
498  typedef struct GfnCloudCheckResponse
499  {
500  const char* attestationData;
501  unsigned int attestationDataSize;
503 
504  // ============================================================================================
505  // Callback signatures
506  // ============================================================================================
507 
508  // Callbacks that client code should implement and register via the appropriate callback
509  // registration function (listed as part of the C API below).
517  typedef GfnApplicationCallbackResult(GFN_CALLBACK *StreamStatusCallbackSig)(GfnStreamStatus status, void* pUserContext);
522  typedef GfnApplicationCallbackResult(GFN_CALLBACK* SessionInitCallbackSig)(const char* partnerInfoMutable, void* pUserContext);
528  typedef GfnApplicationCallbackResult(GFN_CALLBACK* MessageCallbackSig)(const GfnString* pStrData, void* pUserContext);
529 
530  // ============================================================================================
531  // C API
532  // ============================================================================================
533 
534  // ============================================================================================
535  // SDK Initialization / Shutdown
536 
540 
565 
580 
585 
614  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterExitCallback(ExitCallbackSig exitCallback, void* pUserContext);
615 
643  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void* pUserContext);
644 
670  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterInstallCallback(InstallCallbackSig installCallback, void* pUserContext);
672 
694  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void* pUserContext);
696 
720  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterSaveCallback(SaveCallbackSig saveCallback, void* pUserContext);
722 
751  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void* pUserContext);
753 
779  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterMessageCallback(MessageCallbackSig messageCallback, void* pUserContext);
802  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterClientInfoCallback(ClientInfoCallbackSig clientInfoCallback, void* pUserContext);
804 
828  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void* pUserContext);
830 
831  // ============================================================================================
832  // Application -> GeForce NOW SDK communication
833  // The application should call these methods at the appropriate locations.
838 
868 
899 
928  NVGFNSDK_EXPORT GfnRuntimeError gfnCloudCheck(const GfnCloudCheckChallenge* challenge, GfnCloudCheckResponse* response, bool* isCloudEnvironment);
929 
950  NVGFNSDK_EXPORT bool NVGFNSDKApi gfnIsTitleAvailable(const char* pchPlatformAppId);
951 
975  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetTitlesAvailable(const char** ppchPlatformAppIds);
976 
1002  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnSetupTitle(const char* pchPlatformAppId);
1003 
1027  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnTitleExited(const char* pchPlatformId, const char* pchPlatformAppId);
1028 
1061  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetClientIp(const char** ppchClientIp);
1062 
1088  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetClientLanguageCode(const char** ppchLanguageCode);
1089 
1112  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetClientCountryCode(char* pchCountryCode, unsigned int length);
1128 
1141  NVGFNSDK_EXPORT GfnRuntimeError gfnGetClientInfo(GfnClientInfo* clientInfo);
1142 
1158 
1170  NVGFNSDK_EXPORT GfnRuntimeError gfnGetSessionInfo(GfnSessionInfo* sessionInfo);
1171 
1189  NVGFNSDK_EXPORT void NVGFNSDKApi gfnStartStreamAsync(const StartStreamInput * pStartStreamInput, StartStreamCallbackSig cb, void* context, unsigned int timeoutMs);
1190 
1213  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnStartStream(StartStreamInput* pStartStreamInput, StartStreamResponse* response);
1214 
1233  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnStopStream(void);
1234 
1252  NVGFNSDK_EXPORT void NVGFNSDKApi gfnStopStreamAsync(StopStreamCallbackSig cb, void* context, unsigned int timeoutMs);
1253 
1277  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetPartnerData(const char** ppchPartnerData);
1278 
1302  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetPartnerSecureData(const char** ppchPartnerSecureData);
1303 
1324  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnFree(const char** ppchData);
1325 
1326 
1345  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnAppReady(bool success, const char * status);
1346 
1374  NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnSetActionZone(GfnActionType type, unsigned int id, GfnRect* zone);
1375 
1402  NVGFNSDK_EXPORT GfnRuntimeError gfnSendMessage(const char* pchMessage, unsigned int length);
1403 
1431  NVGFNSDK_EXPORT GfnRuntimeError gfnOpenURLOnClient(const char* pchUrl);
1432 
1434 #ifdef __cplusplus
1435  } // extern "C"
1436 #endif
1437 
1438 
1439 #endif // GFN_SDK_RUNTIME_CAPI_H
GfnApplicationCallbackResult(GFN_CALLBACK * ExitCallbackSig)(void *pUserContext)
Callback function for notification when a game should exit due to session shutdown request...
Definition: GfnRuntimeSdk_CAPI.h:511
+
GfnOsType
Types of operating systems that can be reported by the SDK.
Definition: GfnRuntimeSdk_CAPI.h:409
+
An update notification for a piece of client info data.
Definition: GfnRuntimeSdk_CAPI.h:449
+
unsigned int sessionTimeRemainingSec
Nominal time remaining in the session in seconds.
Definition: GfnRuntimeSdk_CAPI.h:485
+
GfnRect safeZone
Client safe zone rectangle (title-safe area), in normalized coordinates. If the entire screen is titl...
Definition: GfnRuntimeSdk_CAPI.h:458
NVGFNSDK_EXPORT GfnRuntimeError gfnGetSessionInfo(GfnSessionInfo *sessionInfo)
-
Client is actively streaming.
Definition: GfnRuntimeSdk_CAPI.h:361
-
Session info blob.
Definition: GfnRuntimeSdk_CAPI.h:476
-
GfnApplicationCallbackResult
Returned by callbacks the application registers with the GeForce NOW Runtime SDK, or passes in to asy...
Definition: GfnRuntimeSdk_CAPI.h:310
-
unsigned int version
Deprecated, value will be ignored.
Definition: GfnRuntimeSdk_CAPI.h:423
-
GfnNetworkStatusChangeType
The type of network status data which changed. This enum will likely be expanded over time...
Definition: GfnRuntimeSdk_CAPI.h:457
-
void(GFN_CALLBACK * StopStreamCallbackSig)(GfnRuntimeError, void *context)
Callback function signation for notifications on status of stop a streaming session.
Definition: GfnRuntimeSdk_CAPI.h:337
-
const char * pchPartnerSecureData
Optional secure partner data that is guaranteed to be protected through the GFN pipeline.
Definition: GfnRuntimeSdk_CAPI.h:344
+
Client is actively streaming.
Definition: GfnRuntimeSdk_CAPI.h:367
+
Session info blob.
Definition: GfnRuntimeSdk_CAPI.h:482
+
GfnApplicationCallbackResult
Returned by callbacks the application registers with the GeForce NOW Runtime SDK, or passes in to asy...
Definition: GfnRuntimeSdk_CAPI.h:316
+
unsigned int version
Deprecated, value will be ignored.
Definition: GfnRuntimeSdk_CAPI.h:429
+
GfnNetworkStatusChangeType
The type of network status data which changed. This enum will likely be expanded over time...
Definition: GfnRuntimeSdk_CAPI.h:463
+
void(GFN_CALLBACK * StopStreamCallbackSig)(GfnRuntimeError, void *context)
Callback function signation for notifications on status of stop a streaming session.
Definition: GfnRuntimeSdk_CAPI.h:343
+
const char * pchPartnerSecureData
Optional secure partner data that is guaranteed to be protected through the GFN pipeline.
Definition: GfnRuntimeSdk_CAPI.h:350
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnTitleExited(const char *pchPlatformId, const char *pchPlatformAppId)
struct TitleInstallationInformation TitleInstallationInformation
Input to the function registered via gfnRegisterInstallCallback (if any).
@@ -112,109 +112,110 @@
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterInstallCallback(InstallCallbackSig installCallback, void *pUserContext)
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnInitializeRuntimeSdk(GfnDisplayLanguage displayLanguage)
struct GfnCloudCheckResponse GfnCloudCheckResponse
Response data received in the gfnCloudCheck API.
-
GfnApplicationCallbackResult(GFN_CALLBACK * PauseCallbackSig)(void *pUserContext)
Callback function for notification when a game should pause due to user changing focus from the sessi...
Definition: GfnRuntimeSdk_CAPI.h:507
+
GfnApplicationCallbackResult(GFN_CALLBACK * PauseCallbackSig)(void *pUserContext)
Callback function for notification when a game should pause due to user changing focus from the sessi...
Definition: GfnRuntimeSdk_CAPI.h:513
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnFree(const char **ppchData)
-
const char * GfnStreamStatusToString(GfnStreamStatus status)
Converts a GfnStreamStatus enum to a human-readable string.
Definition: GfnRuntimeSdk_CAPI.h:369
-
Considered to be running in GFN Cloud, using software and hardware heuristics that are near impossibl...
Definition: GfnRuntimeSdk_CAPI.h:324
+
const char * GfnStreamStatusToString(GfnStreamStatus status)
Converts a GfnStreamStatus enum to a human-readable string.
Definition: GfnRuntimeSdk_CAPI.h:375
+
Considered to be running in GFN Cloud, using software and hardware heuristics that are near impossibl...
Definition: GfnRuntimeSdk_CAPI.h:330
NVGFNSDK_EXPORT GfnRuntimeError gfnCloudCheck(const GfnCloudCheckChallenge *challenge, GfnCloudCheckResponse *response, bool *isCloudEnvironment)
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetPartnerData(const char **ppchPartnerData)
-
unsigned int RTDAverageLatencyMs
Round Trip Delay - Average Latency in milliseconds.
Definition: GfnRuntimeSdk_CAPI.h:470
+
unsigned int RTDAverageLatencyMs
Round Trip Delay - Average Latency in milliseconds.
Definition: GfnRuntimeSdk_CAPI.h:476
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetClientCountryCode(char *pchCountryCode, unsigned int length)
-
const char * pchMetadataPath
Optionally contains the path at which game metadata can be found, else NULL.
Definition: GfnRuntimeSdk_CAPI.h:352
+
const char * pchMetadataPath
Optionally contains the path at which game metadata can be found, else NULL.
Definition: GfnRuntimeSdk_CAPI.h:358
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetTitlesAvailable(const char **ppchPlatformAppIds)
-
GfnDisplayLanguage
Values for languages supported by the GFN SDK, used to define which language any SDK dialogs should b...
Definition: GfnSdk.h:187
+
GfnDisplayLanguage
Values for languages supported by the GFN SDK, used to define which language any SDK dialogs should b...
Definition: GfnSdk.h:238
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnSetupTitle(const char *pchPlatformAppId)
-
Change in safe zone rectangle (due to device switch or rotation)
Definition: GfnRuntimeSdk_CAPI.h:438
-
struct to reference a rect
Definition: GfnSdk.h:245
-
unsigned int uiTitleId
GFN-sourced game-specific unique identifier.
Definition: GfnRuntimeSdk_CAPI.h:342
-
Considered to be running in GFN Cloud, using software and network heuristics that are difficult to ci...
Definition: GfnRuntimeSdk_CAPI.h:323
-
GfnApplicationCallbackResult(GFN_CALLBACK * StreamStatusCallbackSig)(GfnStreamStatus status, void *pUserContext)
Callback function for notifications on status of starting a streaming session. Register via gfnRegist...
Definition: GfnRuntimeSdk_CAPI.h:511
+
Change in safe zone rectangle (due to device switch or rotation)
Definition: GfnRuntimeSdk_CAPI.h:444
+
struct to reference a rect
Definition: GfnSdk.h:296
+
unsigned int uiTitleId
GFN-sourced game-specific unique identifier.
Definition: GfnRuntimeSdk_CAPI.h:348
+
Considered to be running in GFN Cloud, using software and network heuristics that are difficult to ci...
Definition: GfnRuntimeSdk_CAPI.h:329
+
GfnApplicationCallbackResult(GFN_CALLBACK * StreamStatusCallbackSig)(GfnStreamStatus status, void *pUserContext)
Callback function for notifications on status of starting a streaming session. Register via gfnRegist...
Definition: GfnRuntimeSdk_CAPI.h:517
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterMessageCallback(MessageCallbackSig messageCallback, void *pUserContext)
-
Client has successfully finished streaming.
Definition: GfnRuntimeSdk_CAPI.h:362
-
void(GFN_CALLBACK * StartStreamCallbackSig)(GfnRuntimeError, StartStreamResponse *, void *context)
Callback function signation for notifications on status of starting a streaming session.
Definition: GfnRuntimeSdk_CAPI.h:334
-
const char * nonce
A pointer to randomly generated data to be used as the payload of the challenge message. If set to nullptr GFN SDK will generate a random challenge on its own.
Definition: GfnRuntimeSdk_CAPI.h:487
+
Client has successfully finished streaming.
Definition: GfnRuntimeSdk_CAPI.h:368
+
void(GFN_CALLBACK * StartStreamCallbackSig)(GfnRuntimeError, StartStreamResponse *, void *context)
Callback function signation for notifications on status of starting a streaming session.
Definition: GfnRuntimeSdk_CAPI.h:340
+
const char * nonce
A pointer to randomly generated data to be used as the payload of the challenge message. If set to nullptr GFN SDK will generate a random challenge on its own.
Definition: GfnRuntimeSdk_CAPI.h:493
struct GfnClientInfoUpdateData GfnClientInfoUpdateData
An update notification for a piece of client info data.
-
Action to specify an editable text box rect on screen.
Definition: GfnRuntimeSdk_CAPI.h:391
-
const char * attestationData
If the cloud check is successful, the attestationData is cryptographically signed message containing ...
Definition: GfnRuntimeSdk_CAPI.h:494
-
unsigned int attestationDataSize
The size of the attestationData field in case it is not empty; zero otherwise.
Definition: GfnRuntimeSdk_CAPI.h:495
-
Client info blob.
Definition: GfnRuntimeSdk_CAPI.h:421
-
Client has gained input focus to the streamer window.
Definition: GfnRuntimeSdk_CAPI.h:364
+
Action to specify an editable text box rect on screen.
Definition: GfnRuntimeSdk_CAPI.h:397
+
const char * attestationData
If the cloud check is successful, the attestationData is cryptographically signed message containing ...
Definition: GfnRuntimeSdk_CAPI.h:500
+
unsigned int attestationDataSize
The size of the attestationData field in case it is not empty; zero otherwise.
Definition: GfnRuntimeSdk_CAPI.h:501
+
Client info blob.
Definition: GfnRuntimeSdk_CAPI.h:427
+
Client has gained input focus to the streamer window.
Definition: GfnRuntimeSdk_CAPI.h:370
struct StartStreamResponse StartStreamResponse
Output response when streaming has started.
enum GfnClientInfoChangeType GfnClientDataChangeType
Type of data which changed. This enum will be expanded over time.
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void *pUserContext)
NVGFNSDK_EXPORT void NVGFNSDKApi gfnShutdownRuntimeSdk()
-
Sentinel value, do not use.
Definition: GfnRuntimeSdk_CAPI.h:392
-
An update notification for a piece of network status data. This structure will likely be expanded ove...
Definition: GfnRuntimeSdk_CAPI.h:464
-
No event.
Definition: GfnRuntimeSdk_CAPI.h:390
-
unsigned int sessionMaxDurationSec
Maximum total time allowed for the session in seconds.
Definition: GfnRuntimeSdk_CAPI.h:478
-
const char * pchBuildPath
The path at which game build files can be found.
Definition: GfnRuntimeSdk_CAPI.h:351
-
GfnIsRunningInCloudAssurance
Returned from gfnIsRunningInCloudSecure to denote security assurance that the calling application is ...
Definition: GfnRuntimeSdk_CAPI.h:319
+
Sentinel value, do not use.
Definition: GfnRuntimeSdk_CAPI.h:398
+
An update notification for a piece of network status data. This structure will likely be expanded ove...
Definition: GfnRuntimeSdk_CAPI.h:470
+
No event.
Definition: GfnRuntimeSdk_CAPI.h:396
+
unsigned int sessionMaxDurationSec
Maximum total time allowed for the session in seconds.
Definition: GfnRuntimeSdk_CAPI.h:484
+
const char * pchBuildPath
The path at which game build files can be found.
Definition: GfnRuntimeSdk_CAPI.h:357
+
GfnIsRunningInCloudAssurance
Returned from gfnIsRunningInCloudSecure to denote security assurance that the calling application is ...
Definition: GfnRuntimeSdk_CAPI.h:325
NVGFNSDK_EXPORT bool NVGFNSDKApi gfnIsTitleAvailable(const char *pchPlatformAppId)
-
Response data received in the gfnCloudCheck API.
Definition: GfnRuntimeSdk_CAPI.h:492
+
Response data received in the gfnCloudCheck API.
Definition: GfnRuntimeSdk_CAPI.h:498
NVGFNSDK_EXPORT GfnRuntimeError gfnGetClientInfo(GfnClientInfo *clientInfo)
-
Change in OS of GFN Client.
Definition: GfnRuntimeSdk_CAPI.h:435
-
GfnApplicationCallbackResult(GFN_CALLBACK * NetworkStatusCallbackSig)(GfnNetworkStatusUpdateData *pUpdate, const void *pUserContext)
Callback function for notifications on network status changes. Register via gfnRegisterNetworkStatusC...
Definition: GfnRuntimeSdk_CAPI.h:520
+
Change in OS of GFN Client.
Definition: GfnRuntimeSdk_CAPI.h:441
+
GfnApplicationCallbackResult(GFN_CALLBACK * NetworkStatusCallbackSig)(GfnNetworkStatusUpdateData *pUpdate, const void *pUserContext)
Callback function for notifications on network status changes. Register via gfnRegisterNetworkStatusC...
Definition: GfnRuntimeSdk_CAPI.h:526
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetClientLanguageCode(const char **ppchLanguageCode)
-
Client has stopped streaming and has entered an error state.
Definition: GfnRuntimeSdk_CAPI.h:363
-
bool sessionRTXEnabled
Defines if RTX support is enabled for the session.
Definition: GfnRuntimeSdk_CAPI.h:481
-
struct to reference a string with length data
Definition: GfnSdk.h:256
-
unsigned int nonceSize
The size of the data pointed to by nonce. It is recommended that nonce is at least 16 byte (128 bit) ...
Definition: GfnRuntimeSdk_CAPI.h:488
-
GfnResolutionInfo clientResolution
Client device's physical resolution, if reported. If client does not report, expect values of zero...
Definition: GfnRuntimeSdk_CAPI.h:451
-
GfnApplicationCallbackResult(GFN_CALLBACK * ClientInfoCallbackSig)(GfnClientInfoUpdateData *pUpdate, const void *pUserContext)
Callback function for notifications on client info changes. Register via gfnRegisterClientInfoCallbac...
Definition: GfnRuntimeSdk_CAPI.h:518
-
GfnClientDataChangeType updateType
Type of GFN Client data that changed.
Definition: GfnRuntimeSdk_CAPI.h:446
+
Client has stopped streaming and has entered an error state.
Definition: GfnRuntimeSdk_CAPI.h:369
+
bool sessionRTXEnabled
Defines if RTX support is enabled for the session.
Definition: GfnRuntimeSdk_CAPI.h:487
+
struct to reference a string with length data
Definition: GfnSdk.h:307
+
unsigned int nonceSize
The size of the data pointed to by nonce. It is recommended that nonce is at least 16 byte (128 bit) ...
Definition: GfnRuntimeSdk_CAPI.h:494
+
GfnResolutionInfo clientResolution
Client device's physical resolution, if reported. If client does not report, expect values of zero...
Definition: GfnRuntimeSdk_CAPI.h:457
+
GfnApplicationCallbackResult(GFN_CALLBACK * ClientInfoCallbackSig)(GfnClientInfoUpdateData *pUpdate, const void *pUserContext)
Callback function for notifications on client info changes. Register via gfnRegisterClientInfoCallbac...
Definition: GfnRuntimeSdk_CAPI.h:524
+
GfnClientDataChangeType updateType
Type of GFN Client data that changed.
Definition: GfnRuntimeSdk_CAPI.h:452
NVGFNSDK_EXPORT void NVGFNSDKApi gfnStopStreamAsync(StopStreamCallbackSig cb, void *context, unsigned int timeoutMs)
NVGFNSDK_EXPORT GfnRuntimeError gfnSendMessage(const char *pchMessage, unsigned int length)
-
Input to the function registered via gfnRegisterInstallCallback (if any).
Definition: GfnRuntimeSdk_CAPI.h:348
-
unsigned int version
Deprecated, value will be ignored.
Definition: GfnRuntimeSdk_CAPI.h:445
-
Challenge data passed in to gfnCloudCheck API.
Definition: GfnRuntimeSdk_CAPI.h:485
-
Change in IP of GFN Client (due to device switch/reconnect)
Definition: GfnRuntimeSdk_CAPI.h:436
-
GfnActionType
Specifies the action in GfnSetActionZone API Deprecated with SetActionZone removal.
Definition: GfnRuntimeSdk_CAPI.h:388
-
Sentinel value for GfnClientInfoChangeType.
Definition: GfnRuntimeSdk_CAPI.h:439
-
GfnApplicationCallbackResult(GFN_CALLBACK * InstallCallbackSig)(const TitleInstallationInformation *pInfo, void *pUserContext)
Callback function for notification when a game is being installed to allow for installation actions...
Definition: GfnRuntimeSdk_CAPI.h:509
-
Initial default state.
Definition: GfnRuntimeSdk_CAPI.h:358
-
GfnNetworkStatusChangeType updateType
Network Status Update type.
Definition: GfnRuntimeSdk_CAPI.h:467
-
GfnApplicationCallbackResult(GFN_CALLBACK * SaveCallbackSig)(void *pUserContext)
Callback function for notifications when a game should save its state. Register via gfnRegisterSaveCa...
Definition: GfnRuntimeSdk_CAPI.h:513
-
Change in resolution of GFN Client.
Definition: GfnRuntimeSdk_CAPI.h:437
+
Input to the function registered via gfnRegisterInstallCallback (if any).
Definition: GfnRuntimeSdk_CAPI.h:354
+
unsigned int version
Deprecated, value will be ignored.
Definition: GfnRuntimeSdk_CAPI.h:451
+
Challenge data passed in to gfnCloudCheck API.
Definition: GfnRuntimeSdk_CAPI.h:491
+
Change in IP of GFN Client (due to device switch/reconnect)
Definition: GfnRuntimeSdk_CAPI.h:442
+
NVGFNSDK_EXPORT GfnRuntimeError gfnOpenURLOnClient(const char *pchUrl)
+
GfnActionType
Specifies the action in GfnSetActionZone API Deprecated with SetActionZone removal.
Definition: GfnRuntimeSdk_CAPI.h:394
+
Sentinel value for GfnClientInfoChangeType.
Definition: GfnRuntimeSdk_CAPI.h:445
+
GfnApplicationCallbackResult(GFN_CALLBACK * InstallCallbackSig)(const TitleInstallationInformation *pInfo, void *pUserContext)
Callback function for notification when a game is being installed to allow for installation actions...
Definition: GfnRuntimeSdk_CAPI.h:515
+
Initial default state.
Definition: GfnRuntimeSdk_CAPI.h:364
+
GfnNetworkStatusChangeType updateType
Network Status Update type.
Definition: GfnRuntimeSdk_CAPI.h:473
+
GfnApplicationCallbackResult(GFN_CALLBACK * SaveCallbackSig)(void *pUserContext)
Callback function for notifications when a game should save its state. Register via gfnRegisterSaveCa...
Definition: GfnRuntimeSdk_CAPI.h:519
+
Change in resolution of GFN Client.
Definition: GfnRuntimeSdk_CAPI.h:443
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterSaveCallback(SaveCallbackSig saveCallback, void *pUserContext)
-
GfnClientInfoChangeType
Type of data which changed. This enum will be expanded over time.
Definition: GfnRuntimeSdk_CAPI.h:433
-
Client is running a network test to determine the best zone.
Definition: GfnRuntimeSdk_CAPI.h:359
-
GfnOsType osType
Operating System type.
Definition: GfnRuntimeSdk_CAPI.h:449
-
GfnApplicationCallbackResult(GFN_CALLBACK * SessionInitCallbackSig)(const char *partnerInfoMutable, void *pUserContext)
Callback function for notifications when a game should continue late-stage initialization. Register via gfnRegisterSessionInitCallback API. Function should consume or copy the passed-in partnerInfoMutable string.
Definition: GfnRuntimeSdk_CAPI.h:516
+
GfnClientInfoChangeType
Type of data which changed. This enum will be expanded over time.
Definition: GfnRuntimeSdk_CAPI.h:439
+
Client is running a network test to determine the best zone.
Definition: GfnRuntimeSdk_CAPI.h:365
+
GfnOsType osType
Operating System type.
Definition: GfnRuntimeSdk_CAPI.h:455
+
GfnApplicationCallbackResult(GFN_CALLBACK * SessionInitCallbackSig)(const char *partnerInfoMutable, void *pUserContext)
Callback function for notifications when a game should continue late-stage initialization. Register via gfnRegisterSessionInitCallback API. Function should consume or copy the passed-in partnerInfoMutable string.
Definition: GfnRuntimeSdk_CAPI.h:522
NVGFNSDK_EXPORT bool NVGFNSDKApi gfnIsRunningInCloud()
-
GfnApplicationCallbackResult(GFN_CALLBACK * MessageCallbackSig)(const GfnString *pStrData, void *pUserContext)
Callback function for notifications when an application receives a custom message.
Definition: GfnRuntimeSdk_CAPI.h:522
+
GfnApplicationCallbackResult(GFN_CALLBACK * MessageCallbackSig)(const GfnString *pStrData, void *pUserContext)
Callback function for notifications when an application receives a custom message.
Definition: GfnRuntimeSdk_CAPI.h:528
struct StartStreamInput StartStreamInput
Input data for gfnStartStream.
-
unsigned int version
Deprecated, value will be ignored.
Definition: GfnRuntimeSdk_CAPI.h:466
+
unsigned int version
Deprecated, value will be ignored.
Definition: GfnRuntimeSdk_CAPI.h:472
#define NVGFNSDK_EXPORT
Future support.
Definition: GfnSdk.h:65
-
Considered to be running in GFN Cloud, using software heuristics that are not guaranteed against circ...
Definition: GfnRuntimeSdk_CAPI.h:322
+
Considered to be running in GFN Cloud, using software heuristics that are not guaranteed against circ...
Definition: GfnRuntimeSdk_CAPI.h:328
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetClientIp(const char **ppchClientIp)
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnStartStream(StartStreamInput *pStartStreamInput, StartStreamResponse *response)
-
bool downloaded
True if GeForce NOW client components were downloaded from the release site.
Definition: GfnRuntimeSdk_CAPI.h:330
+
bool downloaded
True if GeForce NOW client components were downloaded from the release site.
Definition: GfnRuntimeSdk_CAPI.h:336
#define GFN_CALLBACK
Future support.
Definition: GfnSdk.h:63
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnStopStream(void)
-
Change in RTDAverageLatency.
Definition: GfnRuntimeSdk_CAPI.h:459
-
GfnStreamStatus
Possible states of the client streamer.
Definition: GfnRuntimeSdk_CAPI.h:356
+
Change in RTDAverageLatency.
Definition: GfnRuntimeSdk_CAPI.h:465
+
GfnStreamStatus
Possible states of the client streamer.
Definition: GfnRuntimeSdk_CAPI.h:362
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void *pUserContext)
-
Return to indicate that a callback has performed the requested operation.
Definition: GfnRuntimeSdk_CAPI.h:312
-
Not considered to be running in GFN cloud, as it looks like a client/local system.
Definition: GfnRuntimeSdk_CAPI.h:321
+
Return to indicate that a callback has performed the requested operation.
Definition: GfnRuntimeSdk_CAPI.h:318
+
Not considered to be running in GFN cloud, as it looks like a client/local system.
Definition: GfnRuntimeSdk_CAPI.h:327
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void *pUserContext)
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void *pUserContext)
-
Output response when streaming has started.
Definition: GfnRuntimeSdk_CAPI.h:328
+
Output response when streaming has started.
Definition: GfnRuntimeSdk_CAPI.h:334
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnSetActionZone(GfnActionType type, unsigned int id, GfnRect *zone)
-
const char * pchPartnerData
Optional non-secure partner data that is passed to the streaming cloud instance and can be retrieved ...
Definition: GfnRuntimeSdk_CAPI.h:343
-
GfnResolutionInfo clientResolution
Client device's physical resolution, if reported. If client does not report, expect values of zero...
Definition: GfnRuntimeSdk_CAPI.h:429
+
const char * pchPartnerData
Optional non-secure partner data that is passed to the streaming cloud instance and can be retrieved ...
Definition: GfnRuntimeSdk_CAPI.h:349
+
GfnResolutionInfo clientResolution
Client device's physical resolution, if reported. If client does not report, expect values of zero...
Definition: GfnRuntimeSdk_CAPI.h:435
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnGetPartnerSecureData(const char **ppchPartnerSecureData)
-
Sentinel value for GfnNetworkStatusChangeType.
Definition: GfnRuntimeSdk_CAPI.h:460
+
Sentinel value for GfnNetworkStatusChangeType.
Definition: GfnRuntimeSdk_CAPI.h:466
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnIsRunningInCloudSecure(GfnIsRunningInCloudAssurance *assurance)
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterExitCallback(ExitCallbackSig exitCallback, void *pUserContext)
-
Client is loading the game.
Definition: GfnRuntimeSdk_CAPI.h:360
+
Client is loading the game.
Definition: GfnRuntimeSdk_CAPI.h:366
NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterClientInfoCallback(ClientInfoCallbackSig clientInfoCallback, void *pUserContext)
-
Client has lost input focus to the streamer window.
Definition: GfnRuntimeSdk_CAPI.h:365
-
Definition: GfnSdk.h:262
-
const char * pchPlatformAppId
Platform application ID passed into the API.
Definition: GfnRuntimeSdk_CAPI.h:350
-
unsigned int RTDAverageLatencyMs
Round Trip Delay - Average Latency in milliseconds.
Definition: GfnRuntimeSdk_CAPI.h:428
-
GfnOsType osType
Operating System type.
Definition: GfnRuntimeSdk_CAPI.h:424
-
Input data for gfnStartStream.
Definition: GfnRuntimeSdk_CAPI.h:340
-
Return to indicate that a callback did not perform the requested operation.
Definition: GfnRuntimeSdk_CAPI.h:313
+
Client has lost input focus to the streamer window.
Definition: GfnRuntimeSdk_CAPI.h:371
+
Definition: GfnSdk.h:313
+
const char * pchPlatformAppId
Platform application ID passed into the API.
Definition: GfnRuntimeSdk_CAPI.h:356
+
unsigned int RTDAverageLatencyMs
Round Trip Delay - Average Latency in milliseconds.
Definition: GfnRuntimeSdk_CAPI.h:434
+
GfnOsType osType
Operating System type.
Definition: GfnRuntimeSdk_CAPI.h:430
+
Input data for gfnStartStream.
Definition: GfnRuntimeSdk_CAPI.h:346
+
Return to indicate that a callback did not perform the requested operation.
Definition: GfnRuntimeSdk_CAPI.h:319
#define NVGFNSDKApi
Future support.
Definition: GfnSdk.h:67
struct GfnCloudCheckChallenge GfnCloudCheckChallenge
Challenge data passed in to gfnCloudCheck API.
diff --git a/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___wrapper_8h.html b/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___wrapper_8h.html index d62f1b3..520f115 100644 --- a/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___wrapper_8h.html +++ b/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___wrapper_8h.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
@@ -177,6 +177,8 @@   GfnRuntimeError GfnSendMessage (const char *pchMessage, unsigned int length)   +GfnRuntimeError GfnOpenURLOnClient (const char *pchUrl) + 

Detailed Description

Wrapper API definitions

diff --git a/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___wrapper_8h_source.html b/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___wrapper_8h_source.html index 14bad3a..50f0f32 100644 --- a/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___wrapper_8h_source.html +++ b/doc/SDK-GFN-RUNTIME/html/_gfn_runtime_sdk___wrapper_8h_source.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
@@ -90,48 +90,49 @@
GfnRuntimeSdk_Wrapper.h
-Go to the documentation of this file.
1 // This code contains NVIDIA Confidential Information and is disclosed to you
2 // under a form of NVIDIA software license agreement provided separately to you.
3 //
4 // Notice
5 // NVIDIA Corporation and its licensors retain all intellectual property and
6 // proprietary rights in and to this software and related documentation and
7 // any modifications thereto. Any use, reproduction, disclosure, or
8 // distribution of this software and related documentation without an express
9 // license agreement from NVIDIA Corporation is strictly prohibited.
10 //
11 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
12 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
13 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
14 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
15 //
16 // Information and code furnished is believed to be accurate and reliable.
17 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
18 // information or for any infringement of patents or other rights of third parties that may
19 // result from its use. No license is granted by implication or otherwise under any patent
20 // or patent rights of NVIDIA Corporation. Details are subject to change without notice.
21 // This code supersedes and replaces all information previously supplied.
22 // NVIDIA Corporation products are not authorized for use as critical
23 // components in life support devices or systems without express written approval of
24 // NVIDIA Corporation.
25 //
26 // Copyright (c) 2020-2021 NVIDIA Corporation. All rights reserved.
27 
28 //
29 // ===============================================================================================
30 //
31 // C-based wrapper API declarations for GFN Runtime SDK APIs
32 //
33 // ===============================================================================================
39 
234 #include "GfnRuntimeSdk_CAPI.h"
235 
236 #include <stddef.h>
237 
238 #ifdef _WIN32
239  #define CHAR_TYPE wchar_t
240  #ifndef WIN32_LEAN_AND_MEAN
241  #define WIN32_LEAN_AND_MEAN
242  #endif
243  #include <windows.h>
245  extern HMODULE g_gfnSdkModule;
246 #elif __linux__
247  #define CHAR_TYPE char
248 #endif
249 
250 #ifdef __cplusplus
251 extern "C"
252 {
253 #endif
254 
282  GfnRuntimeError GfnInitializeSdk(GfnDisplayLanguage language);
283 
285  #define GfnInitializeSdkFromPath GfnInitializeSdkFromPathA
286 
310  GfnRuntimeError GfnInitializeSdkFromPathA(GfnDisplayLanguage language, const char* sdkLibraryPath);
311 
335  GfnRuntimeError GfnInitializeSdkFromPathW(GfnDisplayLanguage language, const wchar_t* wSdkLibraryPath);
336 
352  GfnRuntimeError GfnShutdownSdk(void);
353 
386  GfnRuntimeError GfnIsRunningInCloud(bool* runningInCloud);
387 
418  GfnRuntimeError GfnIsRunningInCloudSecure(GfnIsRunningInCloudAssurance* assurance);
419 
448  GfnRuntimeError GfnCloudCheck(const GfnCloudCheckChallenge* challenge, GfnCloudCheckResponse* response, bool* isCloudEnvironment);
449 
474  GfnRuntimeError GfnGetClientIpV4(const char** clientIp);
475 
501  GfnRuntimeError GfnGetClientLanguageCode(const char** languageCode);
502 
525  GfnRuntimeError GfnGetClientCountryCode(char* countryCode, unsigned int length);
526 
555  GfnRuntimeError GfnGetClientInfo(GfnClientInfo* clientInfo);
556 
572 
584  GfnRuntimeError GfnGetSessionInfo(GfnSessionInfo* sessionInfo);
585 
611  GfnRuntimeError GfnGetPartnerData(const char** partnerData);
612 
638  GfnRuntimeError GfnGetPartnerSecureData(const char** partnerSecureData);
639 
667  GfnRuntimeError GfnIsTitleAvailable(const char* platformAppId, bool* isAvailable);
668 
696  GfnRuntimeError GfnGetTitlesAvailable(const char** platformAppIds);
697 
717  GfnRuntimeError GfnFree(const char** data);
718 
719 
743  GfnRuntimeError GfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void* userContext);
744 
768  GfnRuntimeError GfnStartStream(StartStreamInput* startStreamInput, StartStreamResponse* response);
769 
798  GfnRuntimeError GfnStartStreamAsync(const StartStreamInput* startStreamInput, StartStreamCallbackSig cb, void* context, unsigned int timeoutMs);
799 
819  GfnRuntimeError GfnStopStream(void);
820 
849  GfnRuntimeError GfnStopStreamAsync(StopStreamCallbackSig cb, void* context, unsigned int timeoutMs);
850 
872  GfnRuntimeError GfnSetupTitle(const char* platformAppId);
873 
895  GfnRuntimeError GfnTitleExited(const char* platformId, const char* platformAppId);
896 
925  GfnRuntimeError GfnRegisterExitCallback(ExitCallbackSig exitCallback, void* userContext);
926 
954  GfnRuntimeError GfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void* userContext);
955 
981  GfnRuntimeError GfnRegisterInstallCallback(InstallCallbackSig installCallback, void* userContext);
982 
1006  GfnRuntimeError GfnRegisterSaveCallback(SaveCallbackSig saveCallback, void* userContext);
1007 
1036  GfnRuntimeError GfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void* userContext);
1037 
1062  GfnRuntimeError GfnRegisterMessageCallback(MessageCallbackSig messageCallback, void* userContext);
1063 
1064 
1082  GfnRuntimeError GfnRegisterClientInfoCallback(ClientInfoCallbackSig clientInfoCallback, void* userContext);
1083 
1103  GfnRuntimeError GfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void* userContext);
1104 
1125  GfnRuntimeError GfnAppReady(bool success, const char * status);
1126 
1156  GfnRuntimeError GfnSetActionZone(GfnActionType type, unsigned int id, GfnRect* zone);
1157 
1158 
1185  GfnRuntimeError GfnSendMessage(const char* pchMessage, unsigned int length);
1186 
1188 #ifdef __cplusplus
1189  } // extern "C"
1190 #endif
GfnApplicationCallbackResult(GFN_CALLBACK * ExitCallbackSig)(void *pUserContext)
Callback function for notification when a game should exit due to session shutdown request...
Definition: GfnRuntimeSdk_CAPI.h:505
+Go to the documentation of this file.
1 // This code contains NVIDIA Confidential Information and is disclosed to you
2 // under a form of NVIDIA software license agreement provided separately to you.
3 //
4 // Notice
5 // NVIDIA Corporation and its licensors retain all intellectual property and
6 // proprietary rights in and to this software and related documentation and
7 // any modifications thereto. Any use, reproduction, disclosure, or
8 // distribution of this software and related documentation without an express
9 // license agreement from NVIDIA Corporation is strictly prohibited.
10 //
11 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
12 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
13 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
14 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
15 //
16 // Information and code furnished is believed to be accurate and reliable.
17 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
18 // information or for any infringement of patents or other rights of third parties that may
19 // result from its use. No license is granted by implication or otherwise under any patent
20 // or patent rights of NVIDIA Corporation. Details are subject to change without notice.
21 // This code supersedes and replaces all information previously supplied.
22 // NVIDIA Corporation products are not authorized for use as critical
23 // components in life support devices or systems without express written approval of
24 // NVIDIA Corporation.
25 //
26 // Copyright (c) 2020-2021 NVIDIA Corporation. All rights reserved.
27 
28 //
29 // ===============================================================================================
30 //
31 // C-based wrapper API declarations for GFN Runtime SDK APIs
32 //
33 // ===============================================================================================
39 
240 #include "GfnRuntimeSdk_CAPI.h"
241 
242 #include <stddef.h>
243 
244 #ifdef _WIN32
245  #define CHAR_TYPE wchar_t
246  #ifndef WIN32_LEAN_AND_MEAN
247  #define WIN32_LEAN_AND_MEAN
248  #endif
249  #include <windows.h>
251  extern HMODULE g_gfnSdkModule;
252 #elif __linux__
253  #define CHAR_TYPE char
254 #endif
255 
256 #ifdef __cplusplus
257 extern "C"
258 {
259 #endif
260 
288  GfnRuntimeError GfnInitializeSdk(GfnDisplayLanguage language);
289 
291  #define GfnInitializeSdkFromPath GfnInitializeSdkFromPathA
292 
316  GfnRuntimeError GfnInitializeSdkFromPathA(GfnDisplayLanguage language, const char* sdkLibraryPath);
317 
341  GfnRuntimeError GfnInitializeSdkFromPathW(GfnDisplayLanguage language, const wchar_t* wSdkLibraryPath);
342 
358  GfnRuntimeError GfnShutdownSdk(void);
359 
392  GfnRuntimeError GfnIsRunningInCloud(bool* runningInCloud);
393 
424  GfnRuntimeError GfnIsRunningInCloudSecure(GfnIsRunningInCloudAssurance* assurance);
425 
454  GfnRuntimeError GfnCloudCheck(const GfnCloudCheckChallenge* challenge, GfnCloudCheckResponse* response, bool* isCloudEnvironment);
455 
480  GfnRuntimeError GfnGetClientIpV4(const char** clientIp);
481 
507  GfnRuntimeError GfnGetClientLanguageCode(const char** languageCode);
508 
531  GfnRuntimeError GfnGetClientCountryCode(char* countryCode, unsigned int length);
532 
561  GfnRuntimeError GfnGetClientInfo(GfnClientInfo* clientInfo);
562 
578 
590  GfnRuntimeError GfnGetSessionInfo(GfnSessionInfo* sessionInfo);
591 
617  GfnRuntimeError GfnGetPartnerData(const char** partnerData);
618 
644  GfnRuntimeError GfnGetPartnerSecureData(const char** partnerSecureData);
645 
673  GfnRuntimeError GfnIsTitleAvailable(const char* platformAppId, bool* isAvailable);
674 
702  GfnRuntimeError GfnGetTitlesAvailable(const char** platformAppIds);
703 
723  GfnRuntimeError GfnFree(const char** data);
724 
725 
749  GfnRuntimeError GfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void* userContext);
750 
774  GfnRuntimeError GfnStartStream(StartStreamInput* startStreamInput, StartStreamResponse* response);
775 
804  GfnRuntimeError GfnStartStreamAsync(const StartStreamInput* startStreamInput, StartStreamCallbackSig cb, void* context, unsigned int timeoutMs);
805 
825  GfnRuntimeError GfnStopStream(void);
826 
855  GfnRuntimeError GfnStopStreamAsync(StopStreamCallbackSig cb, void* context, unsigned int timeoutMs);
856 
878  GfnRuntimeError GfnSetupTitle(const char* platformAppId);
879 
901  GfnRuntimeError GfnTitleExited(const char* platformId, const char* platformAppId);
902 
931  GfnRuntimeError GfnRegisterExitCallback(ExitCallbackSig exitCallback, void* userContext);
932 
960  GfnRuntimeError GfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void* userContext);
961 
987  GfnRuntimeError GfnRegisterInstallCallback(InstallCallbackSig installCallback, void* userContext);
988 
1012  GfnRuntimeError GfnRegisterSaveCallback(SaveCallbackSig saveCallback, void* userContext);
1013 
1042  GfnRuntimeError GfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void* userContext);
1043 
1068  GfnRuntimeError GfnRegisterMessageCallback(MessageCallbackSig messageCallback, void* userContext);
1069 
1070 
1089  GfnRuntimeError GfnRegisterClientInfoCallback(ClientInfoCallbackSig clientInfoCallback, void* userContext);
1090 
1111  GfnRuntimeError GfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void* userContext);
1112 
1133  GfnRuntimeError GfnAppReady(bool success, const char * status);
1134 
1165  GfnRuntimeError GfnSetActionZone(GfnActionType type, unsigned int id, GfnRect* zone);
1166 
1167 
1195  GfnRuntimeError GfnSendMessage(const char* pchMessage, unsigned int length);
1224  GfnRuntimeError GfnOpenURLOnClient(const char* pchUrl);
1226 #ifdef __cplusplus
1227  } // extern "C"
1228 #endif
GfnApplicationCallbackResult(GFN_CALLBACK * ExitCallbackSig)(void *pUserContext)
Callback function for notification when a game should exit due to session shutdown request...
Definition: GfnRuntimeSdk_CAPI.h:511
GfnRuntimeError GfnSetupTitle(const char *platformAppId)
-
Session info blob.
Definition: GfnRuntimeSdk_CAPI.h:476
+
Session info blob.
Definition: GfnRuntimeSdk_CAPI.h:482
GfnRuntimeError GfnCloudCheck(const GfnCloudCheckChallenge *challenge, GfnCloudCheckResponse *response, bool *isCloudEnvironment)
GfnRuntimeError GfnRegisterMessageCallback(MessageCallbackSig messageCallback, void *userContext)
GfnRuntimeError GfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void *userContext)
GfnRuntimeError GfnIsRunningInCloud(bool *runningInCloud)
-
void(GFN_CALLBACK * StopStreamCallbackSig)(GfnRuntimeError, void *context)
Callback function signation for notifications on status of stop a streaming session.
Definition: GfnRuntimeSdk_CAPI.h:337
+
void(GFN_CALLBACK * StopStreamCallbackSig)(GfnRuntimeError, void *context)
Callback function signation for notifications on status of stop a streaming session.
Definition: GfnRuntimeSdk_CAPI.h:343
GfnRuntimeError GfnGetClientCountryCode(char *countryCode, unsigned int length)
GfnRuntimeError GfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void *userContext)
GfnRuntimeError GfnInitializeSdkFromPathA(GfnDisplayLanguage language, const char *sdkLibraryPath)
GfnRuntimeError GfnInitializeSdkFromPathW(GfnDisplayLanguage language, const wchar_t *wSdkLibraryPath)
-
GfnApplicationCallbackResult(GFN_CALLBACK * PauseCallbackSig)(void *pUserContext)
Callback function for notification when a game should pause due to user changing focus from the sessi...
Definition: GfnRuntimeSdk_CAPI.h:507
+
GfnApplicationCallbackResult(GFN_CALLBACK * PauseCallbackSig)(void *pUserContext)
Callback function for notification when a game should pause due to user changing focus from the sessi...
Definition: GfnRuntimeSdk_CAPI.h:513
GfnRuntimeError GfnSetActionZone(GfnActionType type, unsigned int id, GfnRect *zone)
-
GfnDisplayLanguage
Values for languages supported by the GFN SDK, used to define which language any SDK dialogs should b...
Definition: GfnSdk.h:187
+
GfnDisplayLanguage
Values for languages supported by the GFN SDK, used to define which language any SDK dialogs should b...
Definition: GfnSdk.h:238
GfnRuntimeError GfnRegisterExitCallback(ExitCallbackSig exitCallback, void *userContext)
GfnRuntimeError GfnRegisterSaveCallback(SaveCallbackSig saveCallback, void *userContext)
-
struct to reference a rect
Definition: GfnSdk.h:245
-
GfnApplicationCallbackResult(GFN_CALLBACK * StreamStatusCallbackSig)(GfnStreamStatus status, void *pUserContext)
Callback function for notifications on status of starting a streaming session. Register via gfnRegist...
Definition: GfnRuntimeSdk_CAPI.h:511
-
void(GFN_CALLBACK * StartStreamCallbackSig)(GfnRuntimeError, StartStreamResponse *, void *context)
Callback function signation for notifications on status of starting a streaming session.
Definition: GfnRuntimeSdk_CAPI.h:334
+
struct to reference a rect
Definition: GfnSdk.h:296
+
GfnApplicationCallbackResult(GFN_CALLBACK * StreamStatusCallbackSig)(GfnStreamStatus status, void *pUserContext)
Callback function for notifications on status of starting a streaming session. Register via gfnRegist...
Definition: GfnRuntimeSdk_CAPI.h:517
+
void(GFN_CALLBACK * StartStreamCallbackSig)(GfnRuntimeError, StartStreamResponse *, void *context)
Callback function signation for notifications on status of starting a streaming session.
Definition: GfnRuntimeSdk_CAPI.h:340
GfnRuntimeError GfnRegisterClientInfoCallback(ClientInfoCallbackSig clientInfoCallback, void *userContext)
-
Client info blob.
Definition: GfnRuntimeSdk_CAPI.h:421
+
Client info blob.
Definition: GfnRuntimeSdk_CAPI.h:427
GfnRuntimeError GfnRegisterInstallCallback(InstallCallbackSig installCallback, void *userContext)
GfnRuntimeError GfnInitializeSdk(GfnDisplayLanguage language)
GfnRuntimeError GfnGetPartnerData(const char **partnerData)
-
GfnIsRunningInCloudAssurance
Returned from gfnIsRunningInCloudSecure to denote security assurance that the calling application is ...
Definition: GfnRuntimeSdk_CAPI.h:319
-
Response data received in the gfnCloudCheck API.
Definition: GfnRuntimeSdk_CAPI.h:492
+
GfnIsRunningInCloudAssurance
Returned from gfnIsRunningInCloudSecure to denote security assurance that the calling application is ...
Definition: GfnRuntimeSdk_CAPI.h:325
+
Response data received in the gfnCloudCheck API.
Definition: GfnRuntimeSdk_CAPI.h:498
GfnRuntimeError GfnShutdownSdk(void)
GfnRuntimeError GfnStopStreamAsync(StopStreamCallbackSig cb, void *context, unsigned int timeoutMs)
-
GfnApplicationCallbackResult(GFN_CALLBACK * NetworkStatusCallbackSig)(GfnNetworkStatusUpdateData *pUpdate, const void *pUserContext)
Callback function for notifications on network status changes. Register via gfnRegisterNetworkStatusC...
Definition: GfnRuntimeSdk_CAPI.h:520
+
GfnApplicationCallbackResult(GFN_CALLBACK * NetworkStatusCallbackSig)(GfnNetworkStatusUpdateData *pUpdate, const void *pUserContext)
Callback function for notifications on network status changes. Register via gfnRegisterNetworkStatusC...
Definition: GfnRuntimeSdk_CAPI.h:526
GfnRuntimeError GfnGetPartnerSecureData(const char **partnerSecureData)
GfnRuntimeError GfnGetClientLanguageCode(const char **languageCode)
-
GfnApplicationCallbackResult(GFN_CALLBACK * ClientInfoCallbackSig)(GfnClientInfoUpdateData *pUpdate, const void *pUserContext)
Callback function for notifications on client info changes. Register via gfnRegisterClientInfoCallbac...
Definition: GfnRuntimeSdk_CAPI.h:518
-
Challenge data passed in to gfnCloudCheck API.
Definition: GfnRuntimeSdk_CAPI.h:485
+
GfnApplicationCallbackResult(GFN_CALLBACK * ClientInfoCallbackSig)(GfnClientInfoUpdateData *pUpdate, const void *pUserContext)
Callback function for notifications on client info changes. Register via gfnRegisterClientInfoCallbac...
Definition: GfnRuntimeSdk_CAPI.h:524
+
Challenge data passed in to gfnCloudCheck API.
Definition: GfnRuntimeSdk_CAPI.h:491
GfnRuntimeError GfnGetClientInfo(GfnClientInfo *clientInfo)
-
GfnActionType
Specifies the action in GfnSetActionZone API Deprecated with SetActionZone removal.
Definition: GfnRuntimeSdk_CAPI.h:388
-
GfnApplicationCallbackResult(GFN_CALLBACK * InstallCallbackSig)(const TitleInstallationInformation *pInfo, void *pUserContext)
Callback function for notification when a game is being installed to allow for installation actions...
Definition: GfnRuntimeSdk_CAPI.h:509
-
GfnApplicationCallbackResult(GFN_CALLBACK * SaveCallbackSig)(void *pUserContext)
Callback function for notifications when a game should save its state. Register via gfnRegisterSaveCa...
Definition: GfnRuntimeSdk_CAPI.h:513
-
GfnApplicationCallbackResult(GFN_CALLBACK * SessionInitCallbackSig)(const char *partnerInfoMutable, void *pUserContext)
Callback function for notifications when a game should continue late-stage initialization. Register via gfnRegisterSessionInitCallback API. Function should consume or copy the passed-in partnerInfoMutable string.
Definition: GfnRuntimeSdk_CAPI.h:516
+
GfnActionType
Specifies the action in GfnSetActionZone API Deprecated with SetActionZone removal.
Definition: GfnRuntimeSdk_CAPI.h:394
+
GfnApplicationCallbackResult(GFN_CALLBACK * InstallCallbackSig)(const TitleInstallationInformation *pInfo, void *pUserContext)
Callback function for notification when a game is being installed to allow for installation actions...
Definition: GfnRuntimeSdk_CAPI.h:515
+
GfnApplicationCallbackResult(GFN_CALLBACK * SaveCallbackSig)(void *pUserContext)
Callback function for notifications when a game should save its state. Register via gfnRegisterSaveCa...
Definition: GfnRuntimeSdk_CAPI.h:519
+
GfnApplicationCallbackResult(GFN_CALLBACK * SessionInitCallbackSig)(const char *partnerInfoMutable, void *pUserContext)
Callback function for notifications when a game should continue late-stage initialization. Register via gfnRegisterSessionInitCallback API. Function should consume or copy the passed-in partnerInfoMutable string.
Definition: GfnRuntimeSdk_CAPI.h:522
GfnRuntimeError GfnStartStreamAsync(const StartStreamInput *startStreamInput, StartStreamCallbackSig cb, void *context, unsigned int timeoutMs)
+
GfnRuntimeError GfnOpenURLOnClient(const char *pchUrl)
GfnRuntimeError GfnTitleExited(const char *platformId, const char *platformAppId)
-
GfnApplicationCallbackResult(GFN_CALLBACK * MessageCallbackSig)(const GfnString *pStrData, void *pUserContext)
Callback function for notifications when an application receives a custom message.
Definition: GfnRuntimeSdk_CAPI.h:522
+
GfnApplicationCallbackResult(GFN_CALLBACK * MessageCallbackSig)(const GfnString *pStrData, void *pUserContext)
Callback function for notifications when an application receives a custom message.
Definition: GfnRuntimeSdk_CAPI.h:528
GfnRuntimeError GfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void *userContext)
GfnRuntimeError GfnGetTitlesAvailable(const char **platformAppIds)
GfnRuntimeError GfnFree(const char **data)
@@ -139,13 +140,13 @@
GfnRuntimeError GfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void *userContext)
GfnRuntimeError GfnStartStream(StartStreamInput *startStreamInput, StartStreamResponse *response)
GfnRuntimeError GfnIsTitleAvailable(const char *platformAppId, bool *isAvailable)
-
Output response when streaming has started.
Definition: GfnRuntimeSdk_CAPI.h:328
+
Output response when streaming has started.
Definition: GfnRuntimeSdk_CAPI.h:334
GfnRuntimeError GfnIsRunningInCloudSecure(GfnIsRunningInCloudAssurance *assurance)
GfnRuntimeError GfnStopStream(void)
GfnRuntimeError GfnSendMessage(const char *pchMessage, unsigned int length)
GfnRuntimeError GfnAppReady(bool success, const char *status)
-
Input data for gfnStartStream.
Definition: GfnRuntimeSdk_CAPI.h:340
+
Input data for gfnStartStream.
Definition: GfnRuntimeSdk_CAPI.h:346
GfnRuntimeError GfnGetClientIpV4(const char **clientIp)
diff --git a/doc/SDK-GFN-RUNTIME/html/_gfn_sdk_8h.html b/doc/SDK-GFN-RUNTIME/html/_gfn_sdk_8h.html index 0521d36..3c08dc6 100644 --- a/doc/SDK-GFN-RUNTIME/html/_gfn_sdk_8h.html +++ b/doc/SDK-GFN-RUNTIME/html/_gfn_sdk_8h.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
@@ -136,11 +136,11 @@  GFN SDK Major Version.
  -#define NVGFNSDK_VERSION_MINOR   3 +#define NVGFNSDK_VERSION_MINOR   4  GFN SDK Minor Version.
  -#define NVGFNSDK_VERSION_SHORT   2.3 +#define NVGFNSDK_VERSION_SHORT   2.4  GFN SDK Version.
  @@ -148,29 +148,29 @@  GFN SDK Patch Version.
  -#define NVGFNSDK_VERSION_BUILD   34421937 +#define NVGFNSDK_VERSION_BUILD   34856604  GFN SDK Build Version.
  -#define NVGFNSDK_VERSION_LONG   2.3.0.34421937 +#define NVGFNSDK_VERSION_LONG   2.4.0.34856604  GFN SDK Version.
  -#define NVGFNSDK_VERSION_STR   "2.3.0.34421937" +#define NVGFNSDK_VERSION_STR   "2.4.0.34856604"  GFN SDK Version string.
  -#define NVGFNSDK_VERSION_STR_PROD   "2.3.0" +#define NVGFNSDK_VERSION_STR_PROD   "2.4.0"   -#define NVGFNSDK_VERSION_BUILDCL   34421937 +#define NVGFNSDK_VERSION_BUILDCL   34856604  GFN SDK Build CL.
  -#define NVGFNSDK_VERSION_BUILDH   3442 +#define NVGFNSDK_VERSION_BUILDH   3485   -#define NVGFNSDK_VERSION_BUILDL   1937 +#define NVGFNSDK_VERSION_BUILDL   6604   @@ -90,91 +90,91 @@
GfnSdk.h
-Go to the documentation of this file.
1 // This code contains NVIDIA Confidential Information and is disclosed to you
2 // under a form of NVIDIA software license agreement provided separately to you.
3 //
4 // Notice
5 // NVIDIA Corporation and its licensors retain all intellectual property and
6 // proprietary rights in and to this software and related documentation and
7 // any modifications thereto. Any use, reproduction, disclosure, or
8 // distribution of this software and related documentation without an express
9 // license agreement from NVIDIA Corporation is strictly prohibited.
10 //
11 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
12 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
13 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
14 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
15 //
16 // Information and code furnished is believed to be accurate and reliable.
17 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
18 // information or for any infringement of patents or other rights of third parties that may
19 // result from its use. No license is granted by implication or otherwise under any patent
20 // or patent rights of NVIDIA Corporation. Details are subject to change without notice.
21 // This code supersedes and replaces all information previously supplied.
22 // NVIDIA Corporation products are not authorized for use as critical
23 // components in life support devices or systems without express written approval of
24 // NVIDIA Corporation.
25 //
26 // Copyright (c) 2020-2021 NVIDIA Corporation. All rights reserved.
27 
28 //
29 // ===============================================================================================
30 //
31 // Common declarations for GFN SDK APIs
32 //
33 // ===============================================================================================
34 
43 #ifndef GFN_SDK_CAPI_H
44 #define GFN_SDK_CAPI_H
45 
46 
47 // Required for streamer / DLL download step in StartStream
48 #ifdef _WIN32
49 # pragma comment(lib, "ws2_32.lib")
50 # pragma comment(lib, "crypt32.lib")
51 # pragma comment(lib, "Wldap32.lib")
52 # pragma comment(lib, "version.lib")
53 # pragma comment(lib, "shlwapi.lib")
54 # pragma comment(lib, "Rpcrt4.lib")
55 # pragma comment(lib, "wintrust")
56 # define GFN_CALLBACK __stdcall
57 # define NVGFNSDK_EXPORT __declspec(dllexport)
58 # define NVGFNSDKApi __cdecl
59 # include <stddef.h>
60 #else
61 // Support to be added in a later release
63 # define GFN_CALLBACK
64 # define NVGFNSDK_EXPORT
66 # define NVGFNSDKApi
68 #endif
69 
70 #ifndef __cplusplus
71 #include <stdbool.h>
74 #define false 0
75 #define true 1
77 #endif
78 
80 #define NVGFNSDK_VERSION_MAJOR 2
81 
83 #define NVGFNSDK_VERSION_MINOR 3
84 
86 #define NVGFNSDK_VERSION_SHORT 2.3
87 
89 #define NVGFNSDK_VERSION_PATCH 0
90 
92 #define NVGFNSDK_VERSION_BUILD 34421937
93 
95 #define NVGFNSDK_VERSION_LONG 2.3.0.34421937
96 
98 #define NVGFNSDK_VERSION_STR "2.3.0.34421937"
99 #define NVGFNSDK_VERSION_STR_PROD "2.3.0"
100 
102 #define NVGFNSDK_VERSION_BUILDCL 34421937
103 #define NVGFNSDK_VERSION_BUILDH 3442
104 #define NVGFNSDK_VERSION_BUILDL 1937
105 
106 
107 #ifdef __cplusplus
108  extern "C"
109  {
110 #endif
111  // ============================================================================================
112  // Constants/Enums
113  // ============================================================================================
114 
116  typedef enum GfnError
117  {
123  gfnComError = -3,
131  gfnTimedOut = -11,
142  gfnCanceled = -22,
144  gfnThrottled = -24,
149  gfnNoData = -29,
152  } GfnError;
153 
165  static inline bool GFNSDK_SUCCEEDED(GfnError code)
166  {
167  return code >= 0;
168  }
169 
181  static inline bool GFNSDK_FAILED(GfnError code)
182  {
183  return code < 0;
184  }
185 
187  typedef enum GfnDisplayLanguage
188  {
190  gfn_bg_BG = 1,
191  gfn_cs_CZ = 2,
192  gfn_nl_NL = 3,
193  gfn_de_DE = 4,
194  gfn_el_GR = 5,
195  gfn_en_US = 6,
196  gfn_en_UK = 7,
197  gfn_es_ES = 8,
198  gfn_es_MX = 9,
199  gfn_fi_FI = 10,
200  gfn_fr_FR = 11,
201  gfn_hu_HU = 12,
202  gfn_it_IT = 13,
203  gfn_ja_JP = 14,
204  gfn_ko_KR = 15,
205  gfn_nb_NO = 16,
206  gfn_po_PO = 17,
207  gfn_pt_BR = 18,
208  gfn_pt_PT = 19,
209  gfn_ro_RO = 20,
210  gfn_ru_RU = 21,
211  gfn_sv_SE = 22,
212  gfn_th_TH = 23,
213  gfn_tr_TR = 24,
214  gfn_uk_UA = 25,
215  gfn_zh_CN = 26,
216  gfn_zh_TW = 27,
217  gfn_en_GB = 28,
218  gfn_hr_HR = 29,
219  gfn_sk_SK = 30,
220  gfn_sl_SI = 31,
221  gfn_da_DK = 32,
224 
226  typedef enum GfnRectFormat
227  {
233 
239 
242  } GfnRectFormat;
243 
245  typedef struct GfnRect
246  {
247  float value1;
248  float value2;
249  float value3;
250  float value4;
251  bool normalized;
252  GfnRectFormat format;
253  } GfnRect;
254 
256  typedef struct GfnString
257  {
258  const char* pchString;
259  unsigned int length;
260  } GfnString;
261 
262  typedef struct GfnResolutionInfo
263  {
264  unsigned int verticalPixels;
265  unsigned int horizontalPixels;
267 
268 #ifdef __cplusplus
269  } // extern "C"
270 #endif
271 
272 
273 #endif // GFN_SDK_CAPI_H
Ukrainian (Ukraine)
Definition: GfnSdk.h:214
-
bool normalized
true : coordinates are normalized between 0.0-1.0, false : absolute coordinates
Definition: GfnSdk.h:251
+Go to the documentation of this file.
1 // This code contains NVIDIA Confidential Information and is disclosed to you
2 // under a form of NVIDIA software license agreement provided separately to you.
3 //
4 // Notice
5 // NVIDIA Corporation and its licensors retain all intellectual property and
6 // proprietary rights in and to this software and related documentation and
7 // any modifications thereto. Any use, reproduction, disclosure, or
8 // distribution of this software and related documentation without an express
9 // license agreement from NVIDIA Corporation is strictly prohibited.
10 //
11 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
12 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
13 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
14 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
15 //
16 // Information and code furnished is believed to be accurate and reliable.
17 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
18 // information or for any infringement of patents or other rights of third parties that may
19 // result from its use. No license is granted by implication or otherwise under any patent
20 // or patent rights of NVIDIA Corporation. Details are subject to change without notice.
21 // This code supersedes and replaces all information previously supplied.
22 // NVIDIA Corporation products are not authorized for use as critical
23 // components in life support devices or systems without express written approval of
24 // NVIDIA Corporation.
25 //
26 // Copyright (c) 2020-2021 NVIDIA Corporation. All rights reserved.
27 
28 //
29 // ===============================================================================================
30 //
31 // Common declarations for GFN SDK APIs
32 //
33 // ===============================================================================================
34 
43 #ifndef GFN_SDK_CAPI_H
44 #define GFN_SDK_CAPI_H
45 
46 
47 // Required for streamer / DLL download step in StartStream
48 #ifdef _WIN32
49 # pragma comment(lib, "ws2_32.lib")
50 # pragma comment(lib, "crypt32.lib")
51 # pragma comment(lib, "Wldap32.lib")
52 # pragma comment(lib, "version.lib")
53 # pragma comment(lib, "shlwapi.lib")
54 # pragma comment(lib, "Rpcrt4.lib")
55 # pragma comment(lib, "wintrust")
56 # define GFN_CALLBACK __stdcall
57 # define NVGFNSDK_EXPORT __declspec(dllexport)
58 # define NVGFNSDKApi __cdecl
59 # include <stddef.h>
60 #else
61 // Support to be added in a later release
63 # define GFN_CALLBACK
64 # define NVGFNSDK_EXPORT
66 # define NVGFNSDKApi
68 #endif
69 
70 #ifndef __cplusplus
71 #include <stdbool.h>
74 #define false 0
75 #define true 1
77 #endif
78 
80 #define NVGFNSDK_VERSION_MAJOR 2
81 
83 #define NVGFNSDK_VERSION_MINOR 4
84 
86 #define NVGFNSDK_VERSION_SHORT 2.4
87 
89 #define NVGFNSDK_VERSION_PATCH 0
90 
92 #define NVGFNSDK_VERSION_BUILD 34856604
93 
95 #define NVGFNSDK_VERSION_LONG 2.4.0.34856604
96 
98 #define NVGFNSDK_VERSION_STR "2.4.0.34856604"
99 #define NVGFNSDK_VERSION_STR_PROD "2.4.0"
100 
102 #define NVGFNSDK_VERSION_BUILDCL 34856604
103 #define NVGFNSDK_VERSION_BUILDH 3485
104 #define NVGFNSDK_VERSION_BUILDL 6604
105 
106 
107 #ifdef __cplusplus
108  extern "C"
109  {
110 #endif
111  // ============================================================================================
112  // Constants/Enums
113  // ============================================================================================
114 
116  typedef enum GfnError
117  {
123  gfnComError = -3,
131  gfnTimedOut = -11,
142  gfnCanceled = -22,
144  gfnThrottled = -24,
149  gfnNoData = -29,
152  } GfnError;
153 
164  static inline char const * GfnErrorToString(GfnError err)
165  {
166  switch (err)
167  {
168  case gfnSuccess: return "Success";
169  case gfnInitSuccessClientOnly: return "SDK initialization successful, but only client-side functionality available";
170  case gfnInitSuccessCloudOnly: return "SDK initialization successful, but only cloud-side functionality available";
171  case gfnInitFailure: return "SDK initialization failure";
172  case gfnDllNotPresent: return "DLL Not Present";
173  case gfnComError: return "Com Error";
174  case gfnLibraryCallFailure: return "Error Calling Library Function";
175  case gfnIncompatibleVersion: return "Incompatible Version";
176  case gfnUnableToAllocateMemory: return "Unable To Allocate Memory";
177  case gfnInvalidParameter: return "Invalid Parameter";
178  case gfnInternalError: return "Internal Error";
179  case gfnUnsupportedAPICall: return "Unsupported API Call";
180  case gfnInvalidToken: return "Invalid Token";
181  case gfnTimedOut: return "Timed Out";
182  case gfnClientDownloadFailed: return "GFN Client download failed";
183  case gfnCallWrongEnvironment: return "GFN SDK API called in wrong environment";
184  case gfnWebApiFailed: return "NVIDIA Web API returned invalid data";
185  case gfnStreamFailure: return "GFN Streamer hit a failure while starting a stream";
186  case gfnAPINotFound: return "GFN SDK API not found";
187  case gfnAPINotInit: return "GFN SDK API not initialized";
188  case gfnStreamStopFailure: return "GFN SDK failed to stop active streaming session";
189  case gfnUnhandledException: return "Unhandled exception";
190  case gfnIPCFailure: return "Inter-process Communication failure";
191  case gfnCanceled: return "GFN SDK action was canceled";
192  case gfnElevationRequired: return "GFN SDK API requires process elevation";
193  case gfnThrottled: return "GFN SDK API cannot be called in rapid succession";
194  case gfnInputExpected: return "Input parameter expected to have data";
195  case gfnBinarySignatureInvalid: return "Attemped to load a binary with invalid digital signature";
196  case gfnClientLibraryNotFound: return "GFN SDK API client library not found";
197  case gfnCloudLibraryNotFound: return "GFN SDK API cloud library not found";
198  case gfnNoData: return "Requested data is empty or does not exist";
199  case gfnNotAuthorized: return "API Call failed because it was called from unauthorized process";
200  case gfnBackendError: return "Failed to communicate with the GFN backend service";
201  default: return "Unknown Error";
202  }
203  }
204 
216  static inline bool GFNSDK_SUCCEEDED(GfnError code)
217  {
218  return code >= 0;
219  }
220 
232  static inline bool GFNSDK_FAILED(GfnError code)
233  {
234  return code < 0;
235  }
236 
238  typedef enum GfnDisplayLanguage
239  {
241  gfn_bg_BG = 1,
242  gfn_cs_CZ = 2,
243  gfn_nl_NL = 3,
244  gfn_de_DE = 4,
245  gfn_el_GR = 5,
246  gfn_en_US = 6,
247  gfn_en_UK = 7,
248  gfn_es_ES = 8,
249  gfn_es_MX = 9,
250  gfn_fi_FI = 10,
251  gfn_fr_FR = 11,
252  gfn_hu_HU = 12,
253  gfn_it_IT = 13,
254  gfn_ja_JP = 14,
255  gfn_ko_KR = 15,
256  gfn_nb_NO = 16,
257  gfn_po_PO = 17,
258  gfn_pt_BR = 18,
259  gfn_pt_PT = 19,
260  gfn_ro_RO = 20,
261  gfn_ru_RU = 21,
262  gfn_sv_SE = 22,
263  gfn_th_TH = 23,
264  gfn_tr_TR = 24,
265  gfn_uk_UA = 25,
266  gfn_zh_CN = 26,
267  gfn_zh_TW = 27,
268  gfn_en_GB = 28,
269  gfn_hr_HR = 29,
270  gfn_sk_SK = 30,
271  gfn_sl_SI = 31,
272  gfn_da_DK = 32,
275 
277  typedef enum GfnRectFormat
278  {
284 
290 
293  } GfnRectFormat;
294 
296  typedef struct GfnRect
297  {
298  float value1;
299  float value2;
300  float value3;
301  float value4;
302  bool normalized;
303  GfnRectFormat format;
304  } GfnRect;
305 
307  typedef struct GfnString
308  {
309  const char* pchString;
310  unsigned int length;
311  } GfnString;
312 
313  typedef struct GfnResolutionInfo
314  {
315  unsigned int verticalPixels;
316  unsigned int horizontalPixels;
318 
319 #ifdef __cplusplus
320  } // extern "C"
321 #endif
322 
323 
324 #endif // GFN_SDK_CAPI_H
Ukrainian (Ukraine)
Definition: GfnSdk.h:265
+
bool normalized
true : coordinates are normalized between 0.0-1.0, false : absolute coordinates
Definition: GfnSdk.h:302
API call required to be run from an elevated process.
Definition: GfnSdk.h:143
API Call is not supported.
Definition: GfnSdk.h:129
Geforce NOW SDK internal component communication error.
Definition: GfnSdk.h:123
-
Chinese (China)
Definition: GfnSdk.h:215
+
Chinese (China)
Definition: GfnSdk.h:266
SDK initialization failure for any reason other than memory allocation failure.
Definition: GfnSdk.h:121
-
English (Great Britain)
Definition: GfnSdk.h:217
+
English (Great Britain)
Definition: GfnSdk.h:268
GfnError
Returned by InitializeGfnRuntime and GfnRuntime API methods.
Definition: GfnSdk.h:116
-
Croatian (Croatia)
Definition: GfnSdk.h:218
-
German (Germany)
Definition: GfnSdk.h:193
-
GfnRectFormat format
rect format as listed in GfnRectFormat
Definition: GfnSdk.h:252
+
Croatian (Croatia)
Definition: GfnSdk.h:269
+
German (Germany)
Definition: GfnSdk.h:244
+
GfnRectFormat format
rect format as listed in GfnRectFormat
Definition: GfnSdk.h:303
A call to a NVIDIA Web API failed to return valid data.
Definition: GfnSdk.h:135
-
Danish (Denmark)
Definition: GfnSdk.h:221
+
Danish (Denmark)
Definition: GfnSdk.h:272
Function limited to specific environment called in wrong environment.
Definition: GfnSdk.h:134
-
Slovenian (Slovenia)
Definition: GfnSdk.h:220
+
Slovenian (Slovenia)
Definition: GfnSdk.h:271
Failed to download the Geforce NOW client.
Definition: GfnSdk.h:133
-
Swedish (Sweden)
Definition: GfnSdk.h:211
-
Chinese (Taiwan)
Definition: GfnSdk.h:216
+
Swedish (Sweden)
Definition: GfnSdk.h:262
+
Chinese (Taiwan)
Definition: GfnSdk.h:267
Success.
Definition: GfnSdk.h:118
-
Norwegian - Bokmål (Norway)
Definition: GfnSdk.h:205
+
Norwegian - Bokmål (Norway)
Definition: GfnSdk.h:256
Necessary GFN cloud-based SDK library cannot be found.
Definition: GfnSdk.h:147
Requested data is empty or doesn&#39;t exist.
Definition: GfnSdk.h:149
-
float value1
value1 as per format
Definition: GfnSdk.h:247
-
GfnDisplayLanguage
Values for languages supported by the GFN SDK, used to define which language any SDK dialogs should b...
Definition: GfnSdk.h:187
+
float value1
value1 as per format
Definition: GfnSdk.h:298
+
GfnDisplayLanguage
Values for languages supported by the GFN SDK, used to define which language any SDK dialogs should b...
Definition: GfnSdk.h:238
Necessary GFN client-based SDK library cannot be found.
Definition: GfnSdk.h:148
-
float value3
value3 as per format
Definition: GfnSdk.h:249
+
float value3
value3 as per format
Definition: GfnSdk.h:300
Failed to communicate with the GFN backend service.
Definition: GfnSdk.h:151
API Call failed because it was called from unauthorized process.
Definition: GfnSdk.h:150
-
GfnRectFormat
Formats to specify a rect with top-left as origin.
Definition: GfnSdk.h:226
-
struct to reference a rect
Definition: GfnSdk.h:245
+
GfnRectFormat
Formats to specify a rect with top-left as origin.
Definition: GfnSdk.h:277
+
struct to reference a rect
Definition: GfnSdk.h:296
Unable to allocate memory.
Definition: GfnSdk.h:126
-
Bulgarian (Bulgaria)
Definition: GfnSdk.h:190
+
Bulgarian (Bulgaria)
Definition: GfnSdk.h:241
Failed to stop active streaming session.
Definition: GfnSdk.h:139
-
Dutch (Netherlands)
Definition: GfnSdk.h:192
+
Dutch (Netherlands)
Definition: GfnSdk.h:243
API not initialized.
Definition: GfnSdk.h:138
-
Romanian (Romania)
Definition: GfnSdk.h:209
+
Romanian (Romania)
Definition: GfnSdk.h:260
SDK initialized, but only cloud independent functionality available (such as gfnStartStream) ...
Definition: GfnSdk.h:119
-
Last Supported Locale (Sentinel Value)
Definition: GfnSdk.h:222
+
Last Supported Locale (Sentinel Value)
Definition: GfnSdk.h:273
DLL is not present.
Definition: GfnSdk.h:122
-
Korean (Korea)
Definition: GfnSdk.h:204
-
Polish (Poland)
Definition: GfnSdk.h:206
-
English (Great Britain)
Definition: GfnSdk.h:196
-
Italian (Italy)
Definition: GfnSdk.h:202
+
Korean (Korea)
Definition: GfnSdk.h:255
+
Polish (Poland)
Definition: GfnSdk.h:257
+
English (Great Britain)
Definition: GfnSdk.h:247
+
Italian (Italy)
Definition: GfnSdk.h:253
Invalid token.
Definition: GfnSdk.h:130
Operation timed out.
Definition: GfnSdk.h:131
Messagebus IPC failures.
Definition: GfnSdk.h:141
-
Uses the default system language.
Definition: GfnSdk.h:189
+
Uses the default system language.
Definition: GfnSdk.h:240
struct GfnString GfnString
struct to reference a string with length data
-
Turkish (Turkey)
Definition: GfnSdk.h:213
-
struct to reference a string with length data
Definition: GfnSdk.h:256
-
Definition: GfnSdk.h:232
-
const char * pchString
char pointer to string
Definition: GfnSdk.h:258
-
float value4
value4 as per format
Definition: GfnSdk.h:250
-
Slovak (Slovakia)
Definition: GfnSdk.h:219
+
Turkish (Turkey)
Definition: GfnSdk.h:264
+
struct to reference a string with length data
Definition: GfnSdk.h:307
+
Definition: GfnSdk.h:283
+
const char * pchString
char pointer to string
Definition: GfnSdk.h:309
+
float value4
value4 as per format
Definition: GfnSdk.h:301
+
Slovak (Slovakia)
Definition: GfnSdk.h:270
Unhandled exceptions.
Definition: GfnSdk.h:140
Failed to setup title.
Definition: GfnSdk.h:132
-
Greek (Greece)
Definition: GfnSdk.h:194
-
Sentinel value, do not use.
Definition: GfnSdk.h:241
-
Spanish (Mexico)
Definition: GfnSdk.h:198
-
Thai (Thailand)
Definition: GfnSdk.h:212
-
Definition: GfnSdk.h:238
+
Greek (Greece)
Definition: GfnSdk.h:245
+
Sentinel value, do not use.
Definition: GfnSdk.h:292
+
Spanish (Mexico)
Definition: GfnSdk.h:249
+
Thai (Thailand)
Definition: GfnSdk.h:263
+
Definition: GfnSdk.h:289
Library API call not found.
Definition: GfnSdk.h:137
-
Finnish (Finland)
Definition: GfnSdk.h:199
+
Finnish (Finland)
Definition: GfnSdk.h:250
Geforce NOW SDK components were reachable, but could not serve the request.
Definition: GfnSdk.h:124
Generic Geforce NOW SDK internal error.
Definition: GfnSdk.h:128
-
Japanese (Japan)
Definition: GfnSdk.h:203
-
Russian (Russia)
Definition: GfnSdk.h:210
-
Portuguese (Brazil)
Definition: GfnSdk.h:207
-
French (France)
Definition: GfnSdk.h:200
-
Spanish (Spain)
Definition: GfnSdk.h:197
-
Czech (Czech Republic)
Definition: GfnSdk.h:191
-
Hungarian (Hungary)
Definition: GfnSdk.h:201
-
Portuguese (Portugal)
Definition: GfnSdk.h:208
-
English (US)
Definition: GfnSdk.h:195
+
Japanese (Japan)
Definition: GfnSdk.h:254
+
Russian (Russia)
Definition: GfnSdk.h:261
+
Portuguese (Brazil)
Definition: GfnSdk.h:258
+
French (France)
Definition: GfnSdk.h:251
+
Spanish (Spain)
Definition: GfnSdk.h:248
+
Czech (Czech Republic)
Definition: GfnSdk.h:242
+
Hungarian (Hungary)
Definition: GfnSdk.h:252
+
Portuguese (Portugal)
Definition: GfnSdk.h:259
+
English (US)
Definition: GfnSdk.h:246
Activity was canceled, for example, user canceled the download of GFN client.
Definition: GfnSdk.h:142
API call throttled.
Definition: GfnSdk.h:144
GeForceNOW Streamer hit a failure while starting a stream.
Definition: GfnSdk.h:136
-
float value2
value2 as per format
Definition: GfnSdk.h:248
-
Definition: GfnSdk.h:262
+
float value2
value2 as per format
Definition: GfnSdk.h:299
+
Definition: GfnSdk.h:313
Invalid parameter.
Definition: GfnSdk.h:127
An attempt to load a binary failed because the digital signature was found to be invalid.
Definition: GfnSdk.h:146
API call was expecting input param to have a value.
Definition: GfnSdk.h:145
Incompatible version.
Definition: GfnSdk.h:125
-
unsigned int length
length of string
Definition: GfnSdk.h:259
+
unsigned int length
length of string
Definition: GfnSdk.h:310
SDK initialized, but only cloud functionality is available.
Definition: GfnSdk.h:120
struct GfnRect GfnRect
struct to reference a rect
diff --git a/doc/SDK-GFN-RUNTIME/html/annotated.html b/doc/SDK-GFN-RUNTIME/html/annotated.html index fb9fe34..12bddca 100644 --- a/doc/SDK-GFN-RUNTIME/html/annotated.html +++ b/doc/SDK-GFN-RUNTIME/html/annotated.html @@ -27,7 +27,7 @@
diff --git a/doc/SDK-GFN-RUNTIME/html/classes.html b/doc/SDK-GFN-RUNTIME/html/classes.html index 07f6b81..3a93dfe 100644 --- a/doc/SDK-GFN-RUNTIME/html/classes.html +++ b/doc/SDK-GFN-RUNTIME/html/classes.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/files.html b/doc/SDK-GFN-RUNTIME/html/files.html index b72a539..d1e1a05 100644 --- a/doc/SDK-GFN-RUNTIME/html/files.html +++ b/doc/SDK-GFN-RUNTIME/html/files.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/functions.html b/doc/SDK-GFN-RUNTIME/html/functions.html index 87c9894..05b897f 100644 --- a/doc/SDK-GFN-RUNTIME/html/functions.html +++ b/doc/SDK-GFN-RUNTIME/html/functions.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/functions_vars.html b/doc/SDK-GFN-RUNTIME/html/functions_vars.html index efc5b97..5777caf 100644 --- a/doc/SDK-GFN-RUNTIME/html/functions_vars.html +++ b/doc/SDK-GFN-RUNTIME/html/functions_vars.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/globals.html b/doc/SDK-GFN-RUNTIME/html/globals.html index 28546d9..3f41647 100644 --- a/doc/SDK-GFN-RUNTIME/html/globals.html +++ b/doc/SDK-GFN-RUNTIME/html/globals.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/globals_defs.html b/doc/SDK-GFN-RUNTIME/html/globals_defs.html index de674b5..a75e8c1 100644 --- a/doc/SDK-GFN-RUNTIME/html/globals_defs.html +++ b/doc/SDK-GFN-RUNTIME/html/globals_defs.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/globals_e.html b/doc/SDK-GFN-RUNTIME/html/globals_e.html index deb19ce..966c0b3 100644 --- a/doc/SDK-GFN-RUNTIME/html/globals_e.html +++ b/doc/SDK-GFN-RUNTIME/html/globals_e.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/globals_enum.html b/doc/SDK-GFN-RUNTIME/html/globals_enum.html index db3f1a5..c1f732f 100644 --- a/doc/SDK-GFN-RUNTIME/html/globals_enum.html +++ b/doc/SDK-GFN-RUNTIME/html/globals_enum.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/globals_eval.html b/doc/SDK-GFN-RUNTIME/html/globals_eval.html index 1d1dcfb..754c9dd 100644 --- a/doc/SDK-GFN-RUNTIME/html/globals_eval.html +++ b/doc/SDK-GFN-RUNTIME/html/globals_eval.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/globals_f.html b/doc/SDK-GFN-RUNTIME/html/globals_f.html index c458412..414e6fe 100644 --- a/doc/SDK-GFN-RUNTIME/html/globals_f.html +++ b/doc/SDK-GFN-RUNTIME/html/globals_f.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/globals_func.html b/doc/SDK-GFN-RUNTIME/html/globals_func.html index bb1adc5..834c22c 100644 --- a/doc/SDK-GFN-RUNTIME/html/globals_func.html +++ b/doc/SDK-GFN-RUNTIME/html/globals_func.html @@ -27,7 +27,7 @@ @@ -140,12 +140,12 @@

- g -

@@ -329,12 +329,12 @@

- g -

diff --git a/doc/SDK-GFN-RUNTIME/html/globals_m.html b/doc/SDK-GFN-RUNTIME/html/globals_m.html index beb5f9a..90389ac 100644 --- a/doc/SDK-GFN-RUNTIME/html/globals_m.html +++ b/doc/SDK-GFN-RUNTIME/html/globals_m.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/globals_n.html b/doc/SDK-GFN-RUNTIME/html/globals_n.html index cb67863..ad8c835 100644 --- a/doc/SDK-GFN-RUNTIME/html/globals_n.html +++ b/doc/SDK-GFN-RUNTIME/html/globals_n.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/globals_p.html b/doc/SDK-GFN-RUNTIME/html/globals_p.html index d159acd..72a54c2 100644 --- a/doc/SDK-GFN-RUNTIME/html/globals_p.html +++ b/doc/SDK-GFN-RUNTIME/html/globals_p.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/globals_s.html b/doc/SDK-GFN-RUNTIME/html/globals_s.html index eeaaacb..505c90b 100644 --- a/doc/SDK-GFN-RUNTIME/html/globals_s.html +++ b/doc/SDK-GFN-RUNTIME/html/globals_s.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/globals_t.html b/doc/SDK-GFN-RUNTIME/html/globals_t.html index e96c9b3..8b260ce 100644 --- a/doc/SDK-GFN-RUNTIME/html/globals_t.html +++ b/doc/SDK-GFN-RUNTIME/html/globals_t.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/globals_type.html b/doc/SDK-GFN-RUNTIME/html/globals_type.html index 279eda8..3ee4d87 100644 --- a/doc/SDK-GFN-RUNTIME/html/globals_type.html +++ b/doc/SDK-GFN-RUNTIME/html/globals_type.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/group__callbacks.html b/doc/SDK-GFN-RUNTIME/html/group__callbacks.html index 4f02a38..a4c6263 100644 --- a/doc/SDK-GFN-RUNTIME/html/group__callbacks.html +++ b/doc/SDK-GFN-RUNTIME/html/group__callbacks.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/group__general.html b/doc/SDK-GFN-RUNTIME/html/group__general.html index 59f68c4..b294aa2 100644 --- a/doc/SDK-GFN-RUNTIME/html/group__general.html +++ b/doc/SDK-GFN-RUNTIME/html/group__general.html @@ -27,7 +27,7 @@ diff --git a/doc/SDK-GFN-RUNTIME/html/group__launcher.html b/doc/SDK-GFN-RUNTIME/html/group__launcher.html index b3f9d13..2207363 100644 --- a/doc/SDK-GFN-RUNTIME/html/group__launcher.html +++ b/doc/SDK-GFN-RUNTIME/html/group__launcher.html @@ -27,7 +27,7 @@ @@ -133,6 +133,8 @@ + +

diff --git a/doc/SDK-GFN-RUNTIME/html/_gfn_sdk_8h_source.html b/doc/SDK-GFN-RUNTIME/html/_gfn_sdk_8h_source.html index 9da8307..f37f321 100644 --- a/doc/SDK-GFN-RUNTIME/html/_gfn_sdk_8h_source.html +++ b/doc/SDK-GFN-RUNTIME/html/_gfn_sdk_8h_source.html @@ -27,7 +27,7 @@

GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
 
NVGFNSDK_EXPORT GfnRuntimeError gfnSendMessage (const char *pchMessage, unsigned int length)
 
NVGFNSDK_EXPORT GfnRuntimeError gfnOpenURLOnClient (const char *pchUrl)
 

Detailed Description

The functions is this section are called from a launcher in either the appropriate cloud or client environment.

@@ -662,6 +664,47 @@

Function Documentation

+
+ + +
+
+ + + + + + + + +
NVGFNSDK_EXPORT GfnRuntimeError gfnOpenURLOnClient (const char * pchUrl)
+
+
Description
Requests the client application to open a URL in their local web browser.
+

These requests are fire-and-forget.

+

Usage of this API is limited to 5 URL requests every second, with no more than 25 URL requests per minute.

+
Environment
Cloud
+
Platform
Windows, Linux
+
Usage
Use to request that the client application open a URL link in their local web browser.
+
Parameters
+ + +
pchUrl- A URL which should be opened on the client's local browser.
+
+
+
Return values
+ + + + + + + + +
gfnSuccess- Call was successful
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- API was called outside of a cloud execution environment
gfnInvalidParameter- Invalid pointer provided, or message exceeded allowed length
gfnThrottled- API call was throttled for exceeding limit of 5 messages per second or 25 total per session
gfnInternalError- API ran into an internal error
+
+
+
Returns
Otherwise, appropriate error code
+
@@ -702,11 +745,11 @@

Function Documentation

- + + -
gfnSuccess- Call was successful
gfnComError- There was SDK internal communication error
gfnInitFailure- SDK was not initialized
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
gfnInvalidParameter- Invalid parameters provided, or message exceeded allowed length
gfnThrottled- API call was throttled for exceeding limit of 30 messages per second
gfnUnhandledException- API ran into an unhandled error and caught an exception before it returned to client code
gfnCloudLibraryNotFound- GFN SDK cloud-side library could not be found
@@ -760,7 +803,9 @@

Function Documentation

gfnSuccess- Call was successful gfnInputExpected- Expected zone to have a value gfnComError- There was SDK internal communication error - gfnInitFailure- SDK was not initialized + gfnCallWrongEnvironment- If called in a client environment + gfnAPINotInit- SDK was not initialized + gfnAPINotFound- The API was not found in the GeForce NOW SDK Library gfnInvalidParameter- Invalid parameters provided gfnThrottled- API call was throttled for exceeding limit gfnUnhandledException- API ran into an unhandled error and caught an exception before it returned to client code diff --git a/doc/SDK-GFN-RUNTIME/html/group__wrapper.html b/doc/SDK-GFN-RUNTIME/html/group__wrapper.html index 9404c3e..7ff0870 100644 --- a/doc/SDK-GFN-RUNTIME/html/group__wrapper.html +++ b/doc/SDK-GFN-RUNTIME/html/group__wrapper.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
@@ -167,6 +167,8 @@   GfnRuntimeError GfnSendMessage (const char *pchMessage, unsigned int length)   +GfnRuntimeError GfnOpenURLOnClient (const char *pchUrl) + 

Detailed Description

Function Documentation

@@ -208,7 +210,7 @@

Function Documentation

- +
gfnSuccess- On success
gfnCallWrongEnvironment- If called in a client environment
gfnCloudLibraryNotFound- GeForce NOW SDK cloud-side library could not be found
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
@@ -860,6 +862,47 @@

Function Documentation

Note
This function's definition differs from the export that it wraps, as it returns a GfnRuntimeError instead of bool.
+ + + +
+
+ + + + + + + + +
GfnRuntimeError GfnOpenURLOnClient (const char * pchUrl)
+
+
Description
Requests the client application to open a URL in their local web browser.
+

These requests are fire-and-forget. Typically, the client will see a popup during their streaming session with a link that they can click to open the local web browser.

+

Usage of this API is limited to 5 URL requests every second, with no more than 25 URL requests per minute.

+
Environment
Cloud
+
Platform
Windows, Linux
+
Usage
Use to request that the client application open a URL link in their local web browser.
+
Parameters
+ + +
pchUrl- A URL which should be opened on the client's local browser.
+
+
+
Return values
+ + + + + + + + +
gfnSuccess- Call was successful
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- API was called outside of a cloud execution environment
gfnInvalidParameter- Invalid pointer provided, or message exceeded allowed length
gfnThrottled- API call was throttled for exceeding limit of 5 messages per second or 25 total per session
gfnInternalError- API ran into an internal error
+
+
+
Returns
Otherwise, appropriate error code
+
@@ -898,7 +941,8 @@

Function Documentation

Return values
- + +
gfnSuccess- On success when running in a GeForce NOW environment
gfnCloudLibraryNotFound- GeForce NOW SDK cloud-side library could not be found
gfnInvalidParameter- Callback was NULL
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
@@ -1038,7 +1082,7 @@

Function Documentation

- +
gfnSuccess- On success when running in a GeForce NOW environment
gfnInvalidParameter- Callback was NULL
gfnCloudLibraryNotFound- GeForce NOW SDK cloud-side library could not be found
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- The on-seat dll detected that it was not on a game seat
@@ -1090,7 +1134,8 @@

Function Documentation

Return values
- + +
gfnSuccess- On success when running in a GeForce NOW environment
gfnCloudLibraryNotFound- GeForce NOW SDK cloud-side library could not be found
gfnInvalidParameter- Callback was NULL
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
@@ -1228,7 +1273,7 @@

Function Documentation

- +
gfnSuccess- On success when running in a GeForce NOW environment
gfnInvalidParameter- Callback was NULL
gfnCloudLibraryNotFound- GeForce NOW SDK cloud-side library could not be found
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- The on-seat dll detected that it was not on a game seat
@@ -1321,7 +1366,8 @@

Function Documentation

- + + @@ -1380,11 +1426,12 @@

Function Documentation

- + + + -
gfnSuccess- Call was successful
gfnComError- There was SDK internal communication error
gfnInitFailure- SDK was not initialized
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
gfnInvalidParameter- Invalid parameters provided, or message exceeded allowed length
gfnThrottled- API call was throttled for exceeding limit of 30 messages per second
gfnUnhandledException- API ran into an unhandled error and caught an exception before it returned to client code
gfnSuccess- Call was successful
gfnInputExpected- Expected zone to have a value
gfnComError- There was SDK internal communication error
gfnInitFailure- SDK was not initialized
gfnCallWrongEnvironment- If called in a client environment
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
gfnInvalidParameter- Invalid parameters provided
gfnThrottled- API call was throttled for exceeding limit
gfnUnhandledException- API ran into an unhandled error and caught an exception before it returned to client code
gfnCloudLibraryNotFound- GFN SDK cloud-side library could not be found
diff --git a/doc/SDK-GFN-RUNTIME/html/index.html b/doc/SDK-GFN-RUNTIME/html/index.html index 45c7052..0b8ef13 100644 --- a/doc/SDK-GFN-RUNTIME/html/index.html +++ b/doc/SDK-GFN-RUNTIME/html/index.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
@@ -653,7 +653,9 @@

gfnSuccess- Call was successful gfnInputExpected- Expected zone to have a value gfnComError- There was SDK internal communication error - gfnInitFailure- SDK was not initialized + gfnCallWrongEnvironment- If called in a client environment + gfnAPINotInit- SDK was not initialized + gfnAPINotFound- The API was not found in the GeForce NOW SDK Library gfnInvalidParameter- Invalid parameters provided gfnThrottled- API call was throttled for exceeding limit gfnUnhandledException- API ran into an unhandled error and caught an exception before it returned to client code @@ -682,11 +684,11 @@

- + + -
gfnSuccess- Call was successful
gfnComError- There was SDK internal communication error
gfnInitFailure- SDK was not initialized
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
gfnInvalidParameter- Invalid parameters provided, or message exceeded allowed length
gfnThrottled- API call was throttled for exceeding limit of 30 messages per second
gfnUnhandledException- API ran into an unhandled error and caught an exception before it returned to client code
gfnCloudLibraryNotFound- GFN SDK cloud-side library could not be found

@@ -817,7 +819,7 @@

- +
gfnSuccess- On success when running in a GeForce NOW environment
gfnInvalidParameter- If callback was NULL
gfnCloudLibraryNotFound- If the on-seat dll was not present (Usually due to not running on a seat)
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- If the API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- If the on-seat dll detected that it was not on a game seat
@@ -844,7 +846,7 @@

- +
gfnSuccess- On success when running in a GeForce NOW environment
gfnInvalidParameter- If callback was NULL
gfnCloudLibraryNotFound- If the on-seat dll was not present (Usually due to not running on a seat)
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- If the API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- If the on-seat dll detected that it was not on a game seat
@@ -872,7 +874,7 @@

- +
gfnSuccess- On success when running in a GeForce NOW environment
gfnInvalidParameter- If callback was NULL
gfnCloudLibraryNotFound- If the on-seat dll was not present (Usually due to not running on a seat)
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- If the API was not found in the GFN SDK Library
gfnCallWrongEnvironment- If the on-seat dll detected that it was not on a game seat
@@ -899,12 +901,43 @@

- + - +
gfnSuccess- On success when running in a GFN environment
gfnInvalidParameter- If callback was NULL
gfnCloudLibraryNotFound- If the on-seat dll was not present (Usually due to not running on a seat)
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- If the API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- If the on-seat dll detected that it was not on a game seat
gfnCallWrongEnvironment- If the on-seat dll detected that it was not on a game seat
+ + + + + +
Language API
C gfnOpenURLOnClient
+
Description
Requests the client application to open a URL in their local web browser.
+

These requests are fire-and-forget.

+

Usage of this API is limited to 5 URL requests every second, with no more than 25 URL requests per minute.

+
Environment
Cloud
+
Platform
Windows, Linux
+
Usage
Use to request that the client application open a URL link in their local web browser.
+
Parameters
+ + +
pchUrl- A URL which should be opened on the client's local browser.
+
+
+
Return values
+ + + + + + + + +
gfnSuccess- Call was successful
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- API was called outside of a cloud execution environment
gfnInvalidParameter- Invalid pointer provided, or message exceeded allowed length
gfnThrottled- API call was throttled for exceeding limit of 5 messages per second or 25 total per session
gfnInternalError- API ran into an internal error
+
+
+
Returns
Otherwise, appropriate error code
diff --git a/doc/SDK-GFN-RUNTIME/html/modules.html b/doc/SDK-GFN-RUNTIME/html/modules.html index bce52ef..c713433 100644 --- a/doc/SDK-GFN-RUNTIME/html/modules.html +++ b/doc/SDK-GFN-RUNTIME/html/modules.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/pages.html b/doc/SDK-GFN-RUNTIME/html/pages.html index b720667..9749aea 100644 --- a/doc/SDK-GFN-RUNTIME/html/pages.html +++ b/doc/SDK-GFN-RUNTIME/html/pages.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/search/all_5.js b/doc/SDK-GFN-RUNTIME/html/search/all_5.js index 32d7332..066c594 100644 --- a/doc/SDK-GFN-RUNTIME/html/search/all_5.js +++ b/doc/SDK-GFN-RUNTIME/html/search/all_5.js @@ -69,11 +69,11 @@ var searchData= ['gfngetclientinfo',['gfnGetClientInfo',['../group__launcher.html#ga0a78ef87b1164626048c7c88b9de3284',1,'gfnGetClientInfo(GfnClientInfo *clientInfo): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga85103db7a6fc1dded77a1119ca182ddd',1,'GfnGetClientInfo(GfnClientInfo *clientInfo): GfnRuntimeSdk_Wrapper.h']]], ['gfngetclientip',['gfnGetClientIp',['../group__launcher.html#ga8c41a40828a5bd9a0cf087a0fd2757a8',1,'GfnRuntimeSdk_CAPI.h']]], ['gfngetclientipv4',['GfnGetClientIpV4',['../group__wrapper.html#ga1de5d6792f2d658886fe2be992945e69',1,'GfnRuntimeSdk_Wrapper.h']]], - ['gfngetclientlanguagecode',['GfnGetClientLanguageCode',['../group__wrapper.html#ga20ea89be27f64ca0a15c397b112541d3',1,'GfnGetClientLanguageCode(const char **languageCode): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#ga95ddfe6fabeec68eb40b2ffa28d604ec',1,'gfnGetClientLanguageCode(const char **ppchLanguageCode): GfnRuntimeSdk_CAPI.h']]], + ['gfngetclientlanguagecode',['gfnGetClientLanguageCode',['../group__launcher.html#ga95ddfe6fabeec68eb40b2ffa28d604ec',1,'gfnGetClientLanguageCode(const char **ppchLanguageCode): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga20ea89be27f64ca0a15c397b112541d3',1,'GfnGetClientLanguageCode(const char **languageCode): GfnRuntimeSdk_Wrapper.h']]], ['gfngetpartnerdata',['gfnGetPartnerData',['../group__launcher.html#ga16c67cdee702190faf8b8682f760a339',1,'gfnGetPartnerData(const char **ppchPartnerData): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga9223905a2b1279a175f9b5bdbc40838c',1,'GfnGetPartnerData(const char **partnerData): GfnRuntimeSdk_Wrapper.h']]], ['gfngetpartnersecuredata',['gfnGetPartnerSecureData',['../group__launcher.html#gaeddedbabbd2d5da5d525bb737b26c820',1,'gfnGetPartnerSecureData(const char **ppchPartnerSecureData): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gab4760d499a669358847649c9dc44a433',1,'GfnGetPartnerSecureData(const char **partnerSecureData): GfnRuntimeSdk_Wrapper.h']]], ['gfngetsessioninfo',['GfnGetSessionInfo',['../group__wrapper.html#ga2bbf214d68c42487b1e33f789e87330d',1,'GfnGetSessionInfo(GfnSessionInfo *sessionInfo): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#ga1f994c00e0579443e6cc920dd4a1c853',1,'gfnGetSessionInfo(GfnSessionInfo *sessionInfo): GfnRuntimeSdk_CAPI.h']]], - ['gfngettitlesavailable',['gfnGetTitlesAvailable',['../group__launcher.html#ga70ea27f47639201d48de5d3006b20481',1,'gfnGetTitlesAvailable(const char **ppchPlatformAppIds): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gad21b46157207c9083f490cea77a4dea1',1,'GfnGetTitlesAvailable(const char **platformAppIds): GfnRuntimeSdk_Wrapper.h']]], + ['gfngettitlesavailable',['GfnGetTitlesAvailable',['../group__wrapper.html#gad21b46157207c9083f490cea77a4dea1',1,'GfnGetTitlesAvailable(const char **platformAppIds): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#ga70ea27f47639201d48de5d3006b20481',1,'gfnGetTitlesAvailable(const char **ppchPlatformAppIds): GfnRuntimeSdk_CAPI.h']]], ['gfnincompatibleversion',['gfnIncompatibleVersion',['../_gfn_sdk_8h.html#a1b7d39d60da8754a0e1ed6bec951faa2afc7165ab43d69218077fe7cd65c746f6',1,'GfnSdk.h']]], ['gfninitfailure',['gfnInitFailure',['../_gfn_sdk_8h.html#a1b7d39d60da8754a0e1ed6bec951faa2acebae70b0a5038b2d8c4053ef7e686fb',1,'GfnSdk.h']]], ['gfninitializeruntimesdk',['gfnInitializeRuntimeSdk',['../group__general.html#gae75c579a109c1f89162e858d1a479d79',1,'GfnRuntimeSdk_CAPI.h']]], @@ -95,7 +95,7 @@ var searchData= ['gfnisrunningincloud',['gfnIsRunningInCloud',['../group__launcher.html#ga3b33985a46d6bd20fdea2c4865dc6a0f',1,'gfnIsRunningInCloud(): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gaa109bc7e726c5991c2efcbce8e4c0f64',1,'GfnIsRunningInCloud(bool *runningInCloud): GfnRuntimeSdk_Wrapper.h']]], ['gfnisrunningincloudassurance',['GfnIsRunningInCloudAssurance',['../_gfn_runtime_sdk___c_a_p_i_8h.html#aecdb9af8ee15731faeebae2fcec76c7b',1,'GfnIsRunningInCloudAssurance(): GfnRuntimeSdk_CAPI.h'],['../_gfn_runtime_sdk___c_a_p_i_8h.html#a1fa5e44e6ea4087ad75c7fd0ebf7bfa7',1,'GfnIsRunningInCloudAssurance(): GfnRuntimeSdk_CAPI.h']]], ['gfnisrunningincloudsecure',['GfnIsRunningInCloudSecure',['../group__wrapper.html#ga6fa2dbe2bfa3e67cd41963bf28ac5e65',1,'GfnIsRunningInCloudSecure(GfnIsRunningInCloudAssurance *assurance): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gaf5ab33bd8cd24cb26cda5bacf1764e3f',1,'gfnIsRunningInCloudSecure(GfnIsRunningInCloudAssurance *assurance): GfnRuntimeSdk_CAPI.h']]], - ['gfnistitleavailable',['GfnIsTitleAvailable',['../group__wrapper.html#gad9c160b9ea4921de4ca57d48ede5c9be',1,'GfnIsTitleAvailable(const char *platformAppId, bool *isAvailable): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gaa8b07a70503f2a24b6625fc5a7eef9cb',1,'gfnIsTitleAvailable(const char *pchPlatformAppId): GfnRuntimeSdk_CAPI.h']]], + ['gfnistitleavailable',['gfnIsTitleAvailable',['../group__launcher.html#gaa8b07a70503f2a24b6625fc5a7eef9cb',1,'gfnIsTitleAvailable(const char *pchPlatformAppId): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gad9c160b9ea4921de4ca57d48ede5c9be',1,'GfnIsTitleAvailable(const char *platformAppId, bool *isAvailable): GfnRuntimeSdk_Wrapper.h']]], ['gfnlibrarycallfailure',['gfnLibraryCallFailure',['../_gfn_sdk_8h.html#a1b7d39d60da8754a0e1ed6bec951faa2a52aa72e162efa6a6cff2042b1b08976f',1,'GfnSdk.h']]], ['gfnmaxlanguage',['gfnMaxLanguage',['../_gfn_sdk_8h.html#ab6a79fd15fb8eb5f3293444e8572acf2ab101384c92e88db62254ddd28f1f51aa',1,'GfnSdk.h']]], ['gfnnetworkstatuschangetype',['GfnNetworkStatusChangeType',['../_gfn_runtime_sdk___c_a_p_i_8h.html#acbccf3a0f3e54bd32d09f6d09df4bc04',1,'GfnNetworkStatusChangeType(): GfnRuntimeSdk_CAPI.h'],['../_gfn_runtime_sdk___c_a_p_i_8h.html#a8e803ab632f4aaf0907aad0d0b6ad1a2',1,'GfnNetworkStatusChangeType(): GfnRuntimeSdk_CAPI.h']]], @@ -104,6 +104,7 @@ var searchData= ['gfnnodata',['gfnNoData',['../_gfn_sdk_8h.html#a1b7d39d60da8754a0e1ed6bec951faa2aacaf173021c824d4245326df71163bfa',1,'GfnSdk.h']]], ['gfnnotauthorized',['gfnNotAuthorized',['../_gfn_sdk_8h.html#a1b7d39d60da8754a0e1ed6bec951faa2a1676c946befcc1ef76d2e241ff6ac3d2',1,'GfnSdk.h']]], ['gfnnotcloud',['gfnNotCloud',['../_gfn_runtime_sdk___c_a_p_i_8h.html#aecdb9af8ee15731faeebae2fcec76c7ba1306dc02272509ca563d301026b76b28',1,'GfnRuntimeSdk_CAPI.h']]], + ['gfnopenurlonclient',['gfnOpenURLOnClient',['../group__launcher.html#ga20aaf2a987d4850b922c781b0da1ee53',1,'gfnOpenURLOnClient(const char *pchUrl): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga923b0881cb5ac997f2324cee20bd38f7',1,'GfnOpenURLOnClient(const char *pchUrl): GfnRuntimeSdk_Wrapper.h']]], ['gfnos',['gfnOs',['../_gfn_runtime_sdk___c_a_p_i_8h.html#a855cf09bb9d788137222168251e69bbbaa8264e33995e412604eb073b4b122cce',1,'GfnRuntimeSdk_CAPI.h']]], ['gfnostype',['GfnOsType',['../_gfn_runtime_sdk___c_a_p_i_8h.html#a1f78681ce77a7884cf0ffe98fedc7734',1,'GfnOsType(): GfnRuntimeSdk_CAPI.h'],['../_gfn_runtime_sdk___c_a_p_i_8h.html#a1262b81ef5a52dc48ea0e50fb08d0bd4',1,'GfnOsType(): GfnRuntimeSdk_CAPI.h']]], ['gfnrect',['GfnRect',['../struct_gfn_rect.html',1,'GfnRect'],['../_gfn_sdk_8h.html#a699b993a827933fe62429d7d0ebf704a',1,'GfnRect(): GfnSdk.h']]], @@ -115,21 +116,21 @@ var searchData= ['gfnregisterexitcallback',['gfnRegisterExitCallback',['../group__callbacks.html#ga1bcb62aa8313bbe205ea4cb40246ee72',1,'gfnRegisterExitCallback(ExitCallbackSig exitCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga25cb8c18e2940a583a481612b1847a94',1,'GfnRegisterExitCallback(ExitCallbackSig exitCallback, void *userContext): GfnRuntimeSdk_Wrapper.h']]], ['gfnregisterinstallcallback',['gfnRegisterInstallCallback',['../group__callbacks.html#gaf315563a9205712a40e7a842af2ac91b',1,'gfnRegisterInstallCallback(InstallCallbackSig installCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga9a4a6595694aabf923dba25149827b9f',1,'GfnRegisterInstallCallback(InstallCallbackSig installCallback, void *userContext): GfnRuntimeSdk_Wrapper.h']]], ['gfnregistermessagecallback',['GfnRegisterMessageCallback',['../group__wrapper.html#ga35b0e52d38d41ac04854002a0e5e7df0',1,'GfnRegisterMessageCallback(MessageCallbackSig messageCallback, void *userContext): GfnRuntimeSdk_Wrapper.h'],['../_gfn_runtime_sdk___c_a_p_i_8h.html#ae5b74a7732c782eb448f5017115997c8',1,'gfnRegisterMessageCallback(MessageCallbackSig messageCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h']]], - ['gfnregisternetworkstatuscallback',['GfnRegisterNetworkStatusCallback',['../group__wrapper.html#ga281cfc18e961dfcd537dce5ad4a73519',1,'GfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void *userContext): GfnRuntimeSdk_Wrapper.h'],['../_gfn_runtime_sdk___c_a_p_i_8h.html#acaa9b6d41eac3e072f93f33429bba5e5',1,'gfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void *pUserContext): GfnRuntimeSdk_CAPI.h']]], - ['gfnregisterpausecallback',['gfnRegisterPauseCallback',['../group__callbacks.html#gaf1965f1ccce59f6748ea4eed3df4edc0',1,'gfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gac2ebe6a27df6165e2be6dac82923664f',1,'GfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void *userContext): GfnRuntimeSdk_Wrapper.h']]], - ['gfnregistersavecallback',['GfnRegisterSaveCallback',['../group__wrapper.html#gadcfae53ecb2d45b52ed2826491b58ef0',1,'GfnRegisterSaveCallback(SaveCallbackSig saveCallback, void *userContext): GfnRuntimeSdk_Wrapper.h'],['../_gfn_runtime_sdk___c_a_p_i_8h.html#a432fb9b340f4ee95166d537feee44ea0',1,'gfnRegisterSaveCallback(SaveCallbackSig saveCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h']]], - ['gfnregistersessioninitcallback',['gfnRegisterSessionInitCallback',['../_gfn_runtime_sdk___c_a_p_i_8h.html#ac19b823f27eaffd4bd318eaf0fa02449',1,'gfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gaa77104628b2a2779673e27dd52f0bfa7',1,'GfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void *userContext): GfnRuntimeSdk_Wrapper.h']]], - ['gfnregisterstreamstatuscallback',['GfnRegisterStreamStatusCallback',['../group__wrapper.html#ga658250f0c2178a8181bdc62b332c5aaf',1,'GfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void *userContext): GfnRuntimeSdk_Wrapper.h'],['../_gfn_runtime_sdk___c_a_p_i_8h.html#a63f79659507415464e65d3feb96ba15a',1,'gfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h']]], + ['gfnregisternetworkstatuscallback',['gfnRegisterNetworkStatusCallback',['../_gfn_runtime_sdk___c_a_p_i_8h.html#acaa9b6d41eac3e072f93f33429bba5e5',1,'gfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga281cfc18e961dfcd537dce5ad4a73519',1,'GfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void *userContext): GfnRuntimeSdk_Wrapper.h']]], + ['gfnregisterpausecallback',['GfnRegisterPauseCallback',['../group__wrapper.html#gac2ebe6a27df6165e2be6dac82923664f',1,'GfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void *userContext): GfnRuntimeSdk_Wrapper.h'],['../group__callbacks.html#gaf1965f1ccce59f6748ea4eed3df4edc0',1,'gfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h']]], + ['gfnregistersavecallback',['gfnRegisterSaveCallback',['../_gfn_runtime_sdk___c_a_p_i_8h.html#a432fb9b340f4ee95166d537feee44ea0',1,'gfnRegisterSaveCallback(SaveCallbackSig saveCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gadcfae53ecb2d45b52ed2826491b58ef0',1,'GfnRegisterSaveCallback(SaveCallbackSig saveCallback, void *userContext): GfnRuntimeSdk_Wrapper.h']]], + ['gfnregistersessioninitcallback',['GfnRegisterSessionInitCallback',['../group__wrapper.html#gaa77104628b2a2779673e27dd52f0bfa7',1,'GfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void *userContext): GfnRuntimeSdk_Wrapper.h'],['../_gfn_runtime_sdk___c_a_p_i_8h.html#ac19b823f27eaffd4bd318eaf0fa02449',1,'gfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h']]], + ['gfnregisterstreamstatuscallback',['gfnRegisterStreamStatusCallback',['../_gfn_runtime_sdk___c_a_p_i_8h.html#a63f79659507415464e65d3feb96ba15a',1,'gfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga658250f0c2178a8181bdc62b332c5aaf',1,'GfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void *userContext): GfnRuntimeSdk_Wrapper.h']]], ['gfnresolutioninfo',['GfnResolutionInfo',['../struct_gfn_resolution_info.html',1,'']]], ['gfnrtdaveragelatency',['gfnRTDAverageLatency',['../_gfn_runtime_sdk___c_a_p_i_8h.html#acbccf3a0f3e54bd32d09f6d09df4bc04aa8a78a94913eec788735922a136ccd1a',1,'GfnRuntimeSdk_CAPI.h']]], ['gfnruntimesdk_5fcapi_2eh',['GfnRuntimeSdk_CAPI.h',['../_gfn_runtime_sdk___c_a_p_i_8h.html',1,'']]], ['gfnruntimesdk_5fwrapper_2eh',['GfnRuntimeSdk_Wrapper.h',['../_gfn_runtime_sdk___wrapper_8h.html',1,'']]], ['gfnsafezone',['gfnSafeZone',['../_gfn_runtime_sdk___c_a_p_i_8h.html#a855cf09bb9d788137222168251e69bbbacf145d936a82c09515034ab86cd3ba86',1,'GfnRuntimeSdk_CAPI.h']]], ['gfnsdk_2eh',['GfnSdk.h',['../_gfn_sdk_8h.html',1,'']]], - ['gfnsendmessage',['GfnSendMessage',['../group__wrapper.html#ga2148a6c3f952a7731b91b070fb08e30e',1,'GfnSendMessage(const char *pchMessage, unsigned int length): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gab6a2bf6d5242c4f172d39096dda54cef',1,'gfnSendMessage(const char *pchMessage, unsigned int length): GfnRuntimeSdk_CAPI.h']]], + ['gfnsendmessage',['gfnSendMessage',['../group__launcher.html#gab6a2bf6d5242c4f172d39096dda54cef',1,'gfnSendMessage(const char *pchMessage, unsigned int length): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga2148a6c3f952a7731b91b070fb08e30e',1,'GfnSendMessage(const char *pchMessage, unsigned int length): GfnRuntimeSdk_Wrapper.h']]], ['gfnsessioninfo',['GfnSessionInfo',['../struct_gfn_session_info.html',1,'']]], ['gfnsetactionzone',['GfnSetActionZone',['../group__wrapper.html#ga1d0b3d941ab0d2127282d79df49a9130',1,'GfnSetActionZone(GfnActionType type, unsigned int id, GfnRect *zone): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gaa5e1081ccd6b903f12a6b9f05b11bf03',1,'gfnSetActionZone(GfnActionType type, unsigned int id, GfnRect *zone): GfnRuntimeSdk_CAPI.h']]], - ['gfnsetuptitle',['GfnSetupTitle',['../group__wrapper.html#ga764b9212ff5bfa2bc67f49034afa9b06',1,'GfnSetupTitle(const char *platformAppId): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gac3fd7e969aeaf3992dbb4e8220cacc6d',1,'gfnSetupTitle(const char *pchPlatformAppId): GfnRuntimeSdk_CAPI.h']]], + ['gfnsetuptitle',['gfnSetupTitle',['../group__launcher.html#gac3fd7e969aeaf3992dbb4e8220cacc6d',1,'gfnSetupTitle(const char *pchPlatformAppId): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga764b9212ff5bfa2bc67f49034afa9b06',1,'GfnSetupTitle(const char *platformAppId): GfnRuntimeSdk_Wrapper.h']]], ['gfnsetuptitlefailure',['gfnSetupTitleFailure',['../_gfn_sdk_8h.html#a1b7d39d60da8754a0e1ed6bec951faa2a7e19a6a264751aecb654251bf6b9263c',1,'GfnSdk.h']]], ['gfnshutdownruntimesdk',['gfnShutdownRuntimeSdk',['../group__general.html#gaef511b26bef12e55c0c12ea4911005a7',1,'GfnRuntimeSdk_CAPI.h']]], ['gfnshutdownsdk',['GfnShutdownSdk',['../group__wrapper.html#ga3f9e4989832c06a2e431f997848732ac',1,'GfnRuntimeSdk_Wrapper.h']]], @@ -153,7 +154,7 @@ var searchData= ['gfnsuccess',['gfnSuccess',['../_gfn_sdk_8h.html#a1b7d39d60da8754a0e1ed6bec951faa2abf5db7fca7a3d3af4996f206ad1fe095',1,'GfnSdk.h']]], ['gfnthrottled',['gfnThrottled',['../_gfn_sdk_8h.html#a1b7d39d60da8754a0e1ed6bec951faa2abc3a3d9e5273f7bda51a4894bf163925',1,'GfnSdk.h']]], ['gfntimedout',['gfnTimedOut',['../_gfn_sdk_8h.html#a1b7d39d60da8754a0e1ed6bec951faa2a33640b726436c5f12eef70eb81e3bd8f',1,'GfnSdk.h']]], - ['gfntitleexited',['gfnTitleExited',['../group__launcher.html#gab50035d62ed28d63d1033694b0655f6d',1,'gfnTitleExited(const char *pchPlatformId, const char *pchPlatformAppId): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gac34f26953cd4f1ff82f37f0f84de8332',1,'GfnTitleExited(const char *platformId, const char *platformAppId): GfnRuntimeSdk_Wrapper.h']]], + ['gfntitleexited',['GfnTitleExited',['../group__wrapper.html#gac34f26953cd4f1ff82f37f0f84de8332',1,'GfnTitleExited(const char *platformId, const char *platformAppId): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gab50035d62ed28d63d1033694b0655f6d',1,'gfnTitleExited(const char *pchPlatformId, const char *pchPlatformAppId): GfnRuntimeSdk_CAPI.h']]], ['gfnunabletoallocatememory',['gfnUnableToAllocateMemory',['../_gfn_sdk_8h.html#a1b7d39d60da8754a0e1ed6bec951faa2af73ee7f5f296791fbadeb94e123669a1',1,'GfnSdk.h']]], ['gfnunhandledexception',['gfnUnhandledException',['../_gfn_sdk_8h.html#a1b7d39d60da8754a0e1ed6bec951faa2a5f0a8dab9ffbddcdffa45ba872bd025a',1,'GfnSdk.h']]], ['gfnunsupportedapicall',['gfnUnsupportedAPICall',['../_gfn_sdk_8h.html#a1b7d39d60da8754a0e1ed6bec951faa2af8614d00764f9704a7ef2008dae157f1',1,'GfnSdk.h']]], diff --git a/doc/SDK-GFN-RUNTIME/html/search/functions_0.js b/doc/SDK-GFN-RUNTIME/html/search/functions_0.js index b8b2551..2f20ec3 100644 --- a/doc/SDK-GFN-RUNTIME/html/search/functions_0.js +++ b/doc/SDK-GFN-RUNTIME/html/search/functions_0.js @@ -7,30 +7,31 @@ var searchData= ['gfngetclientinfo',['gfnGetClientInfo',['../group__launcher.html#ga0a78ef87b1164626048c7c88b9de3284',1,'gfnGetClientInfo(GfnClientInfo *clientInfo): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga85103db7a6fc1dded77a1119ca182ddd',1,'GfnGetClientInfo(GfnClientInfo *clientInfo): GfnRuntimeSdk_Wrapper.h']]], ['gfngetclientip',['gfnGetClientIp',['../group__launcher.html#ga8c41a40828a5bd9a0cf087a0fd2757a8',1,'GfnRuntimeSdk_CAPI.h']]], ['gfngetclientipv4',['GfnGetClientIpV4',['../group__wrapper.html#ga1de5d6792f2d658886fe2be992945e69',1,'GfnRuntimeSdk_Wrapper.h']]], - ['gfngetclientlanguagecode',['GfnGetClientLanguageCode',['../group__wrapper.html#ga20ea89be27f64ca0a15c397b112541d3',1,'GfnGetClientLanguageCode(const char **languageCode): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#ga95ddfe6fabeec68eb40b2ffa28d604ec',1,'gfnGetClientLanguageCode(const char **ppchLanguageCode): GfnRuntimeSdk_CAPI.h']]], + ['gfngetclientlanguagecode',['gfnGetClientLanguageCode',['../group__launcher.html#ga95ddfe6fabeec68eb40b2ffa28d604ec',1,'gfnGetClientLanguageCode(const char **ppchLanguageCode): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga20ea89be27f64ca0a15c397b112541d3',1,'GfnGetClientLanguageCode(const char **languageCode): GfnRuntimeSdk_Wrapper.h']]], ['gfngetpartnerdata',['gfnGetPartnerData',['../group__launcher.html#ga16c67cdee702190faf8b8682f760a339',1,'gfnGetPartnerData(const char **ppchPartnerData): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga9223905a2b1279a175f9b5bdbc40838c',1,'GfnGetPartnerData(const char **partnerData): GfnRuntimeSdk_Wrapper.h']]], ['gfngetpartnersecuredata',['gfnGetPartnerSecureData',['../group__launcher.html#gaeddedbabbd2d5da5d525bb737b26c820',1,'gfnGetPartnerSecureData(const char **ppchPartnerSecureData): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gab4760d499a669358847649c9dc44a433',1,'GfnGetPartnerSecureData(const char **partnerSecureData): GfnRuntimeSdk_Wrapper.h']]], ['gfngetsessioninfo',['GfnGetSessionInfo',['../group__wrapper.html#ga2bbf214d68c42487b1e33f789e87330d',1,'GfnGetSessionInfo(GfnSessionInfo *sessionInfo): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#ga1f994c00e0579443e6cc920dd4a1c853',1,'gfnGetSessionInfo(GfnSessionInfo *sessionInfo): GfnRuntimeSdk_CAPI.h']]], - ['gfngettitlesavailable',['gfnGetTitlesAvailable',['../group__launcher.html#ga70ea27f47639201d48de5d3006b20481',1,'gfnGetTitlesAvailable(const char **ppchPlatformAppIds): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gad21b46157207c9083f490cea77a4dea1',1,'GfnGetTitlesAvailable(const char **platformAppIds): GfnRuntimeSdk_Wrapper.h']]], + ['gfngettitlesavailable',['GfnGetTitlesAvailable',['../group__wrapper.html#gad21b46157207c9083f490cea77a4dea1',1,'GfnGetTitlesAvailable(const char **platformAppIds): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#ga70ea27f47639201d48de5d3006b20481',1,'gfnGetTitlesAvailable(const char **ppchPlatformAppIds): GfnRuntimeSdk_CAPI.h']]], ['gfninitializeruntimesdk',['gfnInitializeRuntimeSdk',['../group__general.html#gae75c579a109c1f89162e858d1a479d79',1,'GfnRuntimeSdk_CAPI.h']]], ['gfninitializesdk',['GfnInitializeSdk',['../group__wrapper.html#ga9792e6f512b08afcc301da5450af896c',1,'GfnRuntimeSdk_Wrapper.h']]], ['gfninitializesdkfrompatha',['GfnInitializeSdkFromPathA',['../group__wrapper.html#ga14f86ddbf62c5827c62621878ce14485',1,'GfnRuntimeSdk_Wrapper.h']]], ['gfninitializesdkfrompathw',['GfnInitializeSdkFromPathW',['../group__wrapper.html#ga46b57108038ac5e86fc2a770219aef63',1,'GfnRuntimeSdk_Wrapper.h']]], ['gfnisrunningincloud',['gfnIsRunningInCloud',['../group__launcher.html#ga3b33985a46d6bd20fdea2c4865dc6a0f',1,'gfnIsRunningInCloud(): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gaa109bc7e726c5991c2efcbce8e4c0f64',1,'GfnIsRunningInCloud(bool *runningInCloud): GfnRuntimeSdk_Wrapper.h']]], ['gfnisrunningincloudsecure',['GfnIsRunningInCloudSecure',['../group__wrapper.html#ga6fa2dbe2bfa3e67cd41963bf28ac5e65',1,'GfnIsRunningInCloudSecure(GfnIsRunningInCloudAssurance *assurance): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gaf5ab33bd8cd24cb26cda5bacf1764e3f',1,'gfnIsRunningInCloudSecure(GfnIsRunningInCloudAssurance *assurance): GfnRuntimeSdk_CAPI.h']]], - ['gfnistitleavailable',['GfnIsTitleAvailable',['../group__wrapper.html#gad9c160b9ea4921de4ca57d48ede5c9be',1,'GfnIsTitleAvailable(const char *platformAppId, bool *isAvailable): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gaa8b07a70503f2a24b6625fc5a7eef9cb',1,'gfnIsTitleAvailable(const char *pchPlatformAppId): GfnRuntimeSdk_CAPI.h']]], + ['gfnistitleavailable',['gfnIsTitleAvailable',['../group__launcher.html#gaa8b07a70503f2a24b6625fc5a7eef9cb',1,'gfnIsTitleAvailable(const char *pchPlatformAppId): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gad9c160b9ea4921de4ca57d48ede5c9be',1,'GfnIsTitleAvailable(const char *platformAppId, bool *isAvailable): GfnRuntimeSdk_Wrapper.h']]], + ['gfnopenurlonclient',['gfnOpenURLOnClient',['../group__launcher.html#ga20aaf2a987d4850b922c781b0da1ee53',1,'gfnOpenURLOnClient(const char *pchUrl): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga923b0881cb5ac997f2324cee20bd38f7',1,'GfnOpenURLOnClient(const char *pchUrl): GfnRuntimeSdk_Wrapper.h']]], ['gfnregisterclientinfocallback',['gfnRegisterClientInfoCallback',['../_gfn_runtime_sdk___c_a_p_i_8h.html#abae3540f316b5bbd5e72b0071d3f3d5a',1,'gfnRegisterClientInfoCallback(ClientInfoCallbackSig clientInfoCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga5999e9e8f42d975ac1b13537c5f44497',1,'GfnRegisterClientInfoCallback(ClientInfoCallbackSig clientInfoCallback, void *userContext): GfnRuntimeSdk_Wrapper.h']]], ['gfnregisterexitcallback',['gfnRegisterExitCallback',['../group__callbacks.html#ga1bcb62aa8313bbe205ea4cb40246ee72',1,'gfnRegisterExitCallback(ExitCallbackSig exitCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga25cb8c18e2940a583a481612b1847a94',1,'GfnRegisterExitCallback(ExitCallbackSig exitCallback, void *userContext): GfnRuntimeSdk_Wrapper.h']]], ['gfnregisterinstallcallback',['gfnRegisterInstallCallback',['../group__callbacks.html#gaf315563a9205712a40e7a842af2ac91b',1,'gfnRegisterInstallCallback(InstallCallbackSig installCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga9a4a6595694aabf923dba25149827b9f',1,'GfnRegisterInstallCallback(InstallCallbackSig installCallback, void *userContext): GfnRuntimeSdk_Wrapper.h']]], ['gfnregistermessagecallback',['GfnRegisterMessageCallback',['../group__wrapper.html#ga35b0e52d38d41ac04854002a0e5e7df0',1,'GfnRegisterMessageCallback(MessageCallbackSig messageCallback, void *userContext): GfnRuntimeSdk_Wrapper.h'],['../_gfn_runtime_sdk___c_a_p_i_8h.html#ae5b74a7732c782eb448f5017115997c8',1,'gfnRegisterMessageCallback(MessageCallbackSig messageCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h']]], - ['gfnregisternetworkstatuscallback',['GfnRegisterNetworkStatusCallback',['../group__wrapper.html#ga281cfc18e961dfcd537dce5ad4a73519',1,'GfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void *userContext): GfnRuntimeSdk_Wrapper.h'],['../_gfn_runtime_sdk___c_a_p_i_8h.html#acaa9b6d41eac3e072f93f33429bba5e5',1,'gfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void *pUserContext): GfnRuntimeSdk_CAPI.h']]], - ['gfnregisterpausecallback',['gfnRegisterPauseCallback',['../group__callbacks.html#gaf1965f1ccce59f6748ea4eed3df4edc0',1,'gfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gac2ebe6a27df6165e2be6dac82923664f',1,'GfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void *userContext): GfnRuntimeSdk_Wrapper.h']]], - ['gfnregistersavecallback',['GfnRegisterSaveCallback',['../group__wrapper.html#gadcfae53ecb2d45b52ed2826491b58ef0',1,'GfnRegisterSaveCallback(SaveCallbackSig saveCallback, void *userContext): GfnRuntimeSdk_Wrapper.h'],['../_gfn_runtime_sdk___c_a_p_i_8h.html#a432fb9b340f4ee95166d537feee44ea0',1,'gfnRegisterSaveCallback(SaveCallbackSig saveCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h']]], - ['gfnregistersessioninitcallback',['gfnRegisterSessionInitCallback',['../_gfn_runtime_sdk___c_a_p_i_8h.html#ac19b823f27eaffd4bd318eaf0fa02449',1,'gfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gaa77104628b2a2779673e27dd52f0bfa7',1,'GfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void *userContext): GfnRuntimeSdk_Wrapper.h']]], - ['gfnregisterstreamstatuscallback',['GfnRegisterStreamStatusCallback',['../group__wrapper.html#ga658250f0c2178a8181bdc62b332c5aaf',1,'GfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void *userContext): GfnRuntimeSdk_Wrapper.h'],['../_gfn_runtime_sdk___c_a_p_i_8h.html#a63f79659507415464e65d3feb96ba15a',1,'gfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h']]], - ['gfnsendmessage',['GfnSendMessage',['../group__wrapper.html#ga2148a6c3f952a7731b91b070fb08e30e',1,'GfnSendMessage(const char *pchMessage, unsigned int length): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gab6a2bf6d5242c4f172d39096dda54cef',1,'gfnSendMessage(const char *pchMessage, unsigned int length): GfnRuntimeSdk_CAPI.h']]], + ['gfnregisternetworkstatuscallback',['gfnRegisterNetworkStatusCallback',['../_gfn_runtime_sdk___c_a_p_i_8h.html#acaa9b6d41eac3e072f93f33429bba5e5',1,'gfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga281cfc18e961dfcd537dce5ad4a73519',1,'GfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void *userContext): GfnRuntimeSdk_Wrapper.h']]], + ['gfnregisterpausecallback',['GfnRegisterPauseCallback',['../group__wrapper.html#gac2ebe6a27df6165e2be6dac82923664f',1,'GfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void *userContext): GfnRuntimeSdk_Wrapper.h'],['../group__callbacks.html#gaf1965f1ccce59f6748ea4eed3df4edc0',1,'gfnRegisterPauseCallback(PauseCallbackSig pauseCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h']]], + ['gfnregistersavecallback',['gfnRegisterSaveCallback',['../_gfn_runtime_sdk___c_a_p_i_8h.html#a432fb9b340f4ee95166d537feee44ea0',1,'gfnRegisterSaveCallback(SaveCallbackSig saveCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gadcfae53ecb2d45b52ed2826491b58ef0',1,'GfnRegisterSaveCallback(SaveCallbackSig saveCallback, void *userContext): GfnRuntimeSdk_Wrapper.h']]], + ['gfnregistersessioninitcallback',['GfnRegisterSessionInitCallback',['../group__wrapper.html#gaa77104628b2a2779673e27dd52f0bfa7',1,'GfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void *userContext): GfnRuntimeSdk_Wrapper.h'],['../_gfn_runtime_sdk___c_a_p_i_8h.html#ac19b823f27eaffd4bd318eaf0fa02449',1,'gfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h']]], + ['gfnregisterstreamstatuscallback',['gfnRegisterStreamStatusCallback',['../_gfn_runtime_sdk___c_a_p_i_8h.html#a63f79659507415464e65d3feb96ba15a',1,'gfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void *pUserContext): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga658250f0c2178a8181bdc62b332c5aaf',1,'GfnRegisterStreamStatusCallback(StreamStatusCallbackSig streamStatusCallback, void *userContext): GfnRuntimeSdk_Wrapper.h']]], + ['gfnsendmessage',['gfnSendMessage',['../group__launcher.html#gab6a2bf6d5242c4f172d39096dda54cef',1,'gfnSendMessage(const char *pchMessage, unsigned int length): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga2148a6c3f952a7731b91b070fb08e30e',1,'GfnSendMessage(const char *pchMessage, unsigned int length): GfnRuntimeSdk_Wrapper.h']]], ['gfnsetactionzone',['GfnSetActionZone',['../group__wrapper.html#ga1d0b3d941ab0d2127282d79df49a9130',1,'GfnSetActionZone(GfnActionType type, unsigned int id, GfnRect *zone): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gaa5e1081ccd6b903f12a6b9f05b11bf03',1,'gfnSetActionZone(GfnActionType type, unsigned int id, GfnRect *zone): GfnRuntimeSdk_CAPI.h']]], - ['gfnsetuptitle',['GfnSetupTitle',['../group__wrapper.html#ga764b9212ff5bfa2bc67f49034afa9b06',1,'GfnSetupTitle(const char *platformAppId): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gac3fd7e969aeaf3992dbb4e8220cacc6d',1,'gfnSetupTitle(const char *pchPlatformAppId): GfnRuntimeSdk_CAPI.h']]], + ['gfnsetuptitle',['gfnSetupTitle',['../group__launcher.html#gac3fd7e969aeaf3992dbb4e8220cacc6d',1,'gfnSetupTitle(const char *pchPlatformAppId): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#ga764b9212ff5bfa2bc67f49034afa9b06',1,'GfnSetupTitle(const char *platformAppId): GfnRuntimeSdk_Wrapper.h']]], ['gfnshutdownruntimesdk',['gfnShutdownRuntimeSdk',['../group__general.html#gaef511b26bef12e55c0c12ea4911005a7',1,'GfnRuntimeSdk_CAPI.h']]], ['gfnshutdownsdk',['GfnShutdownSdk',['../group__wrapper.html#ga3f9e4989832c06a2e431f997848732ac',1,'GfnRuntimeSdk_Wrapper.h']]], ['gfnstartstream',['GfnStartStream',['../group__wrapper.html#ga8b35031da8034f2c2e85f2f1b8ec127c',1,'GfnStartStream(StartStreamInput *startStreamInput, StartStreamResponse *response): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gaa2d0aa6c6d9325ff2ff5e2beb82c47d6',1,'gfnStartStream(StartStreamInput *pStartStreamInput, StartStreamResponse *response): GfnRuntimeSdk_CAPI.h']]], @@ -38,5 +39,5 @@ var searchData= ['gfnstopstream',['GfnStopStream',['../group__wrapper.html#ga5010fe92907ea2e4df986697d51acecc',1,'GfnStopStream(void): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gaf187e90d0ba2eb566244c2d302fed86e',1,'gfnStopStream(void): GfnRuntimeSdk_CAPI.h']]], ['gfnstopstreamasync',['GfnStopStreamAsync',['../group__wrapper.html#gaefae1a18a508d60d0bf4f8baf1c1f3ee',1,'GfnStopStreamAsync(StopStreamCallbackSig cb, void *context, unsigned int timeoutMs): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#ga2392b3feb76dc6e77cc32d39c7193428',1,'gfnStopStreamAsync(StopStreamCallbackSig cb, void *context, unsigned int timeoutMs): GfnRuntimeSdk_CAPI.h']]], ['gfnstreamstatustostring',['GfnStreamStatusToString',['../_gfn_runtime_sdk___c_a_p_i_8h.html#a20888129fbf3905d65cbc96d84b76f55',1,'GfnRuntimeSdk_CAPI.h']]], - ['gfntitleexited',['gfnTitleExited',['../group__launcher.html#gab50035d62ed28d63d1033694b0655f6d',1,'gfnTitleExited(const char *pchPlatformId, const char *pchPlatformAppId): GfnRuntimeSdk_CAPI.h'],['../group__wrapper.html#gac34f26953cd4f1ff82f37f0f84de8332',1,'GfnTitleExited(const char *platformId, const char *platformAppId): GfnRuntimeSdk_Wrapper.h']]] + ['gfntitleexited',['GfnTitleExited',['../group__wrapper.html#gac34f26953cd4f1ff82f37f0f84de8332',1,'GfnTitleExited(const char *platformId, const char *platformAppId): GfnRuntimeSdk_Wrapper.h'],['../group__launcher.html#gab50035d62ed28d63d1033694b0655f6d',1,'gfnTitleExited(const char *pchPlatformId, const char *pchPlatformAppId): GfnRuntimeSdk_CAPI.h']]] ]; diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info-members.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info-members.html index d356f3c..786fef4 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info-members.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info-members.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info.html index 5e0a281..c118ecc 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info_update_data-members.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info_update_data-members.html index eaf313d..a4ef6b6 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info_update_data-members.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info_update_data-members.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info_update_data.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info_update_data.html index 9bd17ec..ba03698 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info_update_data.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_client_info_update_data.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_challenge-members.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_challenge-members.html index 560888d..616a450 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_challenge-members.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_challenge-members.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_challenge.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_challenge.html index e85dffc..e2b480c 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_challenge.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_challenge.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_response-members.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_response-members.html index 1b2d29a..4643255 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_response-members.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_response-members.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_response.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_response.html index 62882c6..ec7e572 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_response.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_cloud_check_response.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_network_status_update_data-members.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_network_status_update_data-members.html index 5490d3b..c9f9ebb 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_network_status_update_data-members.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_network_status_update_data-members.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_network_status_update_data.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_network_status_update_data.html index b103e2f..de15184 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_network_status_update_data.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_network_status_update_data.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_rect-members.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_rect-members.html index f37bd98..863c5e6 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_rect-members.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_rect-members.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_rect.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_rect.html index 8810e26..c59d8dd 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_rect.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_rect.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_resolution_info-members.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_resolution_info-members.html index dda7177..14efa8c 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_resolution_info-members.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_resolution_info-members.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_resolution_info.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_resolution_info.html index c4ab449..e982445 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_resolution_info.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_resolution_info.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_session_info-members.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_session_info-members.html index f358574..c5ee7ff 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_session_info-members.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_session_info-members.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_session_info.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_session_info.html index d2e7d9b..c06e692 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_session_info.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_session_info.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_string-members.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_string-members.html index a782fb2..8b98cd3 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_string-members.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_string-members.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_gfn_string.html b/doc/SDK-GFN-RUNTIME/html/struct_gfn_string.html index 996801f..58f8c5b 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_gfn_string.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_gfn_string.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_start_stream_input-members.html b/doc/SDK-GFN-RUNTIME/html/struct_start_stream_input-members.html index 2e6cb17..3e73db1 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_start_stream_input-members.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_start_stream_input-members.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_start_stream_input.html b/doc/SDK-GFN-RUNTIME/html/struct_start_stream_input.html index 0c4adb6..f57a791 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_start_stream_input.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_start_stream_input.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_start_stream_response-members.html b/doc/SDK-GFN-RUNTIME/html/struct_start_stream_response-members.html index 4e18db8..60c789f 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_start_stream_response-members.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_start_stream_response-members.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_start_stream_response.html b/doc/SDK-GFN-RUNTIME/html/struct_start_stream_response.html index 8ddbd36..9c4ec63 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_start_stream_response.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_start_stream_response.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_title_installation_information-members.html b/doc/SDK-GFN-RUNTIME/html/struct_title_installation_information-members.html index 0a2d7d9..f2b28cd 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_title_installation_information-members.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_title_installation_information-members.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/struct_title_installation_information.html b/doc/SDK-GFN-RUNTIME/html/struct_title_installation_information.html index 66ae5f2..360cb9d 100644 --- a/doc/SDK-GFN-RUNTIME/html/struct_title_installation_information.html +++ b/doc/SDK-GFN-RUNTIME/html/struct_title_installation_information.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
diff --git a/doc/SDK-GFN-RUNTIME/html/wrapper_apis.html b/doc/SDK-GFN-RUNTIME/html/wrapper_apis.html index 351415e..8ddb383 100644 --- a/doc/SDK-GFN-RUNTIME/html/wrapper_apis.html +++ b/doc/SDK-GFN-RUNTIME/html/wrapper_apis.html @@ -27,7 +27,7 @@
GeForce NOW SDK -  2.3.0.34421937 +  2.4.0.34856604
@@ -696,7 +696,7 @@

- +
gfnSuccess- On success when running in a GeForce NOW environment
gfnInvalidParameter- Callback was NULL
gfnCloudLibraryNotFound- GeForce NOW SDK cloud-side library could not be found
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- The on-seat dll detected that it was not on a game seat
@@ -723,7 +723,7 @@

- +
gfnSuccess- On success
gfnCallWrongEnvironment- If called in a client environment
gfnCloudLibraryNotFound- GeForce NOW SDK cloud-side library could not be found
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
@@ -752,11 +752,12 @@

gfnSuccess- Call was successful gfnInputExpected- Expected zone to have a value gfnComError- There was SDK internal communication error - gfnInitFailure- SDK was not initialized + gfnCallWrongEnvironment- If called in a client environment + gfnAPINotInit- SDK was not initialized + gfnAPINotFound- The API was not found in the GeForce NOW SDK Library gfnInvalidParameter- Invalid parameters provided gfnThrottled- API call was throttled for exceeding limit gfnUnhandledException- API ran into an unhandled error and caught an exception before it returned to client code - gfnCloudLibraryNotFound- GFN SDK cloud-side library could not be found @@ -782,7 +783,8 @@

- + + @@ -810,7 +812,8 @@

Return values

gfnSuccess- Call was successful
gfnComError- There was SDK internal communication error
gfnInitFailure- SDK was not initialized
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
gfnInvalidParameter- Invalid parameters provided, or message exceeded allowed length
gfnThrottled- API call was throttled for exceeding limit of 30 messages per second
gfnUnhandledException- API ran into an unhandled error and caught an exception before it returned to client code
- + +
gfnSuccess- On success when running in a GeForce NOW environment
gfnCloudLibraryNotFound- GeForce NOW SDK cloud-side library could not be found
gfnInvalidParameter- Callback was NULL
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
@@ -835,7 +838,8 @@

Return values
- + +
gfnSuccess- On success when running in a GeForce NOW environment
gfnCloudLibraryNotFound- GeForce NOW SDK cloud-side library could not be found
gfnInvalidParameter- Callback was NULL
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
@@ -861,12 +865,43 @@

- + + + +
gfnSuccess- On success when running in a GeForce NOW environment
gfnInvalidParameter- Callback was NULL
gfnCloudLibraryNotFound- GeForce NOW SDK cloud-side library could not be found
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- The on-seat dll detected that it was not on a game seat
+ +

+ + + + + +
Language API
C GfnOpenURLOnClient
+
Description
Requests the client application to open a URL in their local web browser.
+

These requests are fire-and-forget. Typically, the client will see a popup during their streaming session with a link that they can click to open the local web browser.

+

Usage of this API is limited to 5 URL requests every second, with no more than 25 URL requests per minute.

+
Environment
Cloud
+
Platform
Windows, Linux
+
Usage
Use to request that the client application open a URL link in their local web browser.
+
Parameters
+ + +
pchUrl- A URL which should be opened on the client's local browser.
+
+
+
Return values
+ + + - + + + +
gfnSuccess- Call was successful
gfnAPINotInit- SDK was not initialized
gfnAPINotFound- The API was not found in the GeForce NOW SDK Library
gfnCallWrongEnvironment- The on-seat dll detected that it was not on a game seat
gfnCallWrongEnvironment- API was called outside of a cloud execution environment
gfnInvalidParameter- Invalid pointer provided, or message exceeded allowed length
gfnThrottled- API call was throttled for exceeding limit of 5 messages per second or 25 total per session
gfnInternalError- API ran into an internal error
+
Returns
Otherwise, appropriate error code
diff --git a/doc/SDK-GFN-UNREALENGINE-INTEGRATION-GUIDE.pdf b/doc/SDK-GFN-UNREALENGINE-INTEGRATION-GUIDE.pdf index 126dd21..9e4b6b8 100644 Binary files a/doc/SDK-GFN-UNREALENGINE-INTEGRATION-GUIDE.pdf and b/doc/SDK-GFN-UNREALENGINE-INTEGRATION-GUIDE.pdf differ diff --git a/doc/img/software_stack.png b/doc/img/software_stack.png new file mode 100644 index 0000000..0ac2a9c Binary files /dev/null and b/doc/img/software_stack.png differ diff --git a/include/GfnRuntimeSdk_CAPI.h b/include/GfnRuntimeSdk_CAPI.h index 87381f9..ae84a79 100644 --- a/include/GfnRuntimeSdk_CAPI.h +++ b/include/GfnRuntimeSdk_CAPI.h @@ -286,6 +286,12 @@ /// C | @ref gfnRegisterMessageCallback /// /// @copydoc gfnRegisterMessageCallback +/// +/// Language | API +/// -------- | ------------------------------------- +/// C | @ref gfnOpenURLOnClient +/// +/// @copydoc gfnOpenURLOnClient #ifndef GFN_SDK_RUNTIME_CAPI_H #define GFN_SDK_RUNTIME_CAPI_H @@ -739,7 +745,7 @@ /// /// @retval gfnSuccess - On success when running in a GeForce NOW environment /// @retval gfnInvalidParameter - If callback was NULL - /// @retval gfnCloudLibraryNotFound - If the on-seat dll was not present (Usually due to not running on a seat) + /// @retval gfnAPINotInit - SDK was not initialized /// @retval gfnAPINotFound - If the API was not found in the GeForce NOW SDK Library /// @retval gfnCallWrongEnvironment - If the on-seat dll detected that it was not on a game seat NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void* pUserContext); @@ -767,7 +773,7 @@ /// /// @retval gfnSuccess - On success when running in a GFN environment /// @retval gfnInvalidParameter - If callback was NULL - /// @retval gfnCloudLibraryNotFound - If the on-seat dll was not present (Usually due to not running on a seat) + /// @retval gfnAPINotInit - SDK was not initialized /// @retval gfnAPINotFound - If the API was not found in the GeForce NOW SDK Library /// @retval gfnCallWrongEnvironment - If the on-seat dll detected that it was not on a game seat NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterMessageCallback(MessageCallbackSig messageCallback, void* pUserContext); @@ -790,7 +796,7 @@ /// /// @retval gfnSuccess - On success when running in a GeForce NOW environment /// @retval gfnInvalidParameter - If callback was NULL - /// @retval gfnCloudLibraryNotFound - If the on-seat dll was not present (Usually due to not running on a seat) + /// @retval gfnAPINotInit - SDK was not initialized /// @retval gfnAPINotFound - If the API was not found in the GeForce NOW SDK Library /// @retval gfnCallWrongEnvironment - If the on-seat dll detected that it was not on a game seat NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterClientInfoCallback(ClientInfoCallbackSig clientInfoCallback, void* pUserContext); @@ -816,7 +822,7 @@ /// /// @retval gfnSuccess - On success when running in a GeForce NOW environment /// @retval gfnInvalidParameter - If callback was NULL - /// @retval gfnCloudLibraryNotFound - If the on-seat dll was not present (Usually due to not running on a seat) + /// @retval gfnAPINotInit - SDK was not initialized /// @retval gfnAPINotFound - If the API was not found in the GFN SDK Library /// @retval gfnCallWrongEnvironment - If the on-seat dll detected that it was not on a game seat NVGFNSDK_EXPORT GfnRuntimeError NVGFNSDKApi gfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void* pUserContext); @@ -1358,7 +1364,9 @@ /// @retval gfnSuccess - Call was successful /// @retval gfnInputExpected - Expected zone to have a value /// @retval gfnComError - There was SDK internal communication error - /// @retval gfnInitFailure - SDK was not initialized + /// @retval gfnCallWrongEnvironment - If called in a client environment + /// @retval gfnAPINotInit - SDK was not initialized + /// @retval gfnAPINotFound - The API was not found in the GeForce NOW SDK Library /// @retval gfnInvalidParameter - Invalid parameters provided /// @retval gfnThrottled - API call was throttled for exceeding limit /// @retval gfnUnhandledException - API ran into an unhandled error and caught an exception before it returned to client code @@ -1385,14 +1393,43 @@ /// /// @retval gfnSuccess - Call was successful /// @retval gfnComError - There was SDK internal communication error - /// @retval gfnInitFailure - SDK was not initialized + /// @retval gfnAPINotInit - SDK was not initialized + /// @retval gfnAPINotFound - The API was not found in the GeForce NOW SDK Library /// @retval gfnInvalidParameter - Invalid parameters provided, or message exceeded allowed length /// @retval gfnThrottled - API call was throttled for exceeding limit of 30 messages per second /// @retval gfnUnhandledException - API ran into an unhandled error and caught an exception before it returned to client code - /// @retval gfnCloudLibraryNotFound - GFN SDK cloud-side library could not be found /// @return Otherwise, appropriate error code NVGFNSDK_EXPORT GfnRuntimeError gfnSendMessage(const char* pchMessage, unsigned int length); + /// + /// @par Description + /// Requests the client application to open a URL in their local web browser. + /// + /// These requests are fire-and-forget. + /// + /// Usage of this API is limited to 5 URL requests every second, with no more than 25 URL requests per minute. + /// + /// @par Environment + /// Cloud + /// + /// @par Platform + /// Windows, Linux + /// + /// @par Usage + /// Use to request that the client application open a URL link in their local web browser. + /// + /// @param pchUrl - A URL which should be opened on the client's local browser. + /// + /// @retval gfnSuccess - Call was successful + /// @retval gfnAPINotInit - SDK was not initialized + /// @retval gfnAPINotFound - The API was not found in the GeForce NOW SDK Library + /// @retval gfnCallWrongEnvironment - API was called outside of a cloud execution environment + /// @retval gfnInvalidParameter - Invalid pointer provided, or message exceeded allowed length + /// @retval gfnThrottled - API call was throttled for exceeding limit of 5 messages per second or 25 total per session + /// @retval gfnInternalError - API ran into an internal error + /// @return Otherwise, appropriate error code + NVGFNSDK_EXPORT GfnRuntimeError gfnOpenURLOnClient(const char* pchUrl); + /// @} #ifdef __cplusplus } // extern "C" diff --git a/include/GfnRuntimeSdk_Wrapper.c b/include/GfnRuntimeSdk_Wrapper.c index 9faee37..3bdf512 100644 --- a/include/GfnRuntimeSdk_Wrapper.c +++ b/include/GfnRuntimeSdk_Wrapper.c @@ -138,6 +138,7 @@ typedef GfnRuntimeError(*gfnRegisteCallbackFnWithUIntParam)(_cb callback, unsign typedef GfnRuntimeError(*gfnAppReadyFn)(bool success, const char* status); typedef GfnRuntimeError (*gfnSetActionZoneFn)(GfnActionType type, unsigned int id, GfnRect* zone); typedef GfnRuntimeError(*gfnSendMessageFn)(const char* pchMessage, unsigned int length); +typedef GfnRuntimeError(*gfnOpenURLOnClientFn)(const char* pchUrl); typedef struct GfnSdkCloudLibrary_t { @@ -172,6 +173,7 @@ typedef struct GfnSdkCloudLibrary_t gfnRegisterCallbackFn RegisterClientInfoCallback; gfnRegisteCallbackFnWithUIntParam RegisterNetworkStatusCallback; gfnRegisterCallbackFn RegisterMessageCallback; + gfnOpenURLOnClientFn OpenURLOnClient; gfnGetSessionInfoFn GetSessionInfo; } GfnSdkCloudLibrary; @@ -498,6 +500,7 @@ GfnRuntimeError gfnLoadCloudLibrary(GfnSdkCloudLibrary** ppCloudLibrary) pCloudLibrary->RegisterClientInfoCallback = (gfnRegisterCallbackFn)gfnGetSymbol(pCloudLibrary->handle, "gfnRegisterClientInfoCallback"); pCloudLibrary->RegisterNetworkStatusCallback = (gfnRegisteCallbackFnWithUIntParam)gfnGetSymbol(pCloudLibrary->handle, "gfnRegisterNetworkStatusCallback"); pCloudLibrary->RegisterMessageCallback = (gfnRegisterCallbackFn)gfnGetSymbol(pCloudLibrary->handle, "gfnRegisterCustomMessageCallback"); + pCloudLibrary->OpenURLOnClient = (gfnOpenURLOnClientFn)gfnGetSymbol(pCloudLibrary->handle, "gfnOpenURLOnClient"); pCloudLibrary->GetSessionInfo = (gfnGetSessionInfoFn)gfnGetSymbol(pCloudLibrary->handle, "gfnGetSessionInfo"); GFN_SDK_LOG("Successfully loaded cloud libary"); @@ -1223,6 +1226,11 @@ GfnRuntimeError GfnSendMessage(const char* pchMessage, unsigned int length) { } } +GfnRuntimeError GfnOpenURLOnClient(const char* pchUrl) { + CHECK_CLOUD_ENVIRONMENT(); + DELEGATE_TO_CLOUD_LIBRARY(OpenURLOnClient, pchUrl); +} + static void GFN_CALLBACK _gfnExitCallbackWrapper(int status, void* pUnused, void* pContext) { (void)status; diff --git a/include/GfnRuntimeSdk_Wrapper.h b/include/GfnRuntimeSdk_Wrapper.h index 7188bdc..029c4c8 100644 --- a/include/GfnRuntimeSdk_Wrapper.h +++ b/include/GfnRuntimeSdk_Wrapper.h @@ -230,6 +230,12 @@ /// C | @ref GfnRegisterMessageCallback /// /// @copydoc GfnRegisterMessageCallback +/// +/// Language | API +/// -------- | ------------------------------------- +/// C | @ref GfnOpenURLOnClient +/// +/// @copydoc GfnOpenURLOnClient #include "GfnRuntimeSdk_CAPI.h" @@ -1030,7 +1036,7 @@ extern "C" /// /// @retval gfnSuccess - On success when running in a GeForce NOW environment /// @retval gfnInvalidParameter - Callback was NULL - /// @retval gfnCloudLibraryNotFound - GeForce NOW SDK cloud-side library could not be found + /// @retval gfnAPINotInit - SDK was not initialized /// @retval gfnAPINotFound - The API was not found in the GeForce NOW SDK Library /// @retval gfnCallWrongEnvironment - The on-seat dll detected that it was not on a game seat GfnRuntimeError GfnRegisterSessionInitCallback(SessionInitCallbackSig sessionInitCallback, void* userContext); @@ -1056,7 +1062,7 @@ extern "C" /// /// @retval gfnSuccess - On success when running in a GeForce NOW environment /// @retval gfnInvalidParameter - Callback was NULL - /// @retval gfnCloudLibraryNotFound - GeForce NOW SDK cloud-side library could not be found + /// @retval gfnAPINotInit - SDK was not initialized /// @retval gfnAPINotFound - The API was not found in the GeForce NOW SDK Library /// @retval gfnCallWrongEnvironment - The on-seat dll detected that it was not on a game seat GfnRuntimeError GfnRegisterMessageCallback(MessageCallbackSig messageCallback, void* userContext); @@ -1077,7 +1083,8 @@ extern "C" /// callback specified. Can be NULL. /// /// @retval gfnSuccess - On success when running in a GeForce NOW environment - /// @retval gfnCloudLibraryNotFound - GeForce NOW SDK cloud-side library could not be found + /// @retval gfnInvalidParameter - Callback was NULL + /// @retval gfnAPINotInit - SDK was not initialized /// @retval gfnAPINotFound - The API was not found in the GeForce NOW SDK Library GfnRuntimeError GfnRegisterClientInfoCallback(ClientInfoCallbackSig clientInfoCallback, void* userContext); @@ -1098,7 +1105,8 @@ extern "C" /// callback specified. Can be NULL. /// /// @retval gfnSuccess - On success when running in a GeForce NOW environment - /// @retval gfnCloudLibraryNotFound - GeForce NOW SDK cloud-side library could not be found + /// @retval gfnInvalidParameter - Callback was NULL + /// @retval gfnAPINotInit - SDK was not initialized /// @retval gfnAPINotFound - The API was not found in the GeForce NOW SDK Library GfnRuntimeError GfnRegisterNetworkStatusCallback(NetworkStatusCallbackSig networkStatusCallback, unsigned int updateRateMs, void* userContext); @@ -1120,7 +1128,7 @@ extern "C" /// /// @retval gfnSuccess - On success /// @retval gfnCallWrongEnvironment - If called in a client environment - /// @retval gfnCloudLibraryNotFound - GeForce NOW SDK cloud-side library could not be found + /// @retval gfnAPINotInit - SDK was not initialized /// @retval gfnAPINotFound - The API was not found in the GeForce NOW SDK Library GfnRuntimeError GfnAppReady(bool success, const char * status); @@ -1147,11 +1155,12 @@ extern "C" /// @retval gfnSuccess - Call was successful /// @retval gfnInputExpected - Expected zone to have a value /// @retval gfnComError - There was SDK internal communication error - /// @retval gfnInitFailure - SDK was not initialized + /// @retval gfnCallWrongEnvironment - If called in a client environment + /// @retval gfnAPINotInit - SDK was not initialized + /// @retval gfnAPINotFound - The API was not found in the GeForce NOW SDK Library /// @retval gfnInvalidParameter - Invalid parameters provided /// @retval gfnThrottled - API call was throttled for exceeding limit /// @retval gfnUnhandledException - API ran into an unhandled error and caught an exception before it returned to client code - /// @retval gfnCloudLibraryNotFound - GFN SDK cloud-side library could not be found /// @return Otherwise, appropriate error code GfnRuntimeError GfnSetActionZone(GfnActionType type, unsigned int id, GfnRect* zone); @@ -1176,14 +1185,43 @@ extern "C" /// /// @retval gfnSuccess - Call was successful /// @retval gfnComError - There was SDK internal communication error - /// @retval gfnInitFailure - SDK was not initialized + /// @retval gfnAPINotInit - SDK was not initialized + /// @retval gfnAPINotFound - The API was not found in the GeForce NOW SDK Library /// @retval gfnInvalidParameter - Invalid parameters provided, or message exceeded allowed length /// @retval gfnThrottled - API call was throttled for exceeding limit of 30 messages per second /// @retval gfnUnhandledException - API ran into an unhandled error and caught an exception before it returned to client code /// @retval gfnCloudLibraryNotFound - GFN SDK cloud-side library could not be found /// @return Otherwise, appropriate error code GfnRuntimeError GfnSendMessage(const char* pchMessage, unsigned int length); - + /// + /// @par Description + /// Requests the client application to open a URL in their local web browser. + /// + /// These requests are fire-and-forget. Typically, the client will see a popup during their streaming session with a link that + /// they can click to open the local web browser. + /// + /// Usage of this API is limited to 5 URL requests every second, with no more than 25 URL requests per minute. + /// + /// @par Environment + /// Cloud + /// + /// @par Platform + /// Windows, Linux + /// + /// @par Usage + /// Use to request that the client application open a URL link in their local web browser. + /// + /// @param pchUrl - A URL which should be opened on the client's local browser. + /// + /// @retval gfnSuccess - Call was successful + /// @retval gfnAPINotInit - SDK was not initialized + /// @retval gfnAPINotFound - The API was not found in the GeForce NOW SDK Library + /// @retval gfnCallWrongEnvironment - API was called outside of a cloud execution environment + /// @retval gfnInvalidParameter - Invalid pointer provided, or message exceeded allowed length + /// @retval gfnThrottled - API call was throttled for exceeding limit of 5 messages per second or 25 total per session + /// @retval gfnInternalError - API ran into an internal error + /// @return Otherwise, appropriate error code + GfnRuntimeError GfnOpenURLOnClient(const char* pchUrl); /// @} #ifdef __cplusplus } // extern "C" diff --git a/include/GfnSdk.h b/include/GfnSdk.h index 599bd1d..ca9daf4 100644 --- a/include/GfnSdk.h +++ b/include/GfnSdk.h @@ -80,28 +80,28 @@ #define NVGFNSDK_VERSION_MAJOR 2 /// @brief GFN SDK Minor Version -#define NVGFNSDK_VERSION_MINOR 3 +#define NVGFNSDK_VERSION_MINOR 4 /// @brief GFN SDK Version -#define NVGFNSDK_VERSION_SHORT 2.3 +#define NVGFNSDK_VERSION_SHORT 2.4 /// @brief GFN SDK Patch Version #define NVGFNSDK_VERSION_PATCH 0 /// @brief GFN SDK Build Version -#define NVGFNSDK_VERSION_BUILD 34421937 +#define NVGFNSDK_VERSION_BUILD 34856604 /// @brief GFN SDK Version -#define NVGFNSDK_VERSION_LONG 2.3.0.34421937 +#define NVGFNSDK_VERSION_LONG 2.4.0.34856604 /// @brief GFN SDK Version string -#define NVGFNSDK_VERSION_STR "2.3.0.34421937" -#define NVGFNSDK_VERSION_STR_PROD "2.3.0" +#define NVGFNSDK_VERSION_STR "2.4.0.34856604" +#define NVGFNSDK_VERSION_STR_PROD "2.4.0" /// @brief GFN SDK Build CL -#define NVGFNSDK_VERSION_BUILDCL 34421937 -#define NVGFNSDK_VERSION_BUILDH 3442 -#define NVGFNSDK_VERSION_BUILDL 1937 +#define NVGFNSDK_VERSION_BUILDCL 34856604 +#define NVGFNSDK_VERSION_BUILDH 3485 +#define NVGFNSDK_VERSION_BUILDL 6604 #ifdef __cplusplus @@ -151,6 +151,57 @@ gfnBackendError = -31 ///= MAX_NUMBER_OF_X5C_CERTS) + { + GFN_CC_LOG("Certificate count of %i exceeds expected %d\n", i, MAX_NUMBER_OF_X5C_CERTS); + result = false; + goto end; + } + size_t certLength = strlen(x5cCert); char* cert = GFN_CC_MALLOC(certLength + 1); if (cert == NULL) @@ -368,10 +375,10 @@ bool ParseHeaderJson(const char* header, char** pX5CCerts, unsigned int* numOfX5 if (pX5CCerts[i] != NULL) { GFN_CC_FREE(pX5CCerts[i]); + pX5CCerts[i] = NULL; } - *pX5CCerts = NULL; - *numOfX5CCerts = 0; } + *numOfX5CCerts = 0; } return result; } @@ -906,11 +913,6 @@ bool GfnCloudCheckVerifyAttestationData(const char* jwt, const char* nonce, unsi GFN_CC_LOG("Failed to parse header json\n"); goto end; } - if (numOfCerts > MAX_NUMBER_OF_X5C_CERTS) - { - GFN_CC_LOG("Certificate count of %i exceeds expected %d\n", numOfCerts, MAX_NUMBER_OF_X5C_CERTS); - goto end; - } if (!ParsePayloadJson(decodedPayload, nonce, nonceSize)) { diff --git a/samples/CubeSample/GfnSdkInterface.c b/samples/CubeSample/GfnSdkInterface.c index 65327d1..39a6fd9 100644 --- a/samples/CubeSample/GfnSdkInterface.c +++ b/samples/CubeSample/GfnSdkInterface.c @@ -16,11 +16,14 @@ #ifdef _WIN32 #include #include + #define MOUSEEVENTF_FROMTOUCH (0xFF515700) #else #include #include #include #include + #define max(x, y) (((x) > (y)) ? (x) : (y)) + #define min(x, y) (((x) < (y)) ? (x) : (y)) #endif #include "GfnSdkInterface.h" @@ -41,13 +44,33 @@ void ackSpinChange(struct SpinState *spin_state) void gfnsdk_decreaseSpin(struct SpinState *spin_state) { - spin_state->spin_angle -= (spin_state->spin_angle > 0) ? spin_state->spin_increment : -spin_state->spin_increment; + if (!spin_state->pause) + { + if (spin_state->spin_angle > 0) + { + spin_state->spin_angle = max(spin_state->spin_angle - spin_state->spin_increment, 0); + } + else + { + spin_state->spin_angle = min(spin_state->spin_angle + spin_state->spin_increment, 0); + } + } ackSpinChange(spin_state); } void gfnsdk_increaseSpin(struct SpinState *spin_state) { - spin_state->spin_angle += (spin_state->spin_angle > 0) ? spin_state->spin_increment: -spin_state->spin_increment; + if (!spin_state->pause) + { + if (spin_state->spin_angle > 0) + { + spin_state->spin_angle += spin_state->spin_increment; + } + else + { + spin_state->spin_angle -= spin_state->spin_increment; + } + } ackSpinChange(spin_state); } @@ -70,12 +93,23 @@ void gfnsdk_togglePauseState(struct SpinState *spin_state) void gfnsdk_reverseSpin(struct SpinState *spin_state) { - spin_state->spin_angle = -1 * spin_state->spin_angle; + if (!spin_state->pause) + { + spin_state->spin_angle = -1 * spin_state->spin_angle; + } ackSpinChange(spin_state); } void gfnsdk_handleButtonClick(UINT uMsg, int xPos, int yPos, struct SpinState *spin_state, int width) { +#ifdef _WIN32 + if ((GetMessageExtraInfo() & MOUSEEVENTF_FROMTOUCH) == MOUSEEVENTF_FROMTOUCH) + { + // Do not process duplicate Mouse event during touch input + return; + } +#endif + switch (uMsg) { #ifdef _WIN32 @@ -102,12 +136,43 @@ void gfnsdk_handleButtonClick(UINT uMsg, int xPos, int yPos, struct SpinState *s break; default: - printf("unhandled button click %X", uMsg); + printf("ERROR: unhandled button click %X\n", uMsg); return; } ackSpinChange(spin_state); } +#ifdef _WIN32 +void gfnsdk_handleTouch(HWND hWnd, UINT uMsg, UINT cInputs, HTOUCHINPUT hTouchInput, struct SpinState *spin_state, int width) +{ + PTOUCHINPUT pInputs = (PTOUCHINPUT)malloc(sizeof(TOUCHINPUT) * cInputs); + if (pInputs) + { + if (GetTouchInputInfo(hTouchInput, cInputs, pInputs, sizeof(TOUCHINPUT))) + { + // Consult only first touch + TOUCHINPUT touchInput = pInputs[0]; + if ((touchInput.dwFlags & TOUCHEVENTF_DOWN) == TOUCHEVENTF_DOWN) + { + POINT point; + point.x = TOUCH_COORD_TO_PIXEL(touchInput.x); + point.y = TOUCH_COORD_TO_PIXEL(touchInput.y); + ScreenToClient(hWnd, &point); + if (point.x < width / 2) + { + gfnsdk_decreaseSpin(spin_state); + } + else + { + gfnsdk_increaseSpin(spin_state); + } + } + CloseTouchInputHandle(hTouchInput); + } + free(pInputs); + } +} +#endif GfnApplicationCallbackResult GFN_CALLBACK MessageCallback(const GfnString* pMessage, void* pContext) { diff --git a/samples/CubeSample/GfnSdkInterface.h b/samples/CubeSample/GfnSdkInterface.h index 66bab53..19aff64 100644 --- a/samples/CubeSample/GfnSdkInterface.h +++ b/samples/CubeSample/GfnSdkInterface.h @@ -28,4 +28,8 @@ void gfnsdk_init(struct SpinState *spin_state); void gfnsdk_shutdown(); void gfnsdk_handleButtonClick(UINT uMsg, int xPos, int yPos, struct SpinState *spin_state, int width); +#ifdef _WIN32 +void gfnsdk_handleTouch(HWND hWnd, UINT uMsg, UINT cInputs, HTOUCHINPUT hTouchInput, struct SpinState *spin_state, int width); +#endif + #endif // GFN_SDK_CUBE_APP_INTERFACE_H diff --git a/samples/CubeSample/cube/cube.c b/samples/CubeSample/cube/cube.c index c6ef0b4..0318348 100644 --- a/samples/CubeSample/cube/cube.c +++ b/samples/CubeSample/cube/cube.c @@ -2607,6 +2607,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { gfnsdk_togglePauseState(&demo.spin_state); break; } + case WM_TOUCH: + gfnsdk_handleTouch(hWnd, uMsg, LOWORD(wParam), (HTOUCHINPUT)lParam, &demo.spin_state, demo.width); + break; default: break; } @@ -3856,7 +3859,10 @@ static void demo_create_surface(struct demo *demo) { createInfo.flags = 0; createInfo.hinstance = demo->connection; createInfo.hwnd = demo->window; - + // Register for touch input + if (!RegisterTouchWindow(createInfo.hwnd, 0)) { + printf("ERROR: Failed to register for touch input\n"); + } err = vkCreateWin32SurfaceKHR(demo->inst, &createInfo, NULL, &demo->surface); #elif defined(VK_USE_PLATFORM_WAYLAND_KHR) VkWaylandSurfaceCreateInfoKHR createInfo; diff --git a/samples/OpenClientBrowser/CMakeLists.txt b/samples/OpenClientBrowser/CMakeLists.txt new file mode 100644 index 0000000..60149fd --- /dev/null +++ b/samples/OpenClientBrowser/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.11) +project(GfnSdkOpenClientBrowserSample) + +set(GFN_SDK_SAMPLE_SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/Main.c +) + +add_executable(GfnSdkOpenClientBrowserSample ${GFN_SDK_SAMPLE_SOURCES}) +set_target_properties(GfnSdkOpenClientBrowserSample PROPERTIES FOLDER "Dist/Samples") + +target_link_libraries(GfnSdkOpenClientBrowserSample PRIVATE GfnSdkWrapper SampleCommonUtils) +target_include_directories(GfnSdkOpenClientBrowserSample PRIVATE ${GFN_SDK_DIST_DIR}/include) +target_include_directories(GfnSdkOpenClientBrowserSample PRIVATE ${GFN_SDK_DIST_DIR}/samples/Common) +target_compile_definitions(GfnSdkOpenClientBrowserSample PRIVATE FEATURECONFIG_HEADER) + +if (WIN32) + set_target_properties(GfnSdkOpenClientBrowserSample PROPERTIES LINK_FLAGS "/ignore:4099") +elseif (LINUX) + find_package(X11 REQUIRED) + target_include_directories(GfnSdkOpenClientBrowserSample PRIVATE ${X11_INCLUDE_DIR}) + target_link_libraries(GfnSdkOpenClientBrowserSample PRIVATE ${X11_LIBRARIES}) +endif (WIN32) + +# Copy SDK shared library to output directory to bring the sample up to date +add_custom_command( + OUTPUT "${_gfn_runtime_shared_lib}" + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${_gfn_runtime_shared_lib} + DEPENDS GfnRuntime +) +target_sources(GfnSdkOpenClientBrowserSample PRIVATE "${_gfn_runtime_shared_lib}") + +install(TARGETS GfnSdkOpenClientBrowserSample + DESTINATION ./ + COMPONENT sdk_openclientbrowserapp +) +install(FILES $ + DESTINATION ./ + COMPONENT sdk_openclientbrowserapp +) diff --git a/samples/OpenClientBrowser/Main.c b/samples/OpenClientBrowser/Main.c new file mode 100644 index 0000000..cced8ff --- /dev/null +++ b/samples/OpenClientBrowser/Main.c @@ -0,0 +1,456 @@ +// This code contains NVIDIA Confidential Information and is disclosed to you +// under a form of NVIDIA software license agreement provided separately to you. +// +// Notice +// NVIDIA Corporation and its licensors retain all intellectual property and +// proprietary rights in and to this software and related documentation and +// any modifications thereto. Any use, reproduction, disclosure, or +// distribution of this software and related documentation without an express +// license agreement from NVIDIA Corporation is strictly prohibited. +// +// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES +// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. +// +// Information and code furnished is believed to be accurate and reliable. +// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright (c) 2024 NVIDIA Corporation. All rights reserved. + +#include +#include +#include + +// Sample will use the Helper Wrapper sources to auto-manage SDK library handling +#include "GfnRuntimeSdk_Wrapper.h" + +// Max url on most browsers is 2048, so max encoded string + null character is 2733 +#define MAX_URL_LEN_WITH_NULL 2048 +#define MAX_BASE64_URL_WITH_NULL 2733 + +#ifdef _WIN32 +# include +# include +#elif __linux__ +# include +# include +// GFN on linux doesn't open up a cmd prompt by default, so we have to create a display window of our own. +# include +# include +#endif + +#if __linux__ +typedef struct x11_context +{ + Display* display; + Window window; + GC gc; +} x11_context; + +x11_context g_context; +unsigned int g_consoleLine; +#endif + +// Keyboard input helper function +static char getKeyPress() +{ +#ifdef _WIN32 + return _getch(); +#elif __linux__ + XEvent event; + while (true) + { + XNextEvent(g_context.display, &event); + if (event.type == KeyPress) { + KeySym key = XLookupKeysym(&event.xkey, 0); + return key; + } + } +#else + return ' '; +#endif +} + +// Loop exit helper function that waits for spacebar press +static char waitForInput() +{ + char c; + do + { + c = getKeyPress(); + } while (c != ' ' && (c < '1' || c > '7')); + return c; +} + +void ShowText(const char* text) +{ +#ifdef _WIN32 + printf(text); + printf("\n"); +#elif __linux__ + XDrawString(g_context.display, g_context.window, g_context.gc, 10, 20 * (g_consoleLine++), text, strlen(text)); +#endif +} + +#if __linux__ +void SetupDisplay() +{ + g_context.display = XOpenDisplay(NULL); + if (!g_context.display) { + printf("Error: Unable to open X display.\n"); + return; + } + + int screen = DefaultScreen(g_context.display); + Window rootWindow = RootWindow(g_context.display, screen); + + // Create a new window + g_context.window = XCreateSimpleWindow(g_context.display, rootWindow, 0, 0, 800, 400, 0, 0, 0); + XSelectInput(g_context.display, g_context.window, ExposureMask | KeyPressMask); + XMapWindow(g_context.display, g_context.window); + + // Set the color attributes + XColor grayColor; + Colormap colormap = DefaultColormap(g_context.display, screen); + XParseColor(g_context.display, colormap, "gray", &grayColor); + XAllocColor(g_context.display, colormap, &grayColor); + + XColor blackColor; + XParseColor(g_context.display, colormap, "black", &blackColor); + XAllocColor(g_context.display, colormap, &blackColor); + + // Create a graphics context + g_context.gc = XCreateGC(g_context.display, g_context.window, 0, NULL); + XSetForeground(g_context.display, g_context.gc, grayColor.pixel); + XSetBackground(g_context.display, g_context.gc, blackColor.pixel); +} + +void ClearDisplay() +{ + XClearWindow(g_context.display, g_context.window); + g_consoleLine = 0; +} + +void Draw() +{ + XFlush(g_context.display); +} + +void CleanupDisplay() +{ + // Clean up + XFreeGC(g_context.display, g_context.gc); + XDestroyWindow(g_context.display, g_context.window); + XCloseDisplay(g_context.display); +} +#endif + +void ShowStatus(const char* text, bool shouldWait) +{ + ShowText(text); + if (shouldWait) + { + ShowText("Press space to continue"); + } +#if __linux__ + Draw(); +#endif + if (shouldWait) + { + waitForInput(); + } +} + +void ShowError(const char* text, GfnError error, bool shouldWait) +{ + char buffer[256]; + sprintf(buffer, text, error, GfnErrorToString(error)); + ShowStatus(buffer, shouldWait); +} + +void DoSleep(int secs) +{ +#ifdef _WIN32 + Sleep(secs * 1000); +#elif __linux__ + sleep(secs); +#endif +} + +// Example application initialization method with a call to initialize the Geforce NOW Runtime SDK. +GfnError SDKInitialize() +{ + // Using gfnDefaultLanguage to tell the SDK to use the default system language for any + // UI it might show, which won't be the case in this sample. + printf("\n\nInitializing GFN SDK...\n"); + GfnError result = GfnInitializeSdk(gfnDefaultLanguage); + if (GFNSDK_FAILED(result)) + { + // Initialization errors generally indicate a flawed environment. Check error code for details. + // See GfnError in GfnSdk.h for error codes. + ShowError("Error initializing the SDK: %d(%s)", result, false); + } + else + { + // Initalization success, which the return value hints at the environment detected + switch (result) + { + case gfnInitSuccessClientOnly: + // Detected this looks like a client system (outside GFN cloud). + // Only client-related API methods should be called. + printf("SDK initalization success, detected client environment.\n"); + break; + case gfnInitSuccessCloudOnly: + // Detected this looks like a GFN cloud system (GFN server). + // Only GFN cloud-related API methods should be called. + printf("SDK initalization success, detected cloud environment.\n"); + break; + default: + // Generic success case + printf("SDK initalization success.\n"); + break; + } + } + + return result; +} + +// Example application shutdown method with a call to shut down the Geforce NOW Runtime SDK +void SDKShutdown() +{ + printf("\n\nShutting down GFN SDK...\n"); + + // Shut down the Geforce NOW Runtime SDK. Note that it's safe to call + // gfnShutdownRuntimeSdk even if the SDK was not initialized. + // If a failure is returned, its worth noting, but nothing can be done about it. + GfnError result = GfnShutdownSdk(); + printf("Shutdown call for SDK result: %d\n", result); +} + +// Example method to call the basic *insecure* Cloud Check APIs +bool BasicCloudCheck() +{ + bool bIsCloudEnvironment = false; + GfnError result = gfnSuccess; +#ifdef _WIN32 + printf("\n\nPerforming Basic Secure Cloud Check via GfnCloudCheck without Challenge and Response data...\n"); + result = GfnCloudCheck(NULL, NULL, &bIsCloudEnvironment); +#elif __linux__ + printf("\n\nPerforming Basic Cloud Check via GfnIsRunningInCloud...\n"); + result = GfnIsRunningInCloud(&bIsCloudEnvironment); +#endif + if (GFNSDK_FAILED(result)) + { + // Failure case, do not rely on bIsCloudEnvironment result + ShowError("Cloud Check API call returned error: %d(%s)", result, false); + return false; + } + else + { + printf("Application %s executing in Geforce NOW Cloud environment.\n", (bIsCloudEnvironment) ? "is" : "is not"); + } + return bIsCloudEnvironment; +} + +// Example method to call the GfnOpenURLOnClient API method. This will send a request to the GFN +// client to open the provided URL on their local web browser. +void OpenClientBrowser(const char* url) +{ + if (url == NULL) { + printf("Something went wrong. A NULL URL was passed in!\n"); + // Continue for the sake of experiencing a similar error from the SDK. + } + + // Call the SDK function + GfnError result = GfnOpenURLOnClient(url); + if (GFNSDK_FAILED(result)) + { +#if __linux__ + ShowError("Unable to send request to client. %d(%s).", result, true); +#else + ShowError("Unable to send request to client. %d(%s).", result, false); +#endif + } + else + { +#if __linux__ + ShowStatus("The client has been notified that this software wishes to open a URL locally.", true); +#else + ShowStatus("The client has been notified that this software wishes to open a URL locally.", false); +#endif + } + +#if __linux__ + Draw(); +#endif +} + +// There is a limit of 5 calls per second, 25 calls per minute. This function tests both. +void DoStressTest(const char* url) +{ + if (url == NULL) { + printf("Something went wrong. A NULL URL was passed in!\n"); + return; + } + + GfnError result; + for (int i = 0; i < 5; i++) + { + result = GfnOpenURLOnClient(url); + if (result != gfnSuccess) + { + char buffer[256]; + sprintf(buffer, "Unexpected error %%d(%%s) received when sending request %d within one second", i); + ShowError(buffer, result, false); + } + + } + result = GfnOpenURLOnClient(url); + if (result == gfnThrottled) { + ShowText("The 6th message in a second was correctly throttled."); + } + else + { + char buffer[256]; + sprintf(buffer, "Error, the 6th message within a second should have been throttled. %d(%%s) was returned instead.", result); + ShowError(buffer, result, false); + } + + // We've already sent 5, and the 6th didn't count, so now we need to do 21 more to trigger the next threshold limit. + for (int i = 0; i < 4; i++) + { + DoSleep(2); + for (int j = 0; j < 5; j++) + { + result = GfnOpenURLOnClient(url); + if (result != gfnSuccess) + { + char buffer[256]; + sprintf(buffer, "Unexpected error %%d(%%s) received when sending request %d within one minute", 5 + (5 * i) + j); + ShowError(buffer, result, false); + } + } + } + result = GfnOpenURLOnClient(url); + if (result == gfnThrottled) { + ShowText("The 26th message in a minute was correctly throttled."); + } + else + { + char buffer[256]; + sprintf(buffer, "Error, the 26th message within a minute should have been throttled. %d(%%s) was returned instead.", result); + ShowError(buffer, result, false); + } +} + +void DisplayPrompt() +{ + ShowText(" "); + ShowText("Press 1 to open https://www.nvidia.com/en-us/geforce-now/"); + ShowText("Press 2 to open https://developer.geforcenow.com/learn/guides/offerings-sdk"); + ShowText("Press 3 to attempt to open an invalid URL"); + ShowText("Press 4 to attempt to open a URL that's too long"); + ShowText("Press 5 to attempt to send a NULL URL"); + ShowText("Press 6 to attempt to send a URL with invalid characters"); + ShowText("Press 7 to send TOO MANY URLs in a short timeframe"); + ShowText(" "); + ShowText("Press space bar to exit..."); + +#if __linux__ + Draw(); +#endif +} + +// Example application main +int main(int argc, char* argv[]) +{ +#if __linux__ + SetupDisplay(); + ClearDisplay(); +#endif + // First step: Initialize the Geforce NOW Runtime SDK before any other SDK method calls. + GfnError result; + result = SDKInitialize(); + if (GFNSDK_FAILED(result)) + { + // Initialization failure, exit now, no need to call GfnShutdownSdk() + // Calling any SDK methods in this state will return indeterministic results that should not be trusted. + ShowError("SDK Initialize failed with %d(%s)! This does not appear to be a GFN Game seat. Exiting...", result, true); + return -1; + } + + // GfnOpenURLOnClient can only be called in the cloud environment, and so that must be checked first. + if (!BasicCloudCheck()) + { + ShowStatus("Not running in Geforce NOW Cloud environment, exiting early without calling Cloud APIs.", true); + return -1; + } + + char c; + do { +#if __linux__ + ClearDisplay(); +#endif + BasicCloudCheck(); + DisplayPrompt(); + c = waitForInput(); + char str_input[2]; + sprintf(str_input, "%c", c); + ShowText(str_input); + ShowText(" "); +#if __linux__ + Draw(); +#endif + switch (c) + { + case '1': + OpenClientBrowser("https://www.nvidia.com/en-us/geforce-now/"); + break; + case '2': + OpenClientBrowser("https://developer.geforcenow.com/learn/guides/offerings-sdk"); + break; + case '3': + OpenClientBrowser("httpz://www.nvidia.com/en-us/geforce-now/"); + break; + case '4': + { + char dataThatsWayTooBig[2049] = "https://www.nvidia.com/123456789"; // \0 is at index 32 + for (size_t i = 2; i < (2048 / 16); i++) + { + memcpy(&(dataThatsWayTooBig[i * 16]), "0123456789ABCDEF", 16); + } + dataThatsWayTooBig[2048] = '\0'; + OpenClientBrowser(dataThatsWayTooBig); + } + break; + case '5': + OpenClientBrowser(NULL); + break; + case '6': + OpenClientBrowser("https://www.nvidia.com/\">< ^`{|"); + break; + case '7': + DoStressTest("https://www.nvidia.com/en-us/geforce-now/"); + break; + default: + break; + } + } while (c != ' '); + + // GFN SDK Shutdown. It's safe to call ShutdownSDK even if the SDK was not initialized. + SDKShutdown(); + +#if __linux__ + CleanupDisplay(); +#endif + + return 0; +} diff --git a/samples/PartnerDataAPI/Main.c b/samples/PartnerDataAPI/Main.c index e889d67..1e50c1c 100644 --- a/samples/PartnerDataAPI/Main.c +++ b/samples/PartnerDataAPI/Main.c @@ -75,26 +75,26 @@ GfnError SDKInitialize() { // Initialization errors generally indicate a flawed environment. Check error code for details. // See GfnError in GfnSdk.h for error codes. - printf("Error initializing the SDK: %d\n", result); + printf("Error initializing the SDK: %d, %s\n", result, GfnErrorToString(result)); } else { - // Initalization success, which the return value hints at the environment detected + // Initialization success, which the return value hints at the environment detected switch (result) { case gfnInitSuccessClientOnly: // Detected this looks like a client system (outside GFN cloud). // Only client-related API methods should be called. - printf("SDK initalization success, detected client environment.\n"); + printf("SDK initialization success, detected client environment.\n"); break; case gfnInitSuccessCloudOnly: // Detected this looks like a GFN cloud system (GFN server). // Only GFN cloud-related API methods should be called. - printf("SDK initalization success, detected cloud environment.\n"); + printf("SDK initialization success, detected cloud environment.\n"); break; default: // Generic success case - printf("SDK initalization success.\n"); + printf("SDK initialization success.\n"); break; } } @@ -107,11 +107,11 @@ void SDKShutdown() { printf("\n\nShutting down GFN SDK...\n"); - // Shut down the Geforce NOW Runtime SDK. Note that it's safe to call + // Shut down the GeForce NOW Runtime SDK. Note that it's safe to call // gfnShutdownRuntimeSdk even if the SDK was not initialized. // If a failure is returned, its worth noting, but nothing can be done about it. GfnError result = GfnShutdownSdk(); - printf("Shutdown call for SDK result: %d\n", result); + printf("Shutdown call for SDK result: %d, %s\n", result, GfnErrorToString(result)); } // Example method to call the basic *insecure* Cloud Check APIs @@ -129,12 +129,12 @@ bool BasicCloudCheck() if (GFNSDK_FAILED(result)) { // Failure case, do not rely on bIsCloudEnvironment result - printf("Cloud Check API call returned error: %d\n", result); + printf("Cloud Check API call returned error: %d, %s\n", result, GfnErrorToString(result)); return false; } else { - printf("Application %s executing in Geforce NOW Cloud environment.\n", (bIsCloudEnvironment) ? "is" : "is not"); + printf("Application %s executing in GeForce NOW Cloud environment.\n", (bIsCloudEnvironment) ? "is" : "is not"); } return bIsCloudEnvironment; } @@ -162,7 +162,7 @@ void GetPartnerData() GfnFree(&partnerData); break; default: - printf("GfnGetPartnerData: API call returned error: %d\n", result); + printf("GfnGetPartnerData: API call returned error: %d, %s\n", result, GfnErrorToString(result)); break; } } @@ -191,7 +191,7 @@ void GetPartnerSecureData() GfnFree(&partnerData); break; default: - printf("GfnGetPartnerSecureData: API call returned error: %d\n", result); + printf("GfnGetPartnerSecureData: API call returned error: %d, %s\n", result, GfnErrorToString(result)); break; } } @@ -199,7 +199,7 @@ void GetPartnerSecureData() // Example application main int main(int argc, char* argv[]) { - // First step: Initialize the Geforce NOW Runtime SDK before any other SDK method calls. + // First step: Initialize the GeForce NOW Runtime SDK before any other SDK method calls. if (GFNSDK_FAILED(SDKInitialize())) { // Initialization failure, exit now, no need to call GfnShutdownSdk() @@ -210,7 +210,7 @@ int main(int argc, char* argv[]) // PartnerData-related APIs can only be called in the cloud environment, and so that must be checked first. if(!BasicCloudCheck()) { - printf("Not running in Geforce NOW Cloud environment, exiting early without calling Cloud APIs.\n"); + printf("Not running in GeForce NOW Cloud environment, exiting early without calling Cloud APIs.\n"); return -1; } diff --git a/samples/PreWarmSample/CMakeLists.txt b/samples/PreWarmSample/CMakeLists.txt new file mode 100644 index 0000000..bb33964 --- /dev/null +++ b/samples/PreWarmSample/CMakeLists.txt @@ -0,0 +1,39 @@ +cmake_minimum_required(VERSION 3.11) +project(GfnSdkPreWarmSample) + +set(GFN_SDK_SAMPLE_SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/Main.c +) + +add_executable(GfnSdkPreWarmSample ${GFN_SDK_SAMPLE_SOURCES}) +set_target_properties(GfnSdkPreWarmSample PROPERTIES FOLDER "Dist/Samples") + +target_link_libraries(GfnSdkPreWarmSample PRIVATE GfnSdkWrapper SampleCommonUtils) +target_include_directories(GfnSdkPreWarmSample PRIVATE ${GFN_SDK_DIST_DIR}/include) +target_include_directories(GfnSdkPreWarmSample PRIVATE ${GFN_SDK_DIST_DIR}/samples/Common) +target_compile_definitions(GfnSdkPreWarmSample PRIVATE FEATURECONFIG_HEADER) + +if (WIN32) + set_target_properties(GfnSdkPreWarmSample PROPERTIES LINK_FLAGS "/ignore:4099") + set(_gfn_runtime_shared_lib "${CMAKE_CURRENT_BINARY_DIR}/GfnRuntimeSdk.dll") +elseif (LINUX) + set(_gfn_runtime_shared_lib "${CMAKE_CURRENT_BINARY_DIR}/GfnRuntimeSdk.so") +endif (WIN32) + +# Copy SDK shared library to output directory to bring the sample up to date +add_custom_command( + OUTPUT "${_gfn_runtime_shared_lib}" + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ ${_gfn_runtime_shared_lib} + DEPENDS GfnRuntime +) +target_sources(GfnSdkPreWarmSample PRIVATE "${_gfn_runtime_shared_lib}") + +install(TARGETS GfnSdkPreWarmSample + DESTINATION ./ + COMPONENT sdk_prewarmapp +) +install(FILES $ + DESTINATION ./ + COMPONENT sdk_prewarmapp +) diff --git a/samples/PreWarmSample/Main.c b/samples/PreWarmSample/Main.c new file mode 100644 index 0000000..5afe7ca --- /dev/null +++ b/samples/PreWarmSample/Main.c @@ -0,0 +1,206 @@ +// This code contains NVIDIA Confidential Information and is disclosed to you +// under a form of NVIDIA software license agreement provided separately to you. +// +// Notice +// NVIDIA Corporation and its licensors retain all intellectual property and +// proprietary rights in and to this software and related documentation and +// any modifications thereto. Any use, reproduction, disclosure, or +// distribution of this software and related documentation without an express +// license agreement from NVIDIA Corporation is strictly prohibited. +// +// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES +// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. +// +// Information and code furnished is believed to be accurate and reliable. +// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright (c) 2024 NVIDIA Corporation. All rights reserved. + +#include + +// Sample will use the Helper Wrapper sources to auto-manage SDK library handling +#include "GfnRuntimeSdk_Wrapper.h" + +#ifdef _WIN32 +# include +#elif __linux__ +# include +# include +#endif + +// Keyboard input helper function +static char getKeyPress() { +#ifdef _WIN32 + return _getch(); +#elif __linux__ + struct termios oldt, newt; + char ch; + tcgetattr(STDIN_FILENO, &oldt); + newt = oldt; + newt.c_lflag &= ~(ICANON | ECHO); + tcsetattr(STDIN_FILENO, TCSANOW, &newt); + ch = getchar(); + tcsetattr(STDIN_FILENO, TCSANOW, &oldt); + return ch; +#else +#error "Unsupported platform" +#endif +} + +// Loop exit helper function that waits for spacebar press +static void waitForSpaceBar() { + printf("\n\nPress space bar to exit...\n\n"); + char c; + do + { + c = getKeyPress(); + } while (c != ' '); +} + +// Example application initialization method with a call to initialize the GeForce NOW Runtime SDK. +// Application callbacks are registered with the SDK after it is initialized if running in Cloud mode. +GfnError SDKInitialize() +{ + // Using gfnDefaultLanguage to tell the SDK to use the default system language for any + // UI it might show, which won't be the case in this sample. + printf("\n\nInitializing GFN SDK...\n"); + GfnError result = GfnInitializeSdk(gfnDefaultLanguage); + if (GFNSDK_FAILED(result)) + { + // Initialization errors generally indicate a flawed environment. Check error code for details. + // See GfnError in GfnSdk.h for error codes. + printf("Error initializing the SDK: %d, %s\n", result, GfnErrorToString(result)); + } + else + { + // Initialization success, which the return value hints at the environment detected + switch (result) + { + case gfnInitSuccessClientOnly: + // Detected this looks like a client system (outside GFN cloud). + // Only client-related API methods should be called. + printf("SDK initialization success, detected client environment.\n"); + break; + case gfnInitSuccessCloudOnly: + // Detected this looks like a GFN cloud system (GFN server). + // Only GFN cloud-related API methods should be called. + printf("SDK initialization success, detected cloud environment.\n"); + break; + default: + // Generic success case + printf("SDK initialization success.\n"); + break; + } + } + + return result; +} + +// Example application shutdown method with a call to shut down the GeForce NOW Runtime SDK +void SDKShutdown() +{ + printf("\n\nShutting down GFN SDK...\n"); + + // Shut down the GeForce NOW Runtime SDK. Note that it's safe to call + // gfnShutdownRuntimeSdk even if the SDK was not initialized. + // If a failure is returned, its worth noting, but nothing can be done about it. + GfnError result = GfnShutdownSdk(); + printf("Shutdown call for SDK result: %d, %s\n", result, GfnErrorToString(result)); +} + +// Example method to call the basic *insecure* GfnIsRunningInCloud() API method +bool BasicCloudCheck() +{ + printf("\n\nPerforming Basic Cloud Check via GfnIsRunningInCloud...\n"); + + bool bIsCloudEnvironment = false; + GfnError result = GfnIsRunningInCloud(&bIsCloudEnvironment); + if (GFNSDK_FAILED(result)) + { + // Failure case, do not rely on bIsCloudEnvironment result + printf("GfnIsRunningInCloud: API call returned error: %d, %s\n", result, GfnErrorToString(result)); + } + else + { + printf("GfnIsRunningInCloud: Application %s executing in GeForce NOW Cloud environment.\n", (bIsCloudEnvironment) ? "is" : "is not"); + } + + return bIsCloudEnvironment; +} + +GfnApplicationCallbackResult GFN_CALLBACK SessionInit(const char* params, void* pContext) +{ + // Callback for when GeForce NOW a user connects to the game seat to start a streaming session. + // Since a user is connected, now user data can be loaded + // Respond within 30 seconds with a call to gfnAppReady API + printf("SessionInit: %s\n", params); + printf("Loading user data now...\n"); + // Report that the loading was successful and application is ready for streaming to begin + GfnError result = GfnAppReady(true, "All Good!"); + if (result == gfnSuccess) + { + printf("Reported 'AppReady' with success to the SDK.\n"); + } + else + { + printf("Failed to report 'AppReady' to the SDK: %d, %s\n", result, GfnErrorToString(result)); + } + + return crCallbackSuccess; +} + +// Example application main +int main(int argc, char* argv[]) +{ + // If the application will run in standard mode or pre-warm mode, a command line parameter can be used + // to define the mode. If a parameter enables pre-warm, make sure to define it as part of GFN onboarding. + + // For code simplicity, the sample assumes it should always launch in pre-warm mode. + + // Initialize the GeForce NOW Runtime SDK before any other SDK method calls. + if (GFNSDK_FAILED(SDKInitialize())) + { + // Initialization failure, exit now, no need to call GfnShutdownSdk() + // Calling any SDK methods in this state will return indeterministic results that should not be trusted. + return -1; + } + + // Pre-warm requires to be running in GFN. + if (!BasicCloudCheck()) + { + printf("Not running in GFN, will not go through pre-warm work.\n"); + } + else + { + // At this point, application should load all common app data. + // The goal is to load everything possible now to shorten loading time + // seen by the user when they connect to the system via streaming session. + // No user data should be loaded at this time as no user is connected to the system. + printf("Loading common (non-user) data now...\n"); + + // Once loading is done, signal to GFN that the application is ready for a user session + GfnError result = GfnRegisterSessionInitCallback(SessionInit, NULL); + if (result != gfnSuccess) + { + printf("Error registering SessionInit callback: %d, %s\n", result, GfnErrorToString(result)); + } + } + + // Ready for application exit based on Spacebar press. + waitForSpaceBar(); + + // Application shutdown requires calling GFN SDK Shutdown first. + // It's safe to call ShutdownSDK even if the SDK was not initialized. + SDKShutdown(); + + return 0; +} diff --git a/samples/README.md b/samples/README.md index fda2b7c..d04a279 100644 --- a/samples/README.md +++ b/samples/README.md @@ -16,6 +16,13 @@ See the sample [README](./GdnSampleApp/README.md) for more details. ### PartnerDataAPI This C-based simple command-line sample demonstrates usage of the two APIs dedicated to obtaining partner-supplied data provided during session initialization, as well as the correct way to free the memory allocated for the data. +### PreWarmSample +This C-based simple command-line sample demonstrates usage of the APIs and callbacks associated with putting an application into PreWarm state, and waiting for a user session to connect. This allows an application to preload all common data, allowing a streaming user to bypass must of the loading time and get to the main menu much faster. + +### OpenClientBrowser +This C-based simple command-line sample demonstrates usage of the the GfnOpenURLOnClient API. Opening URLs on the connecting client's browser. + + ### SampleLauncher This C++-based sample demonstrates usage of the Launcher/Publisher application-focused APIs, including getting a list of supported titles supported by GeForce NOW, as well as invoking the GeForce NOW Windows client to start a streaming session of a title. This sample is meant to be run on both the local client and GeForce NOW cloud environment to understand how all the APIs behave in each environment. diff --git a/samples/SampleLauncher/src/gfn_sdk_demo/gfn_sdk_helper.cc b/samples/SampleLauncher/src/gfn_sdk_demo/gfn_sdk_helper.cc index d4dc713..d5de080 100644 --- a/samples/SampleLauncher/src/gfn_sdk_demo/gfn_sdk_helper.cc +++ b/samples/SampleLauncher/src/gfn_sdk_demo/gfn_sdk_helper.cc @@ -68,6 +68,7 @@ CefString GET_SESSION_INFO = "GFN_SDK_GET_SESSION_INFO"; CefString GFN_SDK_SEND_MESSAGE = "GFN_SDK_SEND_MESSAGE"; CefString GFN_SDK_REGISTER_MESSAGE_CALLBACK = "GFN_SDK_REGISTER_MESSAGE_CALLBACK"; CefString GFN_SDK_GET_ADDITIONAL_SUPPORTED_TITLES = "GFN_SDK_GET_ADDITIONAL_SUPPORTED_TITLES"; +CefString GFN_SDK_OPEN_URL_ON_CLIENT = "GFN_SDK_OPEN_URL_ON_CLIENT"; static CefString DictToJson(CefRefPtr dict) { @@ -76,47 +77,6 @@ static CefString DictToJson(CefRefPtr dict) return CefWriteJSON(json, JSON_WRITER_DEFAULT); } -static CefString GfnErrorToString(GfnError err) -{ - switch (err) - { - case GfnError::gfnSuccess: return "Success"; - case GfnError::gfnInitSuccessClientOnly: return "SDK initialization successful, but only client-side functionality available"; - case GfnError::gfnInitSuccessCloudOnly: return "SDK initialization successful, but only cloud-side functionality available"; - case GfnError::gfnInitFailure: return "SDK initialization failure"; - case GfnError::gfnDllNotPresent: return "DLL Not Present"; - case GfnError::gfnComError: return "Com Error"; - case GfnError::gfnLibraryCallFailure: return "Error Calling Library Function"; - case GfnError::gfnIncompatibleVersion: return "Incompatible Version"; - case GfnError::gfnUnableToAllocateMemory: return "Unable To Allocate Memory"; - case GfnError::gfnInvalidParameter: return "Invalid Parameter"; - case GfnError::gfnInternalError: return "Internal Error"; - case GfnError::gfnUnsupportedAPICall: return "Unsupported API Call"; - case GfnError::gfnInvalidToken: return "Invalid Token"; - case GfnError::gfnTimedOut: return "Timed Out"; - case GfnError::gfnClientDownloadFailed: return "GFN Client download failed"; - case GfnError::gfnCallWrongEnvironment: return "GFN SDK API called in wrong environment"; - case GfnError::gfnWebApiFailed: return "NVIDIA Web API returned invalid data"; - case GfnError::gfnStreamFailure: return "GFN Streamer hit a failure while starting a stream"; - case GfnError::gfnAPINotFound: return "GFN SDK API not found"; - case GfnError::gfnAPINotInit: return "GFN SDK API not initialized"; - case GfnError::gfnStreamStopFailure: return "GFN SDK failed to stop active streaming session"; - case GfnError::gfnUnhandledException: return "Unhandled exception"; - case GfnError::gfnIPCFailure: return "Inter-process Communication failure"; - case GfnError::gfnCanceled: return "GFN SDK action was canceled"; - case GfnError::gfnElevationRequired: return "GFN SDK API requires process elevation"; - case GfnError::gfnThrottled: return "GFN SDK API cannot be called in rapid succession"; - case GfnError::gfnInputExpected: return "Input parameter expected to have data"; - case GfnError::gfnBinarySignatureInvalid: return "Attemped to load a binary with invalid digital signature"; - case GfnError::gfnClientLibraryNotFound: return "GFN SDK API client library not found"; - case GfnError::gfnCloudLibraryNotFound: return "GFN SDK API cloud library not found"; - case GfnError::gfnNoData: return "Requested data is empty or does not exist"; - case GfnError::gfnNotAuthorized: return "API Call failed because it was called from unauthorized process"; - case GfnError::gfnBackendError: return "Failed to communicate with the GFN backend service"; - default: return "Unknown Error"; - } -} - static void logGfnSdkData() { #ifdef _WIN32 @@ -761,29 +721,29 @@ bool GfnSdkHelper(CefRefPtr browser, } else if (command == GET_SESSION_INFO) { - LOG(INFO) << "Calling GfnGetSessionInfo..."; - CefRefPtr response_dict = CefDictionaryValue::Create(); - GfnSessionInfo sessionInfo = { 0 }; - GfnError error = GfnError::gfnSuccess; - error = GfnGetSessionInfo(&sessionInfo); - LOG(INFO) << "GfnGetSessionInfo error result: " << error; - response_dict->SetString("errorMessage", GfnErrorToString(error)); - if (error != GfnError::gfnSuccess) - { - LOG(ERROR) << "get session info data error: " << GfnErrorToString(error); - response_dict->SetString("sessionInfo", ""); - } - else - { - response_dict->SetInt("sessionMaxDurationSec", sessionInfo.sessionMaxDurationSec); - response_dict->SetInt("sessionTimeRemainingSec", sessionInfo.sessionTimeRemainingSec); - response_dict->SetString("sessionID", sessionInfo.sessionId); - response_dict->SetInt("sessionRTXEnabled", sessionInfo.sessionRTXEnabled); - } - CefString response(DictToJson(response_dict)); - LOG(INFO) << "GfnGetSessionInfo data: " << response.ToString(); - callback->Success(response); - return true; + LOG(INFO) << "Calling GfnGetSessionInfo..."; + CefRefPtr response_dict = CefDictionaryValue::Create(); + GfnSessionInfo sessionInfo = { 0 }; + GfnError error = GfnError::gfnSuccess; + error = GfnGetSessionInfo(&sessionInfo); + LOG(INFO) << "GfnGetSessionInfo error result: " << error; + response_dict->SetString("errorMessage", GfnErrorToString(error)); + if (error != GfnError::gfnSuccess) + { + LOG(ERROR) << "get session info data error: " << GfnErrorToString(error); + response_dict->SetString("sessionInfo", ""); + } + else + { + response_dict->SetInt("sessionMaxDurationSec", sessionInfo.sessionMaxDurationSec); + response_dict->SetInt("sessionTimeRemainingSec", sessionInfo.sessionTimeRemainingSec); + response_dict->SetString("sessionID", sessionInfo.sessionId); + response_dict->SetInt("sessionRTXEnabled", sessionInfo.sessionRTXEnabled); + } + CefString response(DictToJson(response_dict)); + LOG(INFO) << "GfnGetSessionInfo data: " << response.ToString(); + callback->Success(response); + return true; } else if (command == GFN_SDK_GET_ADDITIONAL_SUPPORTED_TITLES) { @@ -799,6 +759,20 @@ bool GfnSdkHelper(CefRefPtr browser, return true; } + else if (command == GFN_SDK_OPEN_URL_ON_CLIENT) + { + CefRefPtr response_dict = CefDictionaryValue::Create(); + GfnError error = GfnOpenURLOnClient("https://www.nvidia.com/en-us/geforce-now/"); + LOG(INFO) << "GfnOpenURLOnClient error result: " << error; + response_dict->SetString("status", GfnErrorToString(error)); + if (error != GfnError::gfnSuccess) + { + LOG(ERROR) << "Open URL on Client data error: " << GfnErrorToString(error); + } + CefString response(DictToJson(response_dict)); + callback->Success(response); + return true; + } LOG(ERROR) << "Unknown command value: " << command; return false; diff --git a/samples/SampleLauncher/src/gfn_sdk_demo/resources/gfn_sdk.html b/samples/SampleLauncher/src/gfn_sdk_demo/resources/gfn_sdk.html index 7b1df81..cb73ad9 100644 --- a/samples/SampleLauncher/src/gfn_sdk_demo/resources/gfn_sdk.html +++ b/samples/SampleLauncher/src/gfn_sdk_demo/resources/gfn_sdk.html @@ -6,7 +6,7 @@ left: 0; top: 0; width: 512px; - height: 800px; + height: 900px; background: #191919; margin: 0 !important; overflow: hidden; @@ -81,6 +81,7 @@ font-size: 14px; width: 125px; height: 48px; + disabled; } .nv-button-disabled:not(:last-of-type) { @@ -132,7 +133,7 @@ color: #FFFFFFB3; background: #292929; border-color: #FFFFFFB3; - height: 350px; + height: 450px; width: 100%; } @@ -197,20 +198,21 @@
- - - - - - - - - - - - - - + + + + + + + + + + + + + + +
Launcher Token: @@ -743,6 +745,21 @@ }); } + /** + * Call into GFN SDK to request a URL be opened on the client's browser. + */ + function openUrlOnClient() { + window.cefQuery({ + request: JSON.stringify({ + command: 'GFN_SDK_OPEN_URL_ON_CLIENT' + }), + onSuccess: function (response) { + var data = JSON.parse(response); + setStatus('Open URL Request returned with status: ' + data.status); + } + }); + } + /** * Calls into GFN SDK to request a copy of the 3rd party data passed into the * StartStream API. @@ -875,15 +892,46 @@ } function setButtonState(isCloud) { + // For APIs that work on both client and cloud systems, we'll auto-enable them here + document.getElementById('init-control').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('init-control').disabled = false; + document.getElementById('is-running-in-cloud').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('is-running-in-cloud').disabled = false; + document.getElementById('is-running-in-cloud-secure').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('is-running-in-cloud-secure').disabled = false; + document.getElementById('cloud-check-validation').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('cloud-check-validation').disabled = false; + document.getElementById('cloud-check-no-validation').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('cloud-check-no-validation').disabled = false; + document.getElementById('send-message').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('send-message').disabled = false; + if (isCloud) { - // is cloud system, disable all client-specific buttons + // Is cloud system, disable all client-specific buttons and enable all cloud-specific buttons document.getElementById('next-game').setAttribute("class", 'nv-button-disabled nv-chevron nv-chevron-right-align'); document.getElementById('next-game').disabled = true; document.getElementById('previous-game').setAttribute("class", 'nv-button-disabled nv-chevron'); document.getElementById('previous-game').disabled = true; + + document.getElementById('client-ip').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('client-ip').disabled = false; + document.getElementById('client-country-code').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('client-country-code').disabled = false; + document.getElementById('client-language-code').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('client-language-code').disabled = false; + document.getElementById('client-info').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('client-info').disabled = false; + document.getElementById('session-info').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('session-info').disabled = false; + document.getElementById('partner-data').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('partner-data').disabled = false; + document.getElementById('partner-secure-data').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('partner-secure-data').disabled = false; + document.getElementById('url-on-client').setAttribute("class", 'nv-button flyout-button'); + document.getElementById('url-on-client').disabled = false; } else { - // is client, enable client specific buttons and disable all cloud-specific buttons + // Is client, enable client specific buttons and disable all cloud-specific buttons document.getElementById('next-game').setAttribute("class", 'nv-button nv-chevron nv-chevron-right-align'); document.getElementById('next-game').disabled = false; document.getElementById('previous-game').setAttribute("class", 'nv-button nv-chevron'); @@ -905,6 +953,8 @@ document.getElementById('partner-data').disabled = true; document.getElementById('partner-secure-data').setAttribute("class", 'nv-button-disabled flyout-button'); document.getElementById('partner-secure-data').disabled = true; + document.getElementById('url-on-client').setAttribute("class", 'nv-button-disabled flyout-button'); + document.getElementById('url-on-client').disabled = true; } } diff --git a/samples/SampleLauncher/src/shared/browser_util.cc b/samples/SampleLauncher/src/shared/browser_util.cc index 3df8bdc..da538f0 100644 --- a/samples/SampleLauncher/src/shared/browser_util.cc +++ b/samples/SampleLauncher/src/shared/browser_util.cc @@ -10,7 +10,7 @@ #include "include/wrapper/cef_helpers.h" #define WINDOW_WIDTH 512 -#define WINDOW_HEIGHT 800 +#define WINDOW_HEIGHT 900 namespace shared {