diff options
| author | Dave Clark <[email protected]> | 2018-03-08 15:12:56 -0500 |
|---|---|---|
| committer | Dave Clark <[email protected]> | 2018-03-08 15:12:56 -0500 |
| commit | 1f9ad132c6d6288d9a842120c05a1a4431800e1c (patch) | |
| tree | 6b9e178c558d1055b1cc4d0d6ab989ee3fc76448 | |
| parent | Update CHANGELOG.md (diff) | |
| download | gfesdk-1f9ad132c6d6288d9a842120c05a1a4431800e1c.tar.xz gfesdk-1f9ad132c6d6288d9a842120c05a1a4431800e1c.zip | |
Push GfeSDK 1.1.191
Plus documentation updates
28 files changed, 441 insertions, 112 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index e2f9fbe..13614f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,14 @@ # Changelog +## NVIDIA GfeSDK 1.1 (2018-03-08) +### Improvements +* **Buildable Sample** Fix release configurations of sample, and fix compiler errors + ## NVIDIA GfeSDK 1.1 (2018-02-28) ### Improvements * **Documentation** Top level documentation improvements * **Buildable Sample** Include a simple DXUT buildable sample in the distribution, demonstrating API calls -* **Spectre/Meltdown** Compile with /QSpectre protection +* **Spectre/Meltdown** Compile with /Qspectre protection * **Assets** Add final assets and image guide ### Bug Fixes @@ -1,55 +1,55 @@ -Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
-
-NVIDIA CORPORATION and its licensors retain all intellectual property
-and proprietary rights in and to this software, 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.
-
-This software distribution uses the following open source software:
-
-===Protocol Buffers version 3.1.0===
-
-This license applies to all parts of Protocol Buffers except the following:
-
- - Atomicops support for generic gcc, located in
- src/google/protobuf/stubs/atomicops_internals_generic_gcc.h.
- This file is copyrighted by Red Hat Inc.
-
- - Atomicops support for AIX/POWER, located in
- src/google/protobuf/stubs/atomicops_internals_power.h.
- This file is copyrighted by Bloomberg Finance LP.
-
-Copyright 2014, Google Inc. All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
- * Neither the name of Google Inc. nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Code generated by the Protocol Buffer compiler is owned by the owner
-of the input file used when generating it. This code is not
-standalone and requires a support library to be linked with it. This
-support library is itself covered by the above license.
-
+Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, 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. + +This software distribution uses the following open source software: + +===Protocol Buffers version 3.1.0=== + +This license applies to all parts of Protocol Buffers except the following: + + - Atomicops support for generic gcc, located in + src/google/protobuf/stubs/atomicops_internals_generic_gcc.h. + This file is copyrighted by Red Hat Inc. + + - Atomicops support for AIX/POWER, located in + src/google/protobuf/stubs/atomicops_internals_power.h. + This file is copyrighted by Bloomberg Finance LP. + +Copyright 2014, Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. + @@ -11,6 +11,7 @@ over time that benefit from games and applications working in concert with GFE f ## Shadowplay Highlights * [Highlights Integration FAQ](./doc/NVIDIA_ShadowPlay_Highlights_FAQ.md) +* [SDK and Highlights Developer FAQ](./doc/NVIDIA_GfeSDK_Developer_FAQ.md)  diff --git a/doc/NVIDIA_GfeSDK_Developer_FAQ.md b/doc/NVIDIA_GfeSDK_Developer_FAQ.md new file mode 100644 index 0000000..2b234ff --- /dev/null +++ b/doc/NVIDIA_GfeSDK_Developer_FAQ.md @@ -0,0 +1,65 @@ +# Technical/Integration Questions +## Testing Error Codes +* Be warned that there are non-zero success codes in the SPH SDK. Recommend developers to use the macro below (defined already in sdk_types_ipc.h) + +```c++ +inline bool NVGSDK_SUCCEEDED(NVGSDK_RetCode r) {return r >= 0;} +``` + +## Where is the debug logging for Highlights? +* **`C:\Users\<USER>\AppData\Local\NVIDIA Corporation\GfeSDK`** + +## Where is the Highlights Enabled user permissions file located? +* **`C:\Users\<USER>\AppData\Local\NVIDIA Corporation\GfeSDK\<GAME>\permissions.json`** + +## Does Shadow Play Highlights support OGL/Vulcan/DX9/DX10? +* The GFE back-end to capture video for Highlights is not using a particular graphics API, and neither is the Highlights SDK. Thus, there is no dependency and all graphics APIs are supported. + +## Can I avoid the notification overlay when capturing a highlight? +* Yes. You can make use of NVGSDK_HighlightType::NVGSDK_HIGHLIGHT_TYPE_UNANNOUNCED which will disable the notification overlay + +## UWP Support? +* UWP is not yet supported in ShadowPlay Highlights. +## Is SPH SDK DLL signed? +* Yes. It's recommended to securely load the DLL by verifying the location and signature of the DLL. + +## Is there a maximum and/or minimum for the values **NVGSDK_VideoHighlightParams.startDelta** and **NVGSDK_VideoHighlightParams.endDelta**? +* There is no numeric limit on the startDelta. Anything outside the bounds of the current capture session start point just cuts at the capture session start. The endDelta time is limited to 60 seconds into the future from the request timestamp. This is an arbitrary limit inside ShadowPlay, which could be adjusted to be longer if a developer needed, howerver, such a request can be handled by asking the developer to move their call later with a longer startDelta. + +* Note: Large positive values for endDelta will mean that notifications will not appear until that delta is reached. Even if the match will have ended. + +## Why does this windowed or borderless window game minimizes/pause when the Permissions or Highlight Summary dialogs come up? +* This is a product of game design and Share Overlay design. When a game is windowed or running borderless window, the GFE overlay UIs are drawn as a UI window at the top of the Z-order stack. This means the game actually loses focus in such cases. Different games are implemented differently to handle this; some minimize, some pause, some continue to play but drop sound. Our guideless to Highlight-enabled games is to not behave different when they lose focus, so that the GFE UI coming up is not a jarring experience. + +# Miscellaneous/General Questions + + + +## Can I limit how much HDD space highlights will take up? +* Yes, this is controlled via the GeForce Experience settings menu. they will appear in the GFE share overlay (Alt-Z to open). They appear in the settings under "Highlights". See the image above. + +## How can a user filter specific highlights on/off? +* After a game has initialized the SPH SDK and created highlights, they will appear in the GFE share overlay (Alt-Z to open). They appear in the settings under "Highlights". See image above. + +## How are highlights managed in the temporary files location? +* Highlights are added to the temp location until the maximum disk space allocated is hit. Once that happens, then space is reclaimed by deleting oldest first, deleting just enough to get the new highlight(s) saved into that folder under the allowed limit. Note the location on HDD where temp videos are stored is configured in the Share Overay settings menu. See image above. + +* If the user reduces the maximum disk space (for example, dragging it from 5GB to 2GB), then there is a delete option to delete all the oldest ones first to get under the 2GB limit. + +* If the user sets a small enough max limit that not even a single long highlight can be saved in that location, then the highlight will skip being saved. This means its important that game developers keep their highlight lengths concise. A boss battle is not a highlight. A boss kill is a highlight. + +## Where does highlights saves temporary video files? +* This is a setting in the GFE settings for Highlights. See above image. + +* Defaults to: **`C:\Users\<USER>\AppData\Local\Temp\Highlights\<Game>`** +* Note, it may be under "Base Profile", if you have enabled beta experimental features. + +## Can we still access the clip meta data after the game session? How long does it persist? +* Highlight meta-data is stored as long as the highlight is. Note that highlights are removed in FIFO order to maintain user-defined disk space limits. In practice this means a game can bring up a highlights summary (referencing the relevant highlight group) well after those highlights are captured. The typical use case for this is the game maintaining a history of matches and allowing the user to review per-match highlights. + +## Resetting Permission Dialog +* The permissions dialog should be displayed anytime GFE fails to find the file **`C:\Users\<user>\AppData\Local\NVIDIA Corporation\GfeSDK\<GameName>\permissions.json`**. This can be due to the game changing title or the file being deleted. The later can be used to reset the game's permissions and to visualize the permissions dialog again. + +## Resetting User Interest Overrides +* You can delete your local user interest overrides by deleting: +* **`C:\Users\<user>\AppData\Local\NVIDIA Corporation\NVIDIA Share\Highlights\<Game>`** diff --git a/doc/html/_c_h_a_n_g_e_l_o_g_8md_source.html b/doc/html/_c_h_a_n_g_e_l_o_g_8md_source.html index 5f90a9f..eccca5a 100644 --- a/doc/html/_c_h_a_n_g_e_l_o_g_8md_source.html +++ b/doc/html/_c_h_a_n_g_e_l_o_g_8md_source.html @@ -85,7 +85,7 @@ $(document).ready(function(){initNavTree('_c_h_a_n_g_e_l_o_g_8md.html','');}); <div class="title">C:/u/workspace/dev/sdkwinauto/doc/CHANGELOG.md</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> # Changelog {#section_changelog}</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> ## NVIDIA GfeSDK 1.1 (2018-02-28)</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> ### Improvements</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> * **Documentation** Top level documentation improvements</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> * **Buildable Sample** Include a simple DXUT buildable sample in the distribution, demonstrating API calls</div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> * **Spectre/Meltdown** Compile with /QSpectre protection</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> * **Assets** Add final assets and image guide</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> ### Bug Fixes</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> * **Fix Crash** Fix race condition on startup</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> ## NVIDIA GfeSDK 1.1 (2018-01-22)</div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> ### API Changes</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> * **SDK version incremented to 1.1** Allows old SDK clients to work with upcoming 3.13 GFE</div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> * **Highlights Config parameters validation** Rejects Highlights of invalid type and significance</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> ## NVIDIA GfeSDK 1.0 (2018-01-16)</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> </div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> ### Features for GFE 3.13+</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> * **UWP Support** Add support to Universal Windows Platform games</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> * **Target PID** Add support for whitelisted apps to record another process's PID</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> ### API Changes</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> * **Target PID** Added to NVGSDK_Create call</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> * **Unannounced Highlight Type** To prevent showing Highlights notifications for certain applications</div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> ### Improvements</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> * **UWP Sample App** Add a new sample MarbleMaze app that demostrates a full Highlights integration</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> ### Bug Fixes</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> * **Fix Crash** Was occasionally crashing when communication with the backend could not be established</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> ## NVIDIA GfeSDK 1.0 (2017-08-01)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> ### API Changes</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> * **Timeout:** Was returning NVGSDK_ERR_GENERIC when IPC call timed now. Now returning NVGSDK_ERR_IPC_FAILED</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> * **windows.h:** Removed windows.h from public includes</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> * **globals:** Removed macros from global namespace</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> * **stdint:** Standardize on stdint types</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> * **stdbool:** Use stdbool in C API instead of integer 0/1</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> * **namespace:** Renamed namespace from gfesdk to GfeSDK, and wrapped C API in namespace when using C++ bindings</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> * **Highlights split:** Split all Highlights features into their own headers</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> * **C++ Bindings RAII:** Update C++ bindings to follow recognized C++ idioms</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> * **package structure:** Standardize package structure to look like other GameWorks packages</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> * **Typed Callbacks:** Return typed callback data instead of void*</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> * **Naming:** Match naming standard to other GameWorks packages</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> ### Improvements</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> * **Thread Model**: Improve thread model. Prevent callbacks from occurring after Release. Allow Polling of callbacks</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> * **Documentation**: Improved and expanded documentation</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> ### Bug Fixes</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> * **Whitelist:** Fix error causing ShadowPlay to not whitelist game correctly.</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> * **Fix crash:** Was crashing when the same game ran twice.</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> * **Input validation:** Added input validation to return an error for C++ create instead of crash</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> * **Timeout return value:** Was returning NVGSDK_ERR_GENERIC instead of NVGSDK_ERR_IPC_FAILED</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> ### Features for GFE 3.9+</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> * **In-Game Overlay Notification:** Notify the app when the in-game overlay opens or closes.</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> ## NVIDIA GfeSDK 1.0 (2017-07-10)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> ### Features for GFE 3.8+</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> * **ShadowPlay Highlights** Help Gamers automatically capture their most exciting gaming moments.</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> # Changelog</div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> </div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> ## NVIDIA GfeSDK 1.1 (2018-03-08)</div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> ### Improvements</div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> * **Buildable Sample** Fix release configurations of sample, and fix compiler errors</div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> ## NVIDIA GfeSDK 1.1 (2018-02-28)</div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> ### Improvements</div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> * **Documentation** Top level documentation improvements</div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> * **Buildable Sample** Include a simple DXUT buildable sample in the distribution, demonstrating API calls</div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> * **Spectre/Meltdown** Compile with /Qspectre protection</div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> * **Assets** Add final assets and image guide</div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> ### Bug Fixes</div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> * **Fix Crash** Fix race condition on startup</div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> ## NVIDIA GfeSDK 1.1 (2018-01-22)</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> ### API Changes</div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> * **SDK version incremented to 1.1** Allows old SDK clients to work with upcoming 3.13 GFE</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> * **Highlights Config parameters validation** Rejects Highlights of invalid type and significance</div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> ## NVIDIA GfeSDK 1.0 (2018-01-16)</div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> ### Features for GFE 3.13+</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> * **Target PID** Add support for whitelisted apps to record another process's PID</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> </div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> ### API Changes</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> * **Target PID** Added to NVGSDK_Create call</div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> * **Unannounced Highlight Type** To prevent showing Highlights notifications for certain applications</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> ### Bug Fixes</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> * **Fix Crash** Was occasionally crashing when communication with the backend could not be established</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> ## NVIDIA GfeSDK 1.0 (2017-08-01)</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> ### API Changes</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> * **Timeout:** Was returning NVGSDK_ERR_GENERIC when IPC call timed now. Now returning NVGSDK_ERR_IPC_FAILED</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> * **windows.h:** Removed windows.h from public includes</div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> * **globals:** Removed macros from global namespace</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> * **stdint:** Standardize on stdint types</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> * **stdbool:** Use stdbool in C API instead of integer 0/1</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> * **namespace:** Renamed namespace from gfesdk to GfeSDK, and wrapped C API in namespace when using C++ bindings</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> * **Highlights split:** Split all Highlights features into their own headers</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> * **C++ Bindings RAII:** Update C++ bindings to follow recognized C++ idioms</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span> * **package structure:** Standardize package structure to look like other GameWorks packages</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> * **Typed Callbacks:** Return typed callback data instead of void*</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span> * **Naming:** Match naming standard to other GameWorks packages</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span> ### Improvements</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> * **Thread Model**: Improve thread model. Prevent callbacks from occurring after Release. Allow Polling of callbacks</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span> * **Documentation**: Improved and expanded documentation</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> ### Bug Fixes</div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> * **Whitelist:** Fix error causing ShadowPlay to not whitelist game correctly.</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> * **Fix crash:** Was crashing when the same game ran twice.</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> * **Input validation:** Added input validation to return an error for C++ create instead of crash</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> * **Timeout return value:** Was returning NVGSDK_ERR_GENERIC instead of NVGSDK_ERR_IPC_FAILED</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> ### Features for GFE 3.9+</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> * **In-Game Overlay Notification:** Notify the app when the in-game overlay opens or closes.</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> ## NVIDIA GfeSDK 1.0 (2017-07-10)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> ### Features for GFE 3.8+</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> * **ShadowPlay Highlights** Help Gamers automatically capture their most exciting gaming moments.</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div></div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- HTML footer for doxygen 1.8.12--> <!-- start footer part --> diff --git a/doc/html/config_8h_source.html b/doc/html/config_8h_source.html index fc4dbcc..80d9521 100644 --- a/doc/html/config_8h_source.html +++ b/doc/html/config_8h_source.html @@ -85,7 +85,7 @@ $(document).ready(function(){initNavTree('config_8h_source.html','');}); <div class="title">config.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> *</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * NVIDIA CORPORATION and its licensors retain all intellectual property</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * and proprietary rights in and to this software, related documentation</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * and any modifications thereto. Any use, reproduction, disclosure or</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * distribution of this software and related documentation without an express</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * license agreement from NVIDIA CORPORATION is strictly prohibited.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> */</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Warning: This file is generated. Do not edit</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#ifndef _NVGSDK_CONFIG_H_</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#define _NVGSDK_CONFIG_H_</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "gfe3_product_version.h"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#define NVGSDK_PROJECT_NAME "GfeSDK"</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define NVGSDK_VERSION_MAJOR 1</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define NVGSDK_VERSION_MINOR 1</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#define NVGSDK_BUILD_NUMBER 186</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#define NVGSDK_BUILD_HASH 6007c22a</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#define NVGSDK_BUILD_HASH_STR "6007c22a"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#endif // _NVGSDK_CONFIG_H_</span></div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> *</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * NVIDIA CORPORATION and its licensors retain all intellectual property</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * and proprietary rights in and to this software, related documentation</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * and any modifications thereto. Any use, reproduction, disclosure or</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> * distribution of this software and related documentation without an express</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> * license agreement from NVIDIA CORPORATION is strictly prohibited.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> */</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> </div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// Warning: This file is generated. Do not edit</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#ifndef _NVGSDK_CONFIG_H_</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#define _NVGSDK_CONFIG_H_</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "gfe3_product_version.h"</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> </div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#define NVGSDK_PROJECT_NAME "GfeSDK"</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#define NVGSDK_VERSION_MAJOR 1</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#define NVGSDK_VERSION_MINOR 1</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#define NVGSDK_BUILD_NUMBER 191</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#define NVGSDK_BUILD_HASH c04488e1</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#define NVGSDK_BUILD_HASH_STR "c04488e1"</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#endif // _NVGSDK_CONFIG_H_</span></div></div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- HTML footer for doxygen 1.8.12--> <!-- start footer part --> diff --git a/doc/html/gfe3__product__version_8h_source.html b/doc/html/gfe3__product__version_8h_source.html index 6f36b74..76de5d4 100644 --- a/doc/html/gfe3__product__version_8h_source.html +++ b/doc/html/gfe3__product__version_8h_source.html @@ -85,7 +85,7 @@ $(document).ready(function(){initNavTree('gfe3__product__version_8h_source.html' <div class="title">gfe3_product_version.h</div> </div> </div><!--header--> <div class="contents"> -<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// GFE3 product version: </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// - A.B.XY.N, if X > 0</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// - A.B.Y.N, otherwise</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// A - Major release version.</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// B - Minor release version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// X - _dev to _rel_next rebase counter.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// Y - _rel_next to _rel rebase counter.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// N - Build counter.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_MAJOR 3</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_MINOR 14</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_DEV_REBASE 0</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_RNEXT_REBASE 0</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_BUILD 30</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// Composite version values. We don't concatenate them here automatically because</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// (a) one can't use L-based wchar_t conversion with preprocessor-concatenated terminals; and</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// (b) some build scripts rely upon the explicit value for NVIDIA_GFE3_VERSION / NVIDIA_GFE3_VERSION_STRING_DOT</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">//</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// Format: A,B,XY,N</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION 3,14,0,30</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Format: A.B.XY.N</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_DOT 3.14.0.30</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// Format: "A.B.XY.N"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_STRING "3.14.0.30"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// Some common strings</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">//</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#define NVIDIA_GFE3_PRODUCT_NAME "NVIDIA GeForce Experience"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">//</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// These values are taken from nvVer.h</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">//</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#define NV_COMPANY_NAME_STRING_SHORT "NVIDIA"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#define NV_COMPANY_NAME_STRING_FULL "NVIDIA Corporation"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#define NV_COMPANY_NAME_STRING NV_COMPANY_NAME_STRING_FULL</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define NV_COPYRIGHT_YEAR "2017"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#define NV_COPYRIGHT "(C) " NV_COPYRIGHT_YEAR " " NV_COMPANY_NAME_STRING_FULL ". All rights reserved." // Please do not use the non-ascii copyright symbol for (C).</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div></div><!-- fragment --></div><!-- contents --> +<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">// GFE3 product version: </span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// - A.B.XY.N, if X > 0</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">// - A.B.Y.N, otherwise</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">//</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// A - Major release version.</span></div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">// B - Minor release version.</span></div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">// X - _dev to _rel_next rebase counter.</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// Y - _rel_next to _rel rebase counter.</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// N - Build counter.</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_MAJOR 3</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_MINOR 14</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_DEV_REBASE 0</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_RNEXT_REBASE 0</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_BUILD 39</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">//</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// Composite version values. We don't concatenate them here automatically because</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">// (a) one can't use L-based wchar_t conversion with preprocessor-concatenated terminals; and</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">// (b) some build scripts rely upon the explicit value for NVIDIA_GFE3_VERSION / NVIDIA_GFE3_VERSION_STRING_DOT</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">//</span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> </div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">// Format: A,B,XY,N</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION 3,14,0,39</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Format: A.B.XY.N</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_DOT 3.14.0.39</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">// Format: "A.B.XY.N"</span></div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#define NVIDIA_GFE3_VERSION_STRING "3.14.0.39"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">//</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// Some common strings</span></div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">//</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#define NVIDIA_GFE3_PRODUCT_NAME "NVIDIA GeForce Experience"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> </div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">//</span></div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// These values are taken from nvVer.h</span></div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">//</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="preprocessor">#define NV_COMPANY_NAME_STRING_SHORT "NVIDIA"</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="preprocessor">#define NV_COMPANY_NAME_STRING_FULL "NVIDIA Corporation"</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="preprocessor">#define NV_COMPANY_NAME_STRING NV_COMPANY_NAME_STRING_FULL</span></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="preprocessor">#define NV_COPYRIGHT_YEAR "2017"</span></div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="preprocessor">#define NV_COPYRIGHT "(C) " NV_COPYRIGHT_YEAR " " NV_COMPANY_NAME_STRING_FULL ". All rights reserved." // Please do not use the non-ascii copyright symbol for (C).</span></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> </div></div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- HTML footer for doxygen 1.8.12--> <!-- start footer part --> diff --git a/doc/html/index.html b/doc/html/index.html index b8e54b8..9a665c8 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -91,14 +91,14 @@ $(document).ready(function(){initNavTree('index.html','');}); <h4>C++ Bindings</h4> <div class="fragment"><div class="line"> <a class="code" href="struct_gfe_s_d_k_1_1_create_input_params.html">GfeSDK::CreateInputParams</a> createParams;</div><div class="line"> createParams.appName = <span class="stringliteral">"gfesdk_dx_sample"</span>; <span class="comment">// appName will only be used/visible if GFE cannot identify your game</span></div><div class="line"> createParams.pollForCallbacks = <span class="keyword">true</span>; <span class="comment">// We will poll for callbacks in order to execute callbacks from game loop</span></div><div class="line"> createParams.requiredScopes = {</div><div class="line"> GfeSDK::NVGSDK_SCOPE_HIGHLIGHTS,</div><div class="line"> GfeSDK::NVGSDK_SCOPE_HIGHLIGHTS_VIDEO,</div><div class="line"> GfeSDK::NVGSDK_SCOPE_HIGHLIGHTS_SCREENSHOT</div><div class="line"> };</div><div class="line"> createParams.notificationCallback = std::bind(&HighlightsWrapper::OnNotification, <span class="keyword">this</span>, _1, _2);</div><div class="line"></div><div class="line"> <a class="code" href="struct_gfe_s_d_k_1_1_create_response.html">GfeSDK::CreateResponse</a> response;</div><div class="line"> <a class="code" href="class_gfe_s_d_k_1_1_core.html">GfeSDK::Core</a>* gfesdkCore = <a class="code" href="class_gfe_s_d_k_1_1_core.html#a0cb93acb8b273072cd37348c9b206e0d">GfeSDK::Core::Create</a>(createParams, response);</div><div class="line"> <span class="keywordflow">if</span> (GfeSDK::NVGSDK_SUCCEEDED(response.returnCode))</div><div class="line"> {</div><div class="line"> <span class="comment">// Valid handle has been returned</span></div><div class="line"> LOG(<span class="stringliteral">"Success: %s"</span>, GfeSDK::NVGSDK_RetCodeToString(response.returnCode));</div><div class="line"> LOG(<span class="stringliteral">"PC is running GFE version %s"</span>, response.nvidiaGfeVersion.c_str());</div><div class="line"> LOG(<span class="stringliteral">"PC is running GfeSDK version %d.%d"</span>, response.versionMajor, response.versionMinor);</div><div class="line"> <span class="keywordflow">switch</span> (response.returnCode)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">case</span> GfeSDK::NVGSDK_SUCCESS_VERSION_OLD_GFE:</div><div class="line"> LOG(<span class="stringliteral">"Compatible, but the user should update to the latest version of GFE."</span>);</div><div class="line"> <span class="keywordflow">break</span>;</div><div class="line"> <span class="keywordflow">case</span> GfeSDK::NVGSDK_SUCCESS_VERSION_OLD_SDK:</div><div class="line"> LOG(<span class="stringliteral">"Compatible, but this application should update to a more recent GfeSDK to get latest features/bugfixes"</span>);</div><div class="line"> <span class="keywordflow">break</span>;</div><div class="line"> }</div><div class="line"> }</div><div class="line"> <span class="keywordflow">else</span></div><div class="line"> {</div><div class="line"> <span class="comment">// No valid handle</span></div><div class="line"> LOG(<span class="stringliteral">"Failure: %s"</span>, GfeSDK::NVGSDK_RetCodeToString(response.returnCode));</div><div class="line"> <span class="keywordflow">switch</span> (response.returnCode)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">case</span> GfeSDK::NVGSDK_ERR_SDK_VERSION:</div><div class="line"> LOG(<span class="stringliteral">"This version of the SDK is too old to communicate with the user's SDK. We're never planning on this happening."</span>);</div><div class="line"> LOG(<span class="stringliteral">"PC is running GFE version %s"</span>, response.nvidiaGfeVersion.c_str());</div><div class="line"> LOG(<span class="stringliteral">"PC is running GfeSDK version %d.%d"</span>, response.versionMajor, response.versionMinor);</div><div class="line"> <span class="keywordflow">break</span>;</div><div class="line"> <span class="keywordflow">case</span> GfeSDK::NVGSDK_SUCCESS_VERSION_OLD_SDK:</div><div class="line"> LOG(<span class="stringliteral">"The installed version of GFE is too old to continue. User must upgrade."</span>);</div><div class="line"> LOG(<span class="stringliteral">"PC is running GFE version %s"</span>, response.nvidiaGfeVersion.c_str());</div><div class="line"> LOG(<span class="stringliteral">"PC is running GfeSDK version %d.%d"</span>, response.versionMajor, response.versionMinor);</div><div class="line"> <span class="keywordflow">break</span>;</div><div class="line"> }</div><div class="line"> <span class="keywordflow">return</span>;</div><div class="line"> }</div></div><!-- fragment --><p> // After using GfeSDK</p> <div class="fragment"><div class="line"> <span class="keyword">delete</span> gfesdkCore;</div></div><!-- fragment --> <h4>C API</h4> -<div class="fragment"><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___create_input_params.html">NVGSDK_CreateInputParams</a> inParams;</div><div class="line"> memset(&inParams, 0, <span class="keyword">sizeof</span>(inParams));</div><div class="line"></div><div class="line"> NVGSDK_Scope scopes[] = { NVGSDK_SCOPE_HIGHLIGHTS, NVGSDK_SCOPE_HIGHLIGHTS_VIDEO, NVGSDK_SCOPE_HIGHLIGHTS_SCREENSHOT };</div><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___scope_permission.html">NVGSDK_ScopePermission</a> scopePermissions[COUNT_OF(scopes)];</div><div class="line"></div><div class="line"> inParams.<a class="code" href="struct_n_v_g_s_d_k___create_input_params.html#ac754df94f208f494a0a339d614bb18f3">appName</a> = <span class="stringliteral">"gfesdk_dx_sample"</span>;</div><div class="line"> inParams.<a class="code" href="struct_n_v_g_s_d_k___create_input_params.html#a0bd7568c1cb3fad975562055b4581195">pollForCallbacks</a> = <span class="keyword">true</span>;</div><div class="line"> inParams.<a class="code" href="struct_n_v_g_s_d_k___create_input_params.html#ae0ada093d3d60a2f70226932b1a5b6fb">scopeTable</a> = &scopes;</div><div class="line"> inParams.<a class="code" href="struct_n_v_g_s_d_k___create_input_params.html#a8941e0c803ec2f821101cfc55a7f60a3">scopeTableSize</a> = COUNT_OF(scopes);</div><div class="line"> inParams.<a class="code" href="struct_n_v_g_s_d_k___create_input_params.html#adde61c0a8ea3a728c57081ec97081a72">notificationCallback</a> = handleNotification;</div><div class="line"></div><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___create_response.html">NVGSDK_CreateResponse</a> outParams;</div><div class="line"> memset(&outParams, 0, <span class="keyword">sizeof</span>(outParams));</div><div class="line"> outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#a9bc3e75a15cf9fcbc1084f2a7fde5a8f">scopePermissionTable</a> = &scopePermissions;</div><div class="line"> outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#a60aec9d469d10e8fe0efd7c010fb96e7">scopePermissionTableSize</a> = COUNT_OF(scopes);</div><div class="line"></div><div class="line"> NVGSDK_RetCode rc = <a class="code" href="isdk_8h.html#a95b3999b5808922e29a36375c22014b8">NVGSDK_Create</a>(&g_sdk, &inParams, &outParams);</div><div class="line"> <span class="keywordflow">if</span> (NVGSDK_SUCCEEDED(rc))</div><div class="line"> {</div><div class="line"> <span class="comment">// Valid handle has been returned</span></div><div class="line"> LOG(<span class="stringliteral">"Success: %s"</span>, NVGSDK_RetCodeToString(rc));</div><div class="line"> LOG(<span class="stringliteral">"PC is running GFE version %s"</span>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#aacdf644f5f6eb996dad6bb90b4145deb">gfeVersionStr</a>);</div><div class="line"> LOG(<span class="stringliteral">"PC is running GfeSDK version %d.%d"</span>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#aa595214daf18bdbc638ef98e1f22a30f">versionMajor</a>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#ad1687ba8b8d53a75b13a60874f3822be">versionMinor</a>);</div><div class="line"> <span class="keywordflow">switch</span> (rc)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">case</span> NVGSDK_SUCCESS_VERSION_OLD_GFE:</div><div class="line"> LOG(<span class="stringliteral">"Compatible, but the user should update to the latest version of GFE."</span>);</div><div class="line"> <span class="keywordflow">break</span>;</div><div class="line"> <span class="keywordflow">case</span> NVGSDK_SUCCESS_VERSION_OLD_SDK:</div><div class="line"> LOG(<span class="stringliteral">"Compatible, but this application should update to a more recent GfeSDK to get latest features/bugfixes"</span>);</div><div class="line"> <span class="keywordflow">break</span>;</div><div class="line"> }</div><div class="line"> }</div><div class="line"> <span class="keywordflow">else</span></div><div class="line"> {</div><div class="line"> <span class="comment">// No valid handle</span></div><div class="line"> LOG(<span class="stringliteral">"Failure: %s"</span>, NVGSDK_RetCodeToString(rc));</div><div class="line"> <span class="keywordflow">switch</span> (rc)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">case</span> NVGSDK_ERR_SDK_VERSION:</div><div class="line"> LOG(<span class="stringliteral">"This version of the SDK is too old to communicate with the user's SDK. We're never planning on this happening."</span>);</div><div class="line"> LOG(<span class="stringliteral">"PC is running GFE version %s"</span>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#aacdf644f5f6eb996dad6bb90b4145deb">gfeVersionStr</a>);</div><div class="line"> LOG(<span class="stringliteral">"PC is running GfeSDK version %d.%d"</span>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#aa595214daf18bdbc638ef98e1f22a30f">versionMajor</a>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#ad1687ba8b8d53a75b13a60874f3822be">versionMinor</a>);</div><div class="line"> <span class="keywordflow">break</span>;</div><div class="line"> <span class="keywordflow">case</span> NVGSDK_SUCCESS_VERSION_OLD_SDK:</div><div class="line"> LOG(<span class="stringliteral">"The installed version of GFE is too old to continue. User must upgrade."</span>);</div><div class="line"> LOG(<span class="stringliteral">"PC is running GFE version %s"</span>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#aacdf644f5f6eb996dad6bb90b4145deb">gfeVersionStr</a>);</div><div class="line"> LOG(<span class="stringliteral">"PC is running GfeSDK version %d.%d"</span>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#aa595214daf18bdbc638ef98e1f22a30f">versionMajor</a>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#ad1687ba8b8d53a75b13a60874f3822be">versionMinor</a>);</div><div class="line"> <span class="keywordflow">break</span>;</div><div class="line"> }</div><div class="line"> <span class="keywordflow">return</span>;</div><div class="line"> }</div></div><!-- fragment --><p> // After using GfeSDK</p> +<div class="fragment"><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___create_input_params.html">NVGSDK_CreateInputParams</a> inParams;</div><div class="line"> memset(&inParams, 0, <span class="keyword">sizeof</span>(inParams));</div><div class="line"></div><div class="line"> NVGSDK_Scope scopes[] = { NVGSDK_SCOPE_HIGHLIGHTS, NVGSDK_SCOPE_HIGHLIGHTS_VIDEO, NVGSDK_SCOPE_HIGHLIGHTS_SCREENSHOT };</div><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___scope_permission.html">NVGSDK_ScopePermission</a> scopePermissions[COUNT_OF(scopes)];</div><div class="line"></div><div class="line"> inParams.<a class="code" href="struct_n_v_g_s_d_k___create_input_params.html#ac754df94f208f494a0a339d614bb18f3">appName</a> = <span class="stringliteral">"gfesdk_dx_sample"</span>;</div><div class="line"> inParams.<a class="code" href="struct_n_v_g_s_d_k___create_input_params.html#a0bd7568c1cb3fad975562055b4581195">pollForCallbacks</a> = <span class="keyword">true</span>;</div><div class="line"> inParams.<a class="code" href="struct_n_v_g_s_d_k___create_input_params.html#ae0ada093d3d60a2f70226932b1a5b6fb">scopeTable</a> = &scopes[0];</div><div class="line"> inParams.<a class="code" href="struct_n_v_g_s_d_k___create_input_params.html#a8941e0c803ec2f821101cfc55a7f60a3">scopeTableSize</a> = COUNT_OF(scopes);</div><div class="line"> inParams.<a class="code" href="struct_n_v_g_s_d_k___create_input_params.html#adde61c0a8ea3a728c57081ec97081a72">notificationCallback</a> = handleNotification;</div><div class="line"></div><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___create_response.html">NVGSDK_CreateResponse</a> outParams;</div><div class="line"> memset(&outParams, 0, <span class="keyword">sizeof</span>(outParams));</div><div class="line"> outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#a9bc3e75a15cf9fcbc1084f2a7fde5a8f">scopePermissionTable</a> = &scopePermissions[0];</div><div class="line"> outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#a60aec9d469d10e8fe0efd7c010fb96e7">scopePermissionTableSize</a> = COUNT_OF(scopes);</div><div class="line"></div><div class="line"> NVGSDK_RetCode rc = <a class="code" href="isdk_8h.html#a95b3999b5808922e29a36375c22014b8">NVGSDK_Create</a>(&g_sdk, &inParams, &outParams);</div><div class="line"> <span class="keywordflow">if</span> (NVGSDK_SUCCEEDED(rc))</div><div class="line"> {</div><div class="line"> <span class="comment">// Valid handle has been returned</span></div><div class="line"> LOG(<span class="stringliteral">"Success: %s"</span>, NVGSDK_RetCodeToString(rc));</div><div class="line"> LOG(<span class="stringliteral">"PC is running GFE version %s"</span>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#aacdf644f5f6eb996dad6bb90b4145deb">gfeVersionStr</a>);</div><div class="line"> LOG(<span class="stringliteral">"PC is running GfeSDK version %d.%d"</span>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#aa595214daf18bdbc638ef98e1f22a30f">versionMajor</a>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#ad1687ba8b8d53a75b13a60874f3822be">versionMinor</a>);</div><div class="line"> <span class="keywordflow">switch</span> (rc)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">case</span> NVGSDK_SUCCESS_VERSION_OLD_GFE:</div><div class="line"> LOG(<span class="stringliteral">"Compatible, but the user should update to the latest version of GFE."</span>);</div><div class="line"> <span class="keywordflow">break</span>;</div><div class="line"> <span class="keywordflow">case</span> NVGSDK_SUCCESS_VERSION_OLD_SDK:</div><div class="line"> LOG(<span class="stringliteral">"Compatible, but this application should update to a more recent GfeSDK to get latest features/bugfixes"</span>);</div><div class="line"> <span class="keywordflow">break</span>;</div><div class="line"> }</div><div class="line"> }</div><div class="line"> <span class="keywordflow">else</span></div><div class="line"> {</div><div class="line"> <span class="comment">// No valid handle</span></div><div class="line"> LOG(<span class="stringliteral">"Failure: %s"</span>, NVGSDK_RetCodeToString(rc));</div><div class="line"> <span class="keywordflow">switch</span> (rc)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">case</span> NVGSDK_ERR_SDK_VERSION:</div><div class="line"> LOG(<span class="stringliteral">"This version of the SDK is too old to communicate with the user's SDK. We're never planning on this happening."</span>);</div><div class="line"> LOG(<span class="stringliteral">"PC is running GFE version %s"</span>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#aacdf644f5f6eb996dad6bb90b4145deb">gfeVersionStr</a>);</div><div class="line"> LOG(<span class="stringliteral">"PC is running GfeSDK version %d.%d"</span>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#aa595214daf18bdbc638ef98e1f22a30f">versionMajor</a>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#ad1687ba8b8d53a75b13a60874f3822be">versionMinor</a>);</div><div class="line"> <span class="keywordflow">break</span>;</div><div class="line"> <span class="keywordflow">case</span> NVGSDK_SUCCESS_VERSION_OLD_SDK:</div><div class="line"> LOG(<span class="stringliteral">"The installed version of GFE is too old to continue. User must upgrade."</span>);</div><div class="line"> LOG(<span class="stringliteral">"PC is running GFE version %s"</span>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#aacdf644f5f6eb996dad6bb90b4145deb">gfeVersionStr</a>);</div><div class="line"> LOG(<span class="stringliteral">"PC is running GfeSDK version %d.%d"</span>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#aa595214daf18bdbc638ef98e1f22a30f">versionMajor</a>, outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#ad1687ba8b8d53a75b13a60874f3822be">versionMinor</a>);</div><div class="line"> <span class="keywordflow">break</span>;</div><div class="line"> }</div><div class="line"> <span class="keywordflow">return</span>;</div><div class="line"> }</div></div><!-- fragment --><p> // After using GfeSDK</p> <div class="fragment"><div class="line"> <a class="code" href="isdk_8h.html#ab63d1f433313209b1febbf5736b61463">NVGSDK_Release</a>(g_sdk);</div></div><!-- fragment --> <p>The Create call will inform the app if one or more scopes require user permission. If so, make this call. It will display the overlay UI.</p> <h4>C++ Bindings</h4> <div class="fragment"><div class="line"> <span class="comment">// Request Permissions if user hasn't decided yet</span></div><div class="line"> <a class="code" href="struct_gfe_s_d_k_1_1_request_permissions_params.html">GfeSDK::RequestPermissionsParams</a> requestPermissionsParams;</div><div class="line"></div><div class="line"> <span class="comment">// 'response' came from create call. It tells us which permissions we requested during Create,</span></div><div class="line"> <span class="comment">// but the user hasn't yet made a decision on</span></div><div class="line"> <span class="keywordflow">for</span> (<span class="keyword">auto</span>&& entry : response.scopePermissions)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">if</span> (entry.second == GfeSDK::NVGSDK_PERMISSION_MUST_ASK)</div><div class="line"> {</div><div class="line"> requestPermissionsParams.scopes.push_back(entry.first);</div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordflow">if</span> (!requestPermissionsParams.scopes.empty())</div><div class="line"> {</div><div class="line"> <span class="comment">// If the user hasn't given permission for recording yet, ask them to do so now via overlay</span></div><div class="line"> m_gfesdk->RequestPermissionsAsync(requestPermissionsParams, [<span class="keyword">this</span>, defaultLocale, highlights, numHighlights](GfeSDK::NVGSDK_RetCode rc, <span class="keywordtype">void</span>* cbContext) {</div><div class="line"> UpdateLastResultString(rc);</div><div class="line"> <span class="keywordflow">if</span> (GfeSDK::NVGSDK_SUCCEEDED(rc))</div><div class="line"> {</div><div class="line"> ConfigureHighlights(defaultLocale, highlights, numHighlights);</div><div class="line"> }</div><div class="line"> });</div><div class="line"> }</div><div class="line"> <span class="keywordflow">else</span></div><div class="line"> {</div><div class="line"> <span class="comment">// Otherwise, go ahead and set up now</span></div><div class="line"> ConfigureHighlights(defaultLocale, highlights, numHighlights);</div><div class="line"> }</div></div><!-- fragment --> <h4>C API</h4> -<div class="fragment"><div class="line"> <span class="comment">// Request Permissions if user hasn't decided yet</span></div><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___request_permissions_params.html">NVGSDK_RequestPermissionsParams</a> requestPermissionsParams = { 0 };</div><div class="line"> NVGSDK_Scope requestScopes[COUNT_OF(scopes)];</div><div class="line"> memset(requestScopes, NVGSDK_SCOPE_MAX, COUNT_OF(scopes));</div><div class="line"> requestPermissionsParams.scopeTable = &requestScopes;</div><div class="line"></div><div class="line"> <span class="comment">// 'response' came from create call. It tells us which permissions we requested during Create,</span></div><div class="line"> <span class="comment">// but the user hasn't yet made a decision on</span></div><div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, j = 0; i < outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#a60aec9d469d10e8fe0efd7c010fb96e7">scopePermissionTableSize</a>; ++i)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">if</span> (outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#a9bc3e75a15cf9fcbc1084f2a7fde5a8f">scopePermissionTable</a>[i].permission == NVGSDK_PERMISSION_MUST_ASK)</div><div class="line"> {</div><div class="line"> requestPermissionsParams.scopeTable[j++] = outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#a9bc3e75a15cf9fcbc1084f2a7fde5a8f">scopePermissionTable</a>[i].scope;</div><div class="line"> requestPermissionsParams.scopeTableSize++;</div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordflow">if</span> (requestPermissionsParams.scopeTableSize > 0)</div><div class="line"> {</div><div class="line"> TConfigHolder* configHolder = malloc(<span class="keyword">sizeof</span>(TConfigHolder));</div><div class="line"> configHolder->defaultLocale = defaultLocale;</div><div class="line"> configHolder->highlights = highlights;</div><div class="line"> configHolder->numHighlights = numHighlights;</div><div class="line"></div><div class="line"> <span class="comment">// If the user hasn't given permission for recording yet, ask them to do so now via overlay</span></div><div class="line"> <a class="code" href="isdk_8h.html#a3e4b6afcafe9ac91c00a95b7d72305e5">NVGSDK_RequestPermissionsAsync</a>(g_sdk, &requestPermissionsParams, &handlePermissionRequested, configHolder);</div><div class="line"> }</div><div class="line"> <span class="keywordflow">else</span></div><div class="line"> {</div><div class="line"> <span class="comment">// Otherwise, go ahead and set up now</span></div><div class="line"> ConfigureHighlights(defaultLocale, highlights, numHighlights);</div><div class="line"> }</div></div><!-- fragment --> <p>This only needs to happen once ever. It is persistent. It could even happen during game installation.</p> +<div class="fragment"><div class="line"> <span class="comment">// Request Permissions if user hasn't decided yet</span></div><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___request_permissions_params.html">NVGSDK_RequestPermissionsParams</a> requestPermissionsParams = { 0 };</div><div class="line"> NVGSDK_Scope requestScopes[COUNT_OF(scopes)];</div><div class="line"> memset(requestScopes, NVGSDK_SCOPE_MAX, COUNT_OF(scopes));</div><div class="line"> requestPermissionsParams.scopeTable = &requestScopes[0];</div><div class="line"></div><div class="line"> <span class="comment">// 'response' came from create call. It tells us which permissions we requested during Create,</span></div><div class="line"> <span class="comment">// but the user hasn't yet made a decision on</span></div><div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, j = 0; i < outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#a60aec9d469d10e8fe0efd7c010fb96e7">scopePermissionTableSize</a>; ++i)</div><div class="line"> {</div><div class="line"> <span class="keywordflow">if</span> (outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#a9bc3e75a15cf9fcbc1084f2a7fde5a8f">scopePermissionTable</a>[i].permission == NVGSDK_PERMISSION_MUST_ASK)</div><div class="line"> {</div><div class="line"> requestPermissionsParams.scopeTable[j++] = outParams.<a class="code" href="struct_n_v_g_s_d_k___create_response.html#a9bc3e75a15cf9fcbc1084f2a7fde5a8f">scopePermissionTable</a>[i].scope;</div><div class="line"> requestPermissionsParams.scopeTableSize++;</div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="keywordflow">if</span> (requestPermissionsParams.scopeTableSize > 0)</div><div class="line"> {</div><div class="line"> TConfigHolder* configHolder = malloc(<span class="keyword">sizeof</span>(TConfigHolder));</div><div class="line"> configHolder->defaultLocale = defaultLocale;</div><div class="line"> configHolder->highlights = highlights;</div><div class="line"> configHolder->numHighlights = numHighlights;</div><div class="line"></div><div class="line"> <span class="comment">// If the user hasn't given permission for recording yet, ask them to do so now via overlay</span></div><div class="line"> <a class="code" href="isdk_8h.html#a3e4b6afcafe9ac91c00a95b7d72305e5">NVGSDK_RequestPermissionsAsync</a>(g_sdk, &requestPermissionsParams, &handlePermissionRequested, configHolder);</div><div class="line"> }</div><div class="line"> <span class="keywordflow">else</span></div><div class="line"> {</div><div class="line"> <span class="comment">// Otherwise, go ahead and set up now</span></div><div class="line"> ConfigureHighlights(defaultLocale, highlights, numHighlights);</div><div class="line"> }</div></div><!-- fragment --> <p>This only needs to happen once ever. It is persistent. It could even happen during game installation.</p> <h4>C++ Bindings</h4> <div class="fragment"><div class="line"> <span class="comment">// Create handle to highlights module</span></div><div class="line"> m_highlights.reset(GfeSDK::Highlights::Create(m_gfesdk.get()));</div><div class="line"></div><div class="line"> <a class="code" href="struct_gfe_s_d_k_1_1_highlight_config_params.html">GfeSDK::HighlightConfigParams</a> configParams;</div><div class="line"> configParams.defaultLocale = defaultLocale;</div><div class="line"></div><div class="line"> <span class="comment">// Set up highlight definition table</span></div><div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < numHighlights; ++i)</div><div class="line"> {</div><div class="line"> <a class="code" href="struct_gfe_s_d_k_1_1_highlight_definition.html">GfeSDK::HighlightDefinition</a> highlightDef;</div><div class="line"> highlightDef.id = highlights[i].id;</div><div class="line"> highlightDef.userDefaultInterest = highlights[i].userInterest;</div><div class="line"> highlightDef.significance = highlights[i].significance;</div><div class="line"> highlightDef.highlightTags = highlights[i].highlightTags;</div><div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j < highlights[i].nameTableSize; ++j)</div><div class="line"> {</div><div class="line"> highlightDef.<a class="code" href="struct_gfe_s_d_k_1_1_highlight_definition.html#a2511ee17dafd2a096b15e6f62b1f77b2">nameLocaleTable</a>[highlights[i].nameTable[j].localeCode] = highlights[i].nameTable[j].localizedString;</div><div class="line"> }</div><div class="line"></div><div class="line"> configParams.highlightDefinitions.push_back(highlightDef);</div><div class="line"> }</div><div class="line"></div><div class="line"> m_highlights->ConfigureAsync(configParams, [<span class="keyword">this</span>](GfeSDK::NVGSDK_RetCode rc, <span class="keywordtype">void</span>*) {</div><div class="line"> UpdateLastResultString(rc);</div><div class="line"> });</div></div><!-- fragment --> <h4>C API</h4> -<div class="fragment"><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___highlight.html">NVGSDK_Highlight</a>* highlights = calloc(numHighlights, <span class="keyword">sizeof</span>(<a class="code" href="struct_n_v_g_s_d_k___highlight.html">NVGSDK_Highlight</a>));</div><div class="line"> highlights[0].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a9e0d5a1ba9081cb7f9b549499af61927">userInterest</a> = <span class="keyword">false</span>;</div><div class="line"></div><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___highlight_config_params.html">NVGSDK_HighlightConfigParams</a>* params = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="struct_n_v_g_s_d_k___highlight_config_params.html">NVGSDK_HighlightConfigParams</a>));</div><div class="line"> params-><a class="code" href="struct_n_v_g_s_d_k___highlight_config_params.html#a7f4f852d4fe97048f20dcdcc401ab82b">defaultLocale</a> = defaultLocale;</div><div class="line"> params->highlightDefinitionTable = highlights;</div><div class="line"> params->highlightTableSize = numHighlights;</div><div class="line"></div><div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < numHighlights; ++i)</div><div class="line"> {</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a1f95d7645df3e535efa830685488ae9b">id</a> = hl[i].id;</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a1e55e8efeca6cfabc9c68583e24f410b">highlightTags</a> = hl[i].highlightTags;</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a3ecee6a0bd80c21b630559fb8ecfc0be">significance</a> = hl[i].significance;</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a9e0d5a1ba9081cb7f9b549499af61927">userInterest</a> = hl[i].userInterest;</div><div class="line"></div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a5522ae0afe385ba7d17afd83d19ed729">nameTableSize</a> = hl[i].nameTableSize;</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a3aa8849a5921b0189c2642840c257247">nameTable</a> = hl[i].nameTableSize > 0 ? calloc(hl[i].nameTableSize, <span class="keyword">sizeof</span>(<a class="code" href="struct_n_v_g_s_d_k___localized_pair.html">NVGSDK_LocalizedPair</a>)) : NULL;</div><div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> name = 0; name < hl[i].nameTableSize; ++name)</div><div class="line"> {</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a3aa8849a5921b0189c2642840c257247">nameTable</a>[name].<a class="code" href="struct_n_v_g_s_d_k___localized_pair.html#aa070c22ef7cf737497855504fb8795d6">localeCode</a> = calloc(NVGSDK_MAX_LENGTH, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));</div><div class="line"> strncpy_s(highlights[i].nameTable[name].localeCode, NVGSDK_MAX_LENGTH, hl[i].nameTable[name].localeCode, NVGSDK_MAX_LENGTH);</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a3aa8849a5921b0189c2642840c257247">nameTable</a>[name].<a class="code" href="struct_n_v_g_s_d_k___localized_pair.html#a02d3e482f16824ccc790f1a3dc8b8952">localizedString</a> = calloc(NVGSDK_MAX_LENGTH, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));</div><div class="line"> strncpy_s(highlights[i].nameTable[name].localizedString, NVGSDK_MAX_LENGTH, hl[i].nameTable[name].localizedString, NVGSDK_MAX_LENGTH);</div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="ihighlights_8h.html#a0407132e7fd44771370ecfa03fdfce8d">NVGSDK_Highlights_ConfigureAsync</a>(g_sdk, params, &handleConfigured, params);</div></div><!-- fragment --> <h4>C++ Bindings</h4> +<div class="fragment"><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___highlight.html">NVGSDK_Highlight</a>* highlights = calloc(numHighlights, <span class="keyword">sizeof</span>(<a class="code" href="struct_n_v_g_s_d_k___highlight.html">NVGSDK_Highlight</a>));</div><div class="line"> highlights[0].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a9e0d5a1ba9081cb7f9b549499af61927">userInterest</a> = <span class="keyword">false</span>;</div><div class="line"></div><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___highlight_config_params.html">NVGSDK_HighlightConfigParams</a>* params = calloc(1, <span class="keyword">sizeof</span>(<a class="code" href="struct_n_v_g_s_d_k___highlight_config_params.html">NVGSDK_HighlightConfigParams</a>));</div><div class="line"> params-><a class="code" href="struct_n_v_g_s_d_k___highlight_config_params.html#a7f4f852d4fe97048f20dcdcc401ab82b">defaultLocale</a> = defaultLocale;</div><div class="line"> params->highlightDefinitionTable = highlights;</div><div class="line"> params->highlightTableSize = numHighlights;</div><div class="line"></div><div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < numHighlights; ++i)</div><div class="line"> {</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a1f95d7645df3e535efa830685488ae9b">id</a> = hl[i].id;</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a1e55e8efeca6cfabc9c68583e24f410b">highlightTags</a> = hl[i].highlightTags;</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a3ecee6a0bd80c21b630559fb8ecfc0be">significance</a> = hl[i].significance;</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a9e0d5a1ba9081cb7f9b549499af61927">userInterest</a> = hl[i].userInterest;</div><div class="line"></div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a5522ae0afe385ba7d17afd83d19ed729">nameTableSize</a> = hl[i].nameTableSize;</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a3aa8849a5921b0189c2642840c257247">nameTable</a> = hl[i].nameTableSize > 0 ? calloc(hl[i].nameTableSize, <span class="keyword">sizeof</span>(<a class="code" href="struct_n_v_g_s_d_k___localized_pair.html">NVGSDK_LocalizedPair</a>)) : NULL;</div><div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> name = 0; name < hl[i].nameTableSize; ++name)</div><div class="line"> {</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a3aa8849a5921b0189c2642840c257247">nameTable</a>[name].<a class="code" href="struct_n_v_g_s_d_k___localized_pair.html#aa070c22ef7cf737497855504fb8795d6">localeCode</a> = calloc(NVGSDK_MAX_LENGTH, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));</div><div class="line"> strncpy_s((<span class="keywordtype">char</span>*)highlights[i].nameTable[name].localeCode, NVGSDK_MAX_LENGTH, hl[i].nameTable[name].localeCode, NVGSDK_MAX_LENGTH);</div><div class="line"> highlights[i].<a class="code" href="struct_n_v_g_s_d_k___highlight.html#a3aa8849a5921b0189c2642840c257247">nameTable</a>[name].<a class="code" href="struct_n_v_g_s_d_k___localized_pair.html#a02d3e482f16824ccc790f1a3dc8b8952">localizedString</a> = calloc(NVGSDK_MAX_LENGTH, <span class="keyword">sizeof</span>(<span class="keywordtype">char</span>));</div><div class="line"> strncpy_s((<span class="keywordtype">char</span>*)highlights[i].nameTable[name].localizedString, NVGSDK_MAX_LENGTH, hl[i].nameTable[name].localizedString, NVGSDK_MAX_LENGTH);</div><div class="line"> }</div><div class="line"> }</div><div class="line"></div><div class="line"> <a class="code" href="ihighlights_8h.html#a0407132e7fd44771370ecfa03fdfce8d">NVGSDK_Highlights_ConfigureAsync</a>(g_sdk, params, &handleConfigured, params);</div></div><!-- fragment --> <h4>C++ Bindings</h4> <div class="fragment"><div class="line"> <a class="code" href="struct_gfe_s_d_k_1_1_highlight_open_group_params.html">GfeSDK::HighlightOpenGroupParams</a> params;</div><div class="line"> params.groupId = id;</div><div class="line"> params.groupDescriptionLocaleTable[<span class="stringliteral">"en-US"</span>] = id;</div><div class="line"> m_highlights->OpenGroupAsync(params, [<span class="keyword">this</span>](GfeSDK::NVGSDK_RetCode rc, <span class="keywordtype">void</span>*) {</div><div class="line"> UpdateLastResultString(rc);</div><div class="line"> });</div></div><!-- fragment --><div class="fragment"><div class="line"> <a class="code" href="struct_gfe_s_d_k_1_1_video_highlight_params.html">GfeSDK::VideoHighlightParams</a> params;</div><div class="line"> params.startDelta = startDelta;</div><div class="line"> params.endDelta = endDelta;</div><div class="line"> params.groupId = groupId;</div><div class="line"> params.highlightId = highlightId;</div><div class="line"> m_highlights->SetVideoHighlightAsync(params, [<span class="keyword">this</span>](GfeSDK::NVGSDK_RetCode rc, <span class="keywordtype">void</span>*) {</div><div class="line"> UpdateLastResultString(rc);</div><div class="line"> });</div></div><!-- fragment --><div class="fragment"><div class="line"> <a class="code" href="struct_gfe_s_d_k_1_1_highlight_close_group_params.html">GfeSDK::HighlightCloseGroupParams</a> params;</div><div class="line"> params.groupId = id;</div><div class="line"> params.destroyHighlights = destroy;</div><div class="line"> m_highlights->CloseGroupAsync(params, [<span class="keyword">this</span>](GfeSDK::NVGSDK_RetCode rc, <span class="keywordtype">void</span>*) {</div><div class="line"> UpdateLastResultString(rc);</div><div class="line"> });</div></div><!-- fragment --> <h4>C API</h4> <div class="fragment"><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___highlight_open_group_params.html">NVGSDK_HighlightOpenGroupParams</a> params = { 0 };</div><div class="line"> params.<a class="code" href="struct_n_v_g_s_d_k___highlight_open_group_params.html#a3e9f6351540609fc3e853d5a16188da2">groupId</a> = groupId;</div><div class="line"> <a class="code" href="ihighlights_8h.html#aa49250dbc063e242607123333f8da892">NVGSDK_Highlights_OpenGroupAsync</a>(g_sdk, &params, &handleGenericResponse, NULL);</div></div><!-- fragment --><div class="fragment"><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___video_highlight_params.html">NVGSDK_VideoHighlightParams</a> params;</div><div class="line"> params.<a class="code" href="struct_n_v_g_s_d_k___video_highlight_params.html#aa332ddd28accd8f72fb17adc378c1267">groupId</a> = groupId;</div><div class="line"> params.<a class="code" href="struct_n_v_g_s_d_k___video_highlight_params.html#a622f76afc439ed07a18e97ca95564ff0">highlightId</a> = highlightId;</div><div class="line"> params.<a class="code" href="struct_n_v_g_s_d_k___video_highlight_params.html#ac526b90af6638fec62174304aa175da1">startDelta</a> = startDelta;</div><div class="line"> params.<a class="code" href="struct_n_v_g_s_d_k___video_highlight_params.html#ae63c02443b1eeb24c4e1ed4d49154277">endDelta</a> = endDelta;</div><div class="line"> <a class="code" href="ihighlights_8h.html#a4812495c6dedfc7cc6b2d3c421c161ed">NVGSDK_Highlights_SetVideoHighlightAsync</a>(g_sdk, &params, &handleGenericResponse, NULL);</div></div><!-- fragment --><div class="fragment"><div class="line"> <a class="code" href="struct_n_v_g_s_d_k___highlight_close_group_params.html">NVGSDK_HighlightCloseGroupParams</a> params = { 0 };</div><div class="line"> params.<a class="code" href="struct_n_v_g_s_d_k___highlight_close_group_params.html#a6f1e0e8a5399e868588a83e1c81ad9c3">groupId</a> = groupId;</div><div class="line"> params.<a class="code" href="struct_n_v_g_s_d_k___highlight_close_group_params.html#a3d7eae61163c4616a42569ca8d7785c6">destroyHighlights</a> = destroy;</div><div class="line"> <a class="code" href="ihighlights_8h.html#aa3b6190835ada28f4cee015645814e75">NVGSDK_Highlights_CloseGroupAsync</a>(g_sdk, &params, &handleGenericResponse, NULL);</div></div><!-- fragment --> <h4>C++ Bindings</h4> <div class="fragment"><div class="line"> <a class="code" href="struct_gfe_s_d_k_1_1_summary_params.html">GfeSDK::SummaryParams</a> params;</div><div class="line"></div><div class="line"> <span class="comment">// Can show more than one group at a time, each with their own filters if desired</span></div><div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < numGroups; ++i)</div><div class="line"> {</div><div class="line"> <a class="code" href="struct_gfe_s_d_k_1_1_group_view.html">GfeSDK::GroupView</a> v;</div><div class="line"> v.groupId = groupIds[i];</div><div class="line"> v.significanceFilter = sigFilter;</div><div class="line"> v.tagsFilter = tagFilter;</div><div class="line"> params.groupViews.push_back(v);</div><div class="line"> }</div><div class="line"></div><div class="line"> m_highlights->OpenSummaryAsync(params, [<span class="keyword">this</span>](GfeSDK::NVGSDK_RetCode rc, <span class="keywordtype">void</span>*) {</div><div class="line"> UpdateLastResultString(rc);</div><div class="line"> });</div></div><!-- fragment --> <h4>C API</h4> diff --git a/doc/html/md__c_1_u_workspace_dev_sdkwinauto_doc__c_h_a_n_g_e_l_o_g.html b/doc/html/md__c_1_u_workspace_dev_sdkwinauto_doc__c_h_a_n_g_e_l_o_g.html new file mode 100644 index 0000000..7cf0064 --- /dev/null +++ b/doc/html/md__c_1_u_workspace_dev_sdkwinauto_doc__c_h_a_n_g_e_l_o_g.html @@ -0,0 +1,173 @@ +<!-- HTML header for doxygen 1.8.12--> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<meta name="generator" content="Doxygen 1.8.12"/> +<meta name="viewport" content="width=device-width, initial-scale=1"/> +<title>NVIDIAGeForceExperienceSDK: Changelog</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtreedata.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/searchdata.js"></script> +<script type="text/javascript" src="search/search.js"></script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +<link href="customdoxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectalign" style="padding-left: 0.5em;"> + <div id="projectname">NVIDIAGeForceExperienceSDK + </div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.12 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> +<script type="text/javascript" src="menudata.js"></script> +<script type="text/javascript" src="menu.js"></script> +<script type="text/javascript"> +$(function() { + initMenu('',true,false,'search.php','Search'); + $(document).ready(function() { init_search(); }); +}); +</script> +<div id="main-nav"></div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('md__c_1_u_workspace_dev_sdkwinauto_doc__c_h_a_n_g_e_l_o_g.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +</div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Changelog </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><h2>NVIDIA GfeSDK 1.1 (2018-03-08)</h2> +<h3>Improvements</h3> +<ul> +<li><b>Buildable Sample</b> Fix release configurations of sample, and fix compiler errors</li> +</ul> +<h2>NVIDIA GfeSDK 1.1 (2018-02-28)</h2> +<h3>Improvements</h3> +<ul> +<li><b>Documentation</b> Top level documentation improvements</li> +<li><b>Buildable Sample</b> Include a simple DXUT buildable sample in the distribution, demonstrating API calls</li> +<li><b>Spectre/Meltdown</b> Compile with /Qspectre protection</li> +<li><b>Assets</b> Add final assets and image guide</li> +</ul> +<h3>Bug Fixes</h3> +<ul> +<li><b>Fix Crash</b> Fix race condition on startup</li> +</ul> +<h2>NVIDIA GfeSDK 1.1 (2018-01-22)</h2> +<h3>API Changes</h3> +<ul> +<li><b>SDK version incremented to 1.1</b> Allows old SDK clients to work with upcoming 3.13 GFE</li> +<li><b>Highlights Config parameters validation</b> Rejects Highlights of invalid type and significance</li> +</ul> +<h2>NVIDIA GfeSDK 1.0 (2018-01-16)</h2> +<h3>Features for GFE 3.13+</h3> +<ul> +<li><b>Target PID</b> Add support for whitelisted apps to record another process's PID</li> +</ul> +<h3>API Changes</h3> +<ul> +<li><b>Target PID</b> Added to NVGSDK_Create call</li> +<li><b>Unannounced Highlight Type</b> To prevent showing Highlights notifications for certain applications</li> +</ul> +<h3>Bug Fixes</h3> +<ul> +<li><b>Fix Crash</b> Was occasionally crashing when communication with the backend could not be established</li> +</ul> +<h2>NVIDIA GfeSDK 1.0 (2017-08-01)</h2> +<h3>API Changes</h3> +<ul> +<li><b>Timeout:</b> Was returning NVGSDK_ERR_GENERIC when IPC call timed now. Now returning NVGSDK_ERR_IPC_FAILED</li> +<li><b>windows.h:</b> Removed windows.h from public includes</li> +<li><b>globals:</b> Removed macros from global namespace</li> +<li><b>stdint:</b> Standardize on stdint types</li> +<li><b>stdbool:</b> Use stdbool in C API instead of integer 0/1</li> +<li><b>namespace:</b> Renamed namespace from gfesdk to GfeSDK, and wrapped C API in namespace when using C++ bindings</li> +<li><b>Highlights split:</b> Split all Highlights features into their own headers</li> +<li><b>C++ Bindings RAII:</b> Update C++ bindings to follow recognized C++ idioms</li> +<li><b>package structure:</b> Standardize package structure to look like other GameWorks packages</li> +<li><b>Typed Callbacks:</b> Return typed callback data instead of void*</li> +<li><b>Naming:</b> Match naming standard to other GameWorks packages</li> +</ul> +<h3>Improvements</h3> +<ul> +<li><b>Thread Model</b>: Improve thread model. Prevent callbacks from occurring after Release. Allow Polling of callbacks</li> +<li><b>Documentation</b>: Improved and expanded documentation</li> +</ul> +<h3>Bug Fixes</h3> +<ul> +<li><b>Whitelist:</b> Fix error causing ShadowPlay to not whitelist game correctly.</li> +<li><b>Fix crash:</b> Was crashing when the same game ran twice.</li> +<li><b>Input validation:</b> Added input validation to return an error for C++ create instead of crash</li> +<li><b>Timeout return value:</b> Was returning NVGSDK_ERR_GENERIC instead of NVGSDK_ERR_IPC_FAILED</li> +</ul> +<h3>Features for GFE 3.9+</h3> +<ul> +<li><b>In-Game Overlay Notification:</b> Notify the app when the in-game overlay opens or closes.</li> +</ul> +<h2>NVIDIA GfeSDK 1.0 (2017-07-10)</h2> +<h3>Features for GFE 3.8+</h3> +<ul> +<li><b>ShadowPlay Highlights</b> Help Gamers automatically capture their most exciting gaming moments. </li> +</ul> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- HTML footer for doxygen 1.8.12--> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated by + <a href="http://www.doxygen.org/index.html"> + doxygen</a> 1.8.12 </li> + </ul> +</div> +</body> +</html> diff --git a/doc/html/navtreedata.js b/doc/html/navtreedata.js index eaf2f8a..ec23a48 100644 --- a/doc/html/navtreedata.js +++ b/doc/html/navtreedata.js @@ -2,7 +2,7 @@ var NAVTREE = [ [ "NVIDIAGeForceExperienceSDK", "index.html", [ [ "Development Guide", "index.html", null ], - [ "Changelog", "section_changelog.html", null ], + [ "Changelog", "md__c_1_u_workspace_dev_sdkwinauto_doc__c_h_a_n_g_e_l_o_g.html", null ], [ "Classes", "annotated.html", [ [ "Class List", "annotated.html", "annotated_dup" ], [ "Class Index", "classes.html", null ], diff --git a/doc/html/navtreeindex0.js b/doc/html/navtreeindex0.js index a85c530..56329b5 100644 --- a/doc/html/navtreeindex0.js +++ b/doc/html/navtreeindex0.js @@ -118,6 +118,7 @@ var NAVTREEINDEX0 = "isdk__cpp_8h_source.html":[3,0,1,0,0,0,0,1], "isdk__cpp__impl_8h.html":[3,0,1,0,0,0,0,2], "isdk__cpp__impl_8h_source.html":[3,0,1,0,0,0,0,2], +"md__c_1_u_workspace_dev_sdkwinauto_doc__c_h_a_n_g_e_l_o_g.html":[1], "ops__types_8h.html":[3,0,1,0,0,2,1], "ops__types_8h_source.html":[3,0,1,0,0,2,1], "os__defines_8h_source.html":[3,0,1,0,0,4], @@ -145,7 +146,6 @@ var NAVTREEINDEX0 = "sdk__types_8h_source.html":[3,0,1,0,0,5], "sdk__types__cpp_8h_source.html":[3,0,1,0,0,0,0,3], "sdk__types__ipc_8h_source.html":[3,0,0,0,0,2], -"section_changelog.html":[1], "struct_gfe_s_d_k_1_1_create_input_params.html":[2,0,4,2], "struct_gfe_s_d_k_1_1_create_input_params.html#a3d101bfc3a6a28b678537d3f1198ab5e":[2,0,4,2,1], "struct_gfe_s_d_k_1_1_create_input_params.html#a642a81dc589d578d1c415099e85b9891":[2,0,4,2,3], diff --git a/doc/html/pages.html b/doc/html/pages.html index 570d191..a60af89 100644 --- a/doc/html/pages.html +++ b/doc/html/pages.html @@ -87,7 +87,7 @@ $(document).ready(function(){initNavTree('pages.html','');}); <div class="contents"> <div class="textblock">Here is a list of all related documentation pages:</div><div class="directory"> <table class="directory"> -<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a class="el" href="section_changelog.html" target="_self">Changelog</a></td><td class="desc"></td></tr> +<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;"> </span><a class="el" href="md__c_1_u_workspace_dev_sdkwinauto_doc__c_h_a_n_g_e_l_o_g.html" target="_self">Changelog</a></td><td class="desc"></td></tr> </table> </div><!-- directory --> </div><!-- contents --> diff --git a/doc/html/search/all_1.js b/doc/html/search/all_1.js index 3e101bf..706fe95 100644 --- a/doc/html/search/all_1.js +++ b/doc/html/search/all_1.js @@ -8,5 +8,5 @@ var searchData= ['createinputparams',['CreateInputParams',['../struct_gfe_s_d_k_1_1_create_input_params.html',1,'GfeSDK']]], ['createresponse',['CreateResponse',['../struct_gfe_s_d_k_1_1_create_response.html',1,'GfeSDK']]], ['culturecode',['cultureCode',['../struct_n_v_g_s_d_k___language.html#a61f6b2d2a3d08a27b37919e32b13ed75',1,'NVGSDK_Language']]], - ['changelog',['Changelog',['../section_changelog.html',1,'']]] + ['changelog',['Changelog',['../md__c_1_u_workspace_dev_sdkwinauto_doc__c_h_a_n_g_e_l_o_g.html',1,'']]] ]; diff --git a/doc/html/search/pages_0.js b/doc/html/search/pages_0.js index cb72189..328e5e5 100644 --- a/doc/html/search/pages_0.js +++ b/doc/html/search/pages_0.js @@ -1,4 +1,4 @@ var searchData= [ - ['changelog',['Changelog',['../section_changelog.html',1,'']]] + ['changelog',['Changelog',['../md__c_1_u_workspace_dev_sdkwinauto_doc__c_h_a_n_g_e_l_o_g.html',1,'']]] ]; diff --git a/include/gfesdk/config.h b/include/gfesdk/config.h index 21994bc..d29e9e1 100644 --- a/include/gfesdk/config.h +++ b/include/gfesdk/config.h @@ -18,8 +18,8 @@ #define NVGSDK_VERSION_MAJOR 1 #define NVGSDK_VERSION_MINOR 1 -#define NVGSDK_BUILD_NUMBER 186 -#define NVGSDK_BUILD_HASH 6007c22a -#define NVGSDK_BUILD_HASH_STR "6007c22a" +#define NVGSDK_BUILD_NUMBER 191 +#define NVGSDK_BUILD_HASH c04488e1 +#define NVGSDK_BUILD_HASH_STR "c04488e1" #endif // _NVGSDK_CONFIG_H_ diff --git a/include/gfesdk/gfe3_product_version.h b/include/gfesdk/gfe3_product_version.h index c3c8186..6c6d422 100644 --- a/include/gfesdk/gfe3_product_version.h +++ b/include/gfesdk/gfe3_product_version.h @@ -13,7 +13,7 @@ #define NVIDIA_GFE3_VERSION_MINOR 14 #define NVIDIA_GFE3_VERSION_DEV_REBASE 0 #define NVIDIA_GFE3_VERSION_RNEXT_REBASE 0 -#define NVIDIA_GFE3_VERSION_BUILD 30 +#define NVIDIA_GFE3_VERSION_BUILD 39 // // Composite version values. We don't concatenate them here automatically because @@ -22,11 +22,11 @@ // // Format: A,B,XY,N -#define NVIDIA_GFE3_VERSION 3,14,0,30 +#define NVIDIA_GFE3_VERSION 3,14,0,39 // Format: A.B.XY.N -#define NVIDIA_GFE3_VERSION_DOT 3.14.0.30 +#define NVIDIA_GFE3_VERSION_DOT 3.14.0.39 // Format: "A.B.XY.N" -#define NVIDIA_GFE3_VERSION_STRING "3.14.0.30" +#define NVIDIA_GFE3_VERSION_STRING "3.14.0.39" // // Some common strings diff --git a/include/gfesdk/ops/iops.h b/include/gfesdk/ops/iops.h new file mode 100644 index 0000000..97aadcd --- /dev/null +++ b/include/gfesdk/ops/iops.h @@ -0,0 +1,49 @@ +/* Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, 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. +*/ + +/*! +* \file +* C GfeSDK OPS API +*/ + +#ifndef GFESDK_OPS_H +#define GFESDK_OPS_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <gfesdk/ops/ops_types.h> +#include <gfesdk/sdk_types.h> + +/*! +* Allows games to optimize themselves with GeforceExperience. +* +* \param handle[in] - Valid SDK handle returned by NVGSDK_Create +* \param params[in] - Optimization parameters that help to find correct game. +* \param callback[in] - Callback return function as described by \ref section_async +* \param context[in] - Opaque context pointer as described by \ref section_async +* +* \retval NVGSDK_SUCCESS - Call was successful +* \retval NVGSDK_ERR_INVALID_PARAMETER - Invalid handle or other pointer provided +* \retval NVGSDK_ERR_APPLICATION_LOOKUP_FAILED - Game isn't recognized +* \retval NVGSDK_ERR_APP_NO_OPTIMIZATION - Game is recognized but has no optimizations to apply +* \retval NVGSDK_ERR_APP_SETTINGS_READ - Error during reading game settings. +* \retval NVGSDK_ERR_APP_SETTINGS_WRITE - Error during writing game settings. +*/ + +NVGSDK_EXPORT void NVGSDKApi +NVGSDK_OPS_OptimizeAsync(NVGSDK_HANDLE* handle, NVGSDK_OPS_OptimizeParams const* params, NVGSDK_EmptyCallback callback, void* context); + + +#ifdef __cplusplus +} +#endif + +#endif // GFESDK_OPS_H diff --git a/include/gfesdk/ops/ops_types.h b/include/gfesdk/ops/ops_types.h new file mode 100644 index 0000000..54364aa --- /dev/null +++ b/include/gfesdk/ops/ops_types.h @@ -0,0 +1,26 @@ +/* Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved. +* +* NVIDIA CORPORATION and its licensors retain all intellectual property +* and proprietary rights in and to this software, 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. +*/ + +/*! +* \file +* OPS types +*/ + +#ifndef OPS_TYPES_H +#define OPS_TYPES_H + + +/* Parameters passed to Optimize call. */ +struct NVGSDK_OPS_OptimizeParams +{ + char const* imageFilePath; //!< Full path to the application image file used for renderning (e.g. "C:\Steam\steamapps\common\GameName\bin\game.exe") + char const* uwpPackageFamilyName; //!< Contains empty string for desktop applications. For UWP applications, contains package family name. (e.g. "Microsoft.MinecraftUWP_8wekyb3d8bbwe") +}; + +#endif // OPS_TYPES_H diff --git a/lib/win32/GfeSDK.lib b/lib/win32/GfeSDK.lib Binary files differindex a26ce2c..9ed088f 100644 --- a/lib/win32/GfeSDK.lib +++ b/lib/win32/GfeSDK.lib diff --git a/lib/win64/GfeSDK.lib b/lib/win64/GfeSDK.lib Binary files differindex 7c09de5..beba2a7 100644 --- a/lib/win64/GfeSDK.lib +++ b/lib/win64/GfeSDK.lib diff --git a/redist/win32/GfeSDK.dll b/redist/win32/GfeSDK.dll Binary files differindex f700155..d493881 100644 --- a/redist/win32/GfeSDK.dll +++ b/redist/win32/GfeSDK.dll diff --git a/redist/win64/GfeSDK.dll b/redist/win64/GfeSDK.dll Binary files differindex 246f968..e06d9e0 100644 --- a/redist/win64/GfeSDK.dll +++ b/redist/win64/GfeSDK.dll diff --git a/samples/DX_APIUsage/DXUT/Optional/SDKmisc.cpp b/samples/DX_APIUsage/DXUT/Optional/SDKmisc.cpp index e81ce83..aec7572 100644 --- a/samples/DX_APIUsage/DXUT/Optional/SDKmisc.cpp +++ b/samples/DX_APIUsage/DXUT/Optional/SDKmisc.cpp @@ -146,7 +146,7 @@ INT_PTR CALLBACK DisplaySwitchToREFWarningProc( HWND hDlg, UINT message, WPARAM SendMessage( GetDlgItem( hDlg, 0x100 ), STM_SETIMAGE, IMAGE_ICON, ( LPARAM )LoadIcon( 0, IDI_QUESTION ) ); WCHAR sz[512]; swprintf_s( sz, 512, - L"This program needs to use the Direct3D %d reference device. This device implements the entire Direct3D %d feature set, but runs very slowly. Do you wish to continue?", lParam, lParam ); + L"This program needs to use the Direct3D %lld reference device. This device implements the entire Direct3D %lld feature set, but runs very slowly. Do you wish to continue?", lParam, lParam ); SetDlgItemText( hDlg, 0x101, sz ); SetDlgItemText( hDlg, IDYES, L"&Yes" ); SetDlgItemText( hDlg, IDNO, L"&No" ); diff --git a/samples/DX_APIUsage/DX_APIUsage.vcxproj b/samples/DX_APIUsage/DX_APIUsage.vcxproj index ee74391..cc01078 100644 --- a/samples/DX_APIUsage/DX_APIUsage.vcxproj +++ b/samples/DX_APIUsage/DX_APIUsage.vcxproj @@ -52,14 +52,22 @@ <ClCompile Include="GfeSDKHighlights.c"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_C|Win32'">true</ExcludedFromBuild> - <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_C|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_C|Win32'">false</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_C|x64'">false</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_C|Win32'">false</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_C|x64'">false</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> </ClCompile> <ClCompile Include="GfeSDKHighlights.cpp"> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_C|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_C|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_C|Win32'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_C|x64'">true</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild> + <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild> </ClCompile> <ClCompile Include="jsoncpp\jsoncpp.cpp" /> <ClCompile Include="Main.cpp" /> @@ -150,7 +158,7 @@ <VCProjectVersion>15.0</VCProjectVersion> <ProjectGuid>{F8E9C3B1-0CBE-495D-8C51-5A936537A15C}</ProjectGuid> <RootNamespace>DXAPIUsage</RootNamespace> - <WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion> + <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion> </PropertyGroup> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> @@ -265,9 +273,9 @@ <Optimization>Disabled</Optimization> <SDLCheck>true</SDLCheck> <ConformanceMode>true</ConformanceMode> - <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(WindowsSDK_IncludePath);$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>UNICODE=1;WIN32;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> + <DisableSpecificWarnings>4996;4838;4302;4091;%(DisableSpecificWarnings)</DisableSpecificWarnings> </ClCompile> <Link> <AdditionalDependencies>d3dcompiler.lib;d3dx11.lib;d3dx9.lib;DxErr.lib;dxguid.lib;DSound.lib;winmm.lib;comctl32.lib;Imm32.lib;version.lib;legacy_stdio_definitions.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;Shlwapi.lib;GfeSDK.lib</AdditionalDependencies> @@ -281,9 +289,9 @@ <Optimization>Disabled</Optimization> <SDLCheck>true</SDLCheck> <ConformanceMode>true</ConformanceMode> - <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(WindowsSDK_IncludePath);$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>UNICODE=1;WIN32;_WINDOWS;GFESDKDEMO_BUILD_C;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> + <DisableSpecificWarnings>4996;4838;4302;4091;%(DisableSpecificWarnings)</DisableSpecificWarnings> </ClCompile> <Link> <AdditionalDependencies>d3dcompiler.lib;d3dx11.lib;d3dx9.lib;DxErr.lib;dxguid.lib;DSound.lib;winmm.lib;comctl32.lib;Imm32.lib;version.lib;legacy_stdio_definitions.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;Shlwapi.lib;GfeSDK.lib</AdditionalDependencies> @@ -297,9 +305,9 @@ <Optimization>Disabled</Optimization> <SDLCheck>true</SDLCheck> <ConformanceMode>true</ConformanceMode> - <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(WindowsSDK_IncludePath);$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>UNICODE=1;WIN32;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> + <DisableSpecificWarnings>4996;4838;4302;4091;%(DisableSpecificWarnings)</DisableSpecificWarnings> </ClCompile> <Link> <AdditionalLibraryDirectories>$(ProjectDir)\..\..\lib\win64;$(DXSDK_DIR)\Lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> @@ -313,9 +321,9 @@ <Optimization>Disabled</Optimization> <SDLCheck>true</SDLCheck> <ConformanceMode>true</ConformanceMode> - <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(WindowsSDK_IncludePath);$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>UNICODE=1;WIN32;_WINDOWS;GFESDKDEMO_BUILD_C;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> + <DisableSpecificWarnings>4996;4838;4302;4091;%(DisableSpecificWarnings)</DisableSpecificWarnings> </ClCompile> <Link> <AdditionalLibraryDirectories>$(ProjectDir)\..\..\lib\win64;$(DXSDK_DIR)\Lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> @@ -331,9 +339,9 @@ <IntrinsicFunctions>true</IntrinsicFunctions> <SDLCheck>true</SDLCheck> <ConformanceMode>true</ConformanceMode> - <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(WindowsSDK_IncludePath);$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>UNICODE=1;WIN32;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> + <DisableSpecificWarnings>4996;4838;4302;4091;%(DisableSpecificWarnings)</DisableSpecificWarnings> </ClCompile> <Link> <EnableCOMDATFolding>true</EnableCOMDATFolding> @@ -351,9 +359,9 @@ <IntrinsicFunctions>true</IntrinsicFunctions> <SDLCheck>true</SDLCheck> <ConformanceMode>true</ConformanceMode> - <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(WindowsSDK_IncludePath);$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>UNICODE=1;WIN32;_WINDOWS;GFESDKDEMO_BUILD_C;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> + <DisableSpecificWarnings>4996;4838;4302;4091;%(DisableSpecificWarnings)</DisableSpecificWarnings> </ClCompile> <Link> <EnableCOMDATFolding>true</EnableCOMDATFolding> @@ -371,9 +379,9 @@ <IntrinsicFunctions>true</IntrinsicFunctions> <SDLCheck>true</SDLCheck> <ConformanceMode>true</ConformanceMode> - <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(WindowsSDK_IncludePath);$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>UNICODE=1;WIN32;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> + <DisableSpecificWarnings>4996;4838;4302;4091;%(DisableSpecificWarnings)</DisableSpecificWarnings> </ClCompile> <Link> <EnableCOMDATFolding>true</EnableCOMDATFolding> @@ -391,9 +399,9 @@ <IntrinsicFunctions>true</IntrinsicFunctions> <SDLCheck>true</SDLCheck> <ConformanceMode>true</ConformanceMode> - <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + <AdditionalIncludeDirectories>$(ProjectDir)DXUT\Core;$(ProjectDir)DXUT\Optional;$(ProjectDir)jsoncpp;$(ProjectDir)..\..\include;$(WindowsSDK_IncludePath);$(DXSDK_DIR)\Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PreprocessorDefinitions>UNICODE=1;WIN32;_WINDOWS;GFESDKDEMO_BUILD_C;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <DisableSpecificWarnings>4996;%(DisableSpecificWarnings)</DisableSpecificWarnings> + <DisableSpecificWarnings>4996;4838;4302;4091;%(DisableSpecificWarnings)</DisableSpecificWarnings> </ClCompile> <Link> <EnableCOMDATFolding>true</EnableCOMDATFolding> @@ -406,4 +414,4 @@ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <ImportGroup Label="ExtensionTargets"> </ImportGroup> -</Project>
\ No newline at end of file +</Project> diff --git a/samples/DX_APIUsage/GfeSDKHighlights.c b/samples/DX_APIUsage/GfeSDKHighlights.c index d2ba73c..9ffc36d 100644 --- a/samples/DX_APIUsage/GfeSDKHighlights.c +++ b/samples/DX_APIUsage/GfeSDKHighlights.c @@ -21,12 +21,13 @@ #include <stdarg.h> #include <stdlib.h> #include <string.h> +#include <stdio.h> char g_logBuffer[512]; void dbgprint(const char *fmt, ...) { va_list args; va_start(args, fmt); - vsprintf(g_logBuffer, fmt, args); + vsprintf_s(g_logBuffer, sizeof(g_logBuffer) / sizeof(g_logBuffer[0]), fmt, args); printf(g_logBuffer); printf("\n"); OutputDebugStringA(g_logBuffer); @@ -92,13 +93,13 @@ void Init(char const* gameName, char const* defaultLocale, NVGSDK_Highlight* hig inParams.appName = "gfesdk_dx_sample"; inParams.pollForCallbacks = true; - inParams.scopeTable = &scopes; + inParams.scopeTable = &scopes[0]; inParams.scopeTableSize = COUNT_OF(scopes); inParams.notificationCallback = handleNotification; NVGSDK_CreateResponse outParams; memset(&outParams, 0, sizeof(outParams)); - outParams.scopePermissionTable = &scopePermissions; + outParams.scopePermissionTable = &scopePermissions[0]; outParams.scopePermissionTableSize = COUNT_OF(scopes); NVGSDK_RetCode rc = NVGSDK_Create(&g_sdk, &inParams, &outParams); @@ -146,7 +147,7 @@ void Init(char const* gameName, char const* defaultLocale, NVGSDK_Highlight* hig NVGSDK_RequestPermissionsParams requestPermissionsParams = { 0 }; NVGSDK_Scope requestScopes[COUNT_OF(scopes)]; memset(requestScopes, NVGSDK_SCOPE_MAX, COUNT_OF(scopes)); - requestPermissionsParams.scopeTable = &requestScopes; + requestPermissionsParams.scopeTable = &requestScopes[0]; // 'response' came from create call. It tells us which permissions we requested during Create, // but the user hasn't yet made a decision on @@ -267,7 +268,7 @@ void OnOpenSummary(char const* groupIds[], size_t numGroups, int sigFilter, int //! [OpenSummary C] } -void __stdcall handleGotNumHighlights(NVGSDK_RetCode rc, NVGSDK_Highlights_NumberOfHighlights* response, void* context) +void __stdcall handleGotNumHighlights(NVGSDK_RetCode rc, NVGSDK_Highlights_NumberOfHighlights const* response, void* context) { updateResultString(rc); if (NVGSDK_SUCCEEDED(rc)) @@ -285,7 +286,7 @@ void OnGetNumHighlights(char const* groupId, int sigFilter, int tagFilter) groupView.significanceFilter = sigFilter; groupView.tagsFilter = tagFilter; - NVGSDK_Highlights_GetNumberOfHighlightsAsync(g_sdk, &groupView, &handleGotNumHighlights, NULL); + NVGSDK_Highlights_GetNumberOfHighlightsAsync(g_sdk, &groupView, handleGotNumHighlights, NULL); } void __stdcall handleGotLanguage(NVGSDK_RetCode rc, NVGSDK_Language const* response, void* context) @@ -378,8 +379,8 @@ void __stdcall handleConfigured(NVGSDK_RetCode rc, void* context) { for (size_t name = 0; name < params->highlightDefinitionTable[i].nameTableSize; ++name) { - free(params->highlightDefinitionTable[i].nameTable[name].localeCode); - free(params->highlightDefinitionTable[i].nameTable[name].localizedString); + free((void*)params->highlightDefinitionTable[i].nameTable[name].localeCode); + free((void*)params->highlightDefinitionTable[i].nameTable[name].localizedString); } free(params->highlightDefinitionTable[i].nameTable); } @@ -413,9 +414,9 @@ void ConfigureHighlights(char const* defaultLocale, NVGSDK_Highlight* hl, size_t for (size_t name = 0; name < hl[i].nameTableSize; ++name) { highlights[i].nameTable[name].localeCode = calloc(NVGSDK_MAX_LENGTH, sizeof(char)); - strncpy_s(highlights[i].nameTable[name].localeCode, NVGSDK_MAX_LENGTH, hl[i].nameTable[name].localeCode, NVGSDK_MAX_LENGTH); + strncpy_s((char*)highlights[i].nameTable[name].localeCode, NVGSDK_MAX_LENGTH, hl[i].nameTable[name].localeCode, NVGSDK_MAX_LENGTH); highlights[i].nameTable[name].localizedString = calloc(NVGSDK_MAX_LENGTH, sizeof(char)); - strncpy_s(highlights[i].nameTable[name].localizedString, NVGSDK_MAX_LENGTH, hl[i].nameTable[name].localizedString, NVGSDK_MAX_LENGTH); + strncpy_s((char*)highlights[i].nameTable[name].localizedString, NVGSDK_MAX_LENGTH, hl[i].nameTable[name].localizedString, NVGSDK_MAX_LENGTH); } } diff --git a/samples/DX_APIUsage/GfeSDKHighlights.cpp b/samples/DX_APIUsage/GfeSDKHighlights.cpp index 024c4d6..0839c6a 100644 --- a/samples/DX_APIUsage/GfeSDKHighlights.cpp +++ b/samples/DX_APIUsage/GfeSDKHighlights.cpp @@ -21,7 +21,7 @@ char g_logBuffer[512]; void dbgprint(const char *fmt, ...) { va_list args; va_start(args, fmt); - vsprintf(g_logBuffer, fmt, args); + vsprintf_s(g_logBuffer, sizeof(g_logBuffer) / sizeof(g_logBuffer[0]), fmt, args); printf(g_logBuffer); printf("\n"); OutputDebugStringA(g_logBuffer); diff --git a/samples/DX_APIUsage/Main.cpp b/samples/DX_APIUsage/Main.cpp index eaed21a..386b4db 100644 --- a/samples/DX_APIUsage/Main.cpp +++ b/samples/DX_APIUsage/Main.cpp @@ -33,11 +33,11 @@ using namespace GfeSDK; void TRACE(const char* format, ...) { - char buffer[1000]; + char buffer[512]; va_list argptr; va_start(argptr, format); - vsprintf(buffer, format, argptr); + vsprintf_s(buffer, sizeof(buffer) / sizeof(buffer[0]), format, argptr); va_end(argptr); OutputDebugStringA(buffer); @@ -230,7 +230,6 @@ void InitApp() Json::Value jsonHighlightsConfig; { - Json::Reader reader; std::ifstream inFile(pathStr + "/highlights_config.json"); if (!inFile.good()) { @@ -240,7 +239,10 @@ void InitApp() inFile = std::ifstream(pathStr + "/../../highlights_config.json"); } } - if (!reader.parse(inFile, jsonHighlightsConfig)) + + std::string errs; + Json::CharReaderBuilder builder; + if (!Json::parseFromStream(builder, inFile, &jsonHighlightsConfig, &errs)) { TRACE("FAILED to read json file\n"); } @@ -252,9 +254,9 @@ void InitApp() g_highlightsConfig.highlightsData.resize(jsonHighlightsConfig["highlights"].size()); g_highlightsConfig.highlights.resize(jsonHighlightsConfig["highlights"].size()); - for (int i = 0; i < jsonHighlightsConfig["highlights"].size(); ++i) + for (unsigned int i = 0; i < jsonHighlightsConfig["highlights"].size(); ++i) { - Json::Value const& def = jsonHighlightsConfig["highlights"][i]; + Json::Value const& def = jsonHighlightsConfig["highlights"].get(i, Json::Value()); g_highlightsConfig.highlightsData[i].id = def["id"].asString(); g_highlightsConfig.highlightsData[i].isScreenshot = !def.isMember("startDelta"); g_highlightsConfig.highlightsData[i].startDelta = g_highlightsConfig.highlightsData[i].isScreenshot ? 0 : def["startDelta"].asInt(); diff --git a/samples/bin/DX_APIUsage/win32/GfeSDK.dll b/samples/bin/DX_APIUsage/win32/GfeSDK.dll Binary files differindex 3af910d..69730f2 100644 --- a/samples/bin/DX_APIUsage/win32/GfeSDK.dll +++ b/samples/bin/DX_APIUsage/win32/GfeSDK.dll |