55 Commits

Author SHA1 Message Date
R. Aidan Campbell
678d4d038f re-added coercion to equality comparisons 2017-10-08 12:39:45 -07:00
R. Aidan Campbell
ba66f5448d Fixed bug on adding new host 2017-10-08 12:21:27 -07:00
R. Aidan Campbell
c2ec8f377e Fixed bug where clicking game would do nothing 2017-10-08 10:06:13 -07:00
R. Aidan Campbell
46e635cb6e Bugfixes, still not fully functional 2017-10-08 09:59:37 -07:00
R. Aidan Campbell
c6390338e3 JS updates, courtesy of IntelliJ's recommendations
- Changed from var to let
- cached a few JQuery selectors
- added a few semicolons
- standardized indentation back to spaces
- removed dead code from utils.js
- switched from == to === to eliminate coercion
2017-10-07 14:24:21 -07:00
Cameron Gutman
e0c4c01e44 Keep the display awake when streaming. Fixes #325 2017-10-04 19:19:56 -07:00
Cameron Gutman
3f244ff8e1 Fix default value of optimize games toggle 2017-09-08 21:03:55 -07:00
Cameron Gutman
63731def4a Update tooltip of remote audio checkbox and put it in a nav menu div 2017-09-05 21:14:36 -07:00
Cameron Gutman
9b4e7b661b Switch GFE optimizations from a menu to a toggle 2017-09-05 21:07:12 -07:00
GoonieG
f32a35607b Feature to enable Gamestream optimization or not (#309)
* Added new feature.  Menu option added (and helper code) to enable or disable Geforce Experience option to modify/optimize game settings or not.

* Revert manifest.json change
2017-09-05 21:06:44 -07:00
Cameron Gutman
f45a2c22d5 Merge pull request #308 from Jorys-Paulin/feature/roboto
Added Roboto font
2017-09-05 20:30:39 -07:00
Paulin Jorys
00e1511daf Added offline support 2017-09-05 18:43:51 +02:00
Paulin Jorys
7c29774fbb Added Roboto font 2017-09-05 18:27:35 +02:00
R. Aidan Campbell
3f7e3aa10b Merge pull request #276 from Jorys-Paulin/js-cleaning
A console update
2017-09-03 16:56:09 -07:00
Cameron Gutman
3157fb6923 Update to version 0.7.4 2017-09-03 11:42:31 -07:00
Cameron Gutman
fb5988ffec Update libcurl webports and dependencies for IPv6 support 2017-09-02 22:28:44 -07:00
Cameron Gutman
584d504273 Fix ability to update address of existing hosts via Add PC dialog 2017-09-02 21:26:28 -07:00
Cameron Gutman
498bff4b0b Update common-c submodule 2017-09-02 21:25:13 -07:00
Cameron Gutman
94df20bbee Improve performance of PC polling with many paired PCs 2017-09-02 20:30:18 -07:00
Cameron Gutman
f485c8ce49 Update icons 2017-08-23 23:04:22 -07:00
Cameron Gutman
b4ba33f72a Fix file mode on a bunch of files 2017-08-23 22:27:49 -07:00
Paulin Jorys
bdfc115a0a Added basic jsdoc for the messages.js file 2017-07-19 18:08:43 +02:00
Paulin Jorys
079126360d Quick-fix: changed ";" to "," 2017-07-12 11:31:06 +02:00
Paulin Jorys
d5db081e7d Added console errors for startGame() and stopGame() 2017-07-12 11:28:33 +02:00
Paulin Jorys
e1616df7b4 Fixed a git error 2017-07-11 16:25:18 +02:00
Paulin Jorys
7517e379c5 Merge branch 'js-cleaning' of https://github.com/Jorys-Paulin/moonlight-chrome into js-cleaning 2017-07-11 16:17:22 +02:00
Paulin Jorys
a34a0c492a Quick fix: Updated the remote audio storage log & launch app 2017-07-11 16:11:19 +02:00
Paulin Jorys
66da3a7c87 Quick fix: Updated the remote audio storage log 2017-07-11 16:03:34 +02:00
Paulin Jorys
12f0be4149 Quick-fix: snackback logging in the console 2017-07-11 13:53:04 +02:00
Paulin Jorys
6257594085 Inverted order for labels
From "function,filename" to "filename,function"
Added "[filename, function] to messages.js
2017-07-11 13:47:13 +02:00
Paulin Jorys
cfaa0efde4 Renamed "Moonlight GUI" to "index.js"
Changed utils.js:316 to be a 'backend' error
2017-07-11 13:28:22 +02:00
Paulin Jorys
1c0a575ccc Added back the host.toString() method to support text-file logs 2017-07-11 13:25:27 +02:00
Paulin Jorys
4108d696e4 Added better console logs 2017-07-11 13:20:01 +02:00
Cameron Gutman
2dfdf703fd Version 0.7.3 2017-06-24 17:18:49 -07:00
Cameron Gutman
d19ca54fda Merge pull request #246 from Jorys-Paulin/feature-a11y
Accessibility and keyboard support
2017-06-23 22:08:39 -07:00
Cameron Gutman
37387e151f Batch mouse movement events to reduce input lag with high polling rate mice 2017-06-23 16:43:10 -07:00
Paulin Jorys
2fc6b10cc9 Fixed lint errors 2017-06-23 16:12:30 +02:00
Cameron Gutman
59e3a104ba Update to latest moonlight-common-c 2017-06-11 15:52:03 -07:00
Cameron Gutman
2456ec603c Version 0.7.2 2017-06-08 21:57:27 -07:00
Cameron Gutman
cae6b4a566 Update moonlight-common-c with latest bugfixes 2017-06-08 21:50:00 -07:00
R. Aidan Campbell
326b7d6aed quick bitrate fix, thanks to Prax's mailed in patch 2017-05-29 18:20:31 -07:00
Paulin Jorys
d2a2542e5b go-back button now properly announced 2017-05-23 17:44:34 +02:00
Paulin Jorys
59e7adb32f Changed the back-button to be a mdl component 2017-05-23 17:42:29 +02:00
Paulin Jorys
8e601a9577 Added enter keyboard action for grids 2017-05-23 17:41:03 +02:00
Paulin Jorys
8689032369 Host grid accessible 2017-05-21 18:35:10 +02:00
Paulin Jorys
9cd90d5a8d Back button is now recognised 2017-05-21 18:28:22 +02:00
Paulin Jorys
850862c1d1 Quit app button now announces correctly 2017-05-21 18:26:03 +02:00
Paulin Jorys
053cd9a830 Made the game grid accessible 2017-05-21 18:22:28 +02:00
Cameron Gutman
38a7a058ab Only poll hosts in the background on the host display page 2017-05-13 23:14:15 -07:00
Cameron Gutman
7d978ca131 Prevent callbacks from many polling requests being queued for the same host 2017-05-13 23:12:55 -07:00
Cameron Gutman
c3d72f8c71 Correct default remote audio state 2017-05-13 22:50:02 -07:00
Cameron Gutman
fb85ea15da Correct default resolution to 720p 2017-05-13 22:15:44 -07:00
Cameron Gutman
3f0d2b9909 Update moonlight-common-c 2017-05-11 20:13:10 -07:00
Cameron Gutman
e4bec4133d Version 0.7.1 2017-05-07 23:11:29 -07:00
Cameron Gutman
c0d9ae87f2 Update common-c with critical FEC fixes 2017-05-07 23:10:31 -07:00
114 changed files with 563 additions and 519 deletions

View File

@@ -34,7 +34,7 @@ static void AudioPlayerSampleCallback(void* samples, uint32_t buffer_size, void*
}
}
void MoonlightInstance::AudDecInit(int audioConfiguration, POPUS_MULTISTREAM_CONFIGURATION opusConfig) {
int MoonlightInstance::AudDecInit(int audioConfiguration, POPUS_MULTISTREAM_CONFIGURATION opusConfig, void* context, int flags) {
int rc;
g_Instance->m_OpusDecoder = opus_multistream_decoder_create(opusConfig->sampleRate,
@@ -49,6 +49,8 @@ void MoonlightInstance::AudDecInit(int audioConfiguration, POPUS_MULTISTREAM_CON
// Start playback now
g_Instance->m_AudioPlayer.StartPlayback();
return 0;
}
void MoonlightInstance::AudDecCleanup(void) {
@@ -83,8 +85,8 @@ void MoonlightInstance::AudDecDecodeAndPlaySample(char* sampleData, int sampleLe
}
AUDIO_RENDERER_CALLBACKS MoonlightInstance::s_ArCallbacks = {
MoonlightInstance::AudDecInit,
MoonlightInstance::AudDecCleanup,
MoonlightInstance::AudDecDecodeAndPlaySample,
CAPABILITY_DIRECT_SUBMIT
};
.init = MoonlightInstance::AudDecInit,
.cleanup = MoonlightInstance::AudDecCleanup,
.decodeAndPlaySample = MoonlightInstance::AudDecDecodeAndPlaySample,
.capabilities = CAPABILITY_DIRECT_SUBMIT
};

View File

@@ -38,12 +38,18 @@ void MoonlightInstance::ClDisplayTransientMessage(const char* message) {
g_Instance->PostMessage(response);
}
void MoonlightInstance::ClLogMessage(const char* format, ...) {
va_list va;
va_start(va, format);
vfprintf(stderr, format, va);
va_end(va);
}
CONNECTION_LISTENER_CALLBACKS MoonlightInstance::s_ClCallbacks = {
MoonlightInstance::ClStageStarting,
NULL,
MoonlightInstance::ClStageFailed,
MoonlightInstance::ClConnectionStarted,
MoonlightInstance::ClConnectionTerminated,
MoonlightInstance::ClDisplayMessage,
MoonlightInstance::ClDisplayTransientMessage
.stageStarting = MoonlightInstance::ClStageStarting,
.stageFailed = MoonlightInstance::ClStageFailed,
.connectionStarted = MoonlightInstance::ClConnectionStarted,
.connectionTerminated = MoonlightInstance::ClConnectionTerminated,
.displayMessage = MoonlightInstance::ClDisplayMessage,
.displayTransientMessage = MoonlightInstance::ClDisplayTransientMessage
};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 809 B

After

Width:  |  Height:  |  Size: 859 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -14,18 +14,17 @@
<div class="mdl-layout mdl-js-layout">
<header id="main-navigation" class="mdl-layout__header mdl-layout__header--transparent">
<div class="mdl-layout__header-row">
<span id='backIcon'><i class="material-icons">keyboard_arrow_left</i></span>
<button id="backIcon" class="mdl-button mdl-js-button mdl-button--icon" role="link" aria-label="Host selection"><i class="material-icons">keyboard_arrow_left</i></button>
<!-- Title -->
<span class="mdl-layout-title">MOON<span>LIGHT</span></span>
<!-- Add spacer, to align navigation to the right -->
<div class="mdl-layout-spacer"></div>
<!-- Navigation -->
<nav class="mdl-navigation">
<div class="nav-menu-parent">
<div id="resolutionMenu">
<button id="selectResolution" data-value="1920:1080" class="mdl-button mdl-js-button">
1080p
<button id="selectResolution" data-value="1280:720" class="mdl-button mdl-js-button">
720p
</button>
</div>
@@ -40,7 +39,6 @@
Resolution
</div>
</div>
<div class="nav-menu-parent">
<div id="framerateMenu">
<button id="selectFramerate" data-value="60" class="mdl-button mdl-js-button">
@@ -61,7 +59,7 @@
<div class="nav-menu-parent">
<div id="bandwidthMenu">
<button id='bitrateField' class="mdl-button">10 Mbps</button>
<button id="bitrateField" class="mdl-button">10 Mbps</button>
</div>
<div class="bitrateMenu mdl-menu mdl-js-menu mdl-js-ripple-effect" for="bandwidthMenu">
@@ -73,15 +71,27 @@
</div>
</div>
<label id="externalAudioBtn" class="mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect" for="remoteAudioEnabledSwitch">
<input type="checkbox" id="remoteAudioEnabledSwitch" class="mdl-icon-toggle__input" checked>
<i class="mdl-icon-toggle__label material-icons">volume_up</i>
</label>
<div id="externalAudioTooltip" class="mdl-tooltip" for="externalAudioBtn">
Remote audio is ON
<div class="nav-menu-parent">
<label id="externalAudioBtn" class="mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect" for="remoteAudioEnabledSwitch">
<input type="checkbox" id="remoteAudioEnabledSwitch" class="mdl-icon-toggle__input">
<i class="mdl-icon-toggle__label material-icons">volume_up</i>
</label>
<div id="externalAudioTooltip" class="mdl-tooltip" for="externalAudioBtn">
Play audio on the host PC speakers
</div>
</div>
<button type="button" class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored mdl-js-ripple-effect" id="quitCurrentApp">
<div class="nav-menu-parent">
<label id="optimizeGamesBtn" class="mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect" for="optimizeGamesSwitch">
<input type="checkbox" id="optimizeGamesSwitch" class="mdl-icon-toggle__input">
<i class="mdl-icon-toggle__label material-icons">timeline</i>
</label>
<div id="optimizeGamesTooltip" class="mdl-tooltip" for="optimizeGamesBtn">
Allow GeForce Experience to optimize game settings for streaming
</div>
</div>
<button type="button" class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored mdl-js-ripple-effect" id="quitCurrentApp" aria-label="Quit current app">
<i class="material-icons">remove_circle_outline</i>
Quit Current App
</button>
@@ -91,8 +101,8 @@
<main id="main-content" class="mdl-layout__content">
<div id="host-grid">
<div class="page-title">Your PCs</div>
<div class="add-host-card mdl-card mdl-shadow--4dp" id='addHostCell'>
<div class="mdl-card__title mdl-card--expand" id="addHostIcon">
<div class="add-host-card mdl-card mdl-shadow--4dp" id="addHostCell">
<div class="mdl-card__title mdl-card--expand" id="addHostIcon" role="link" tabindex="0" aria-label="Add Host">
<h2 class="mdl-card__title-text" >Add Host</h2>
</div>
</div>
@@ -168,7 +178,7 @@
</dialog>
<div id="snackbar" class="mdl-snackbar mdl-js-snackbar">
<div class="mdl-snackbar__text"></div>
<button id='snackButton' class="mdl-snackbar__action" type="button"></button> <!-- this button exists to suppress the snackbar warning. we're really using a toast. -->
<button id="snackButton" class="mdl-snackbar__action" type="button"></button> <!-- this button exists to suppress the snackbar warning. we're really using a toast. -->
</div>
</body>
</html>
</html>

View File

@@ -51,6 +51,13 @@ static char GetModifierFlags(const pp::InputEvent& event) {
return flags;
}
void MoonlightInstance::ReportMouseMovement() {
if (m_MouseDeltaX != 0 || m_MouseDeltaY != 0) {
LiSendMouseMoveEvent(m_MouseDeltaX, m_MouseDeltaY);
m_MouseDeltaX = m_MouseDeltaY = 0;
}
}
bool MoonlightInstance::HandleInputEvent(const pp::InputEvent& event) {
switch (event.GetType()) {
case PP_INPUTEVENT_TYPE_MOUSEDOWN: {
@@ -77,7 +84,10 @@ bool MoonlightInstance::HandleInputEvent(const pp::InputEvent& event) {
pp::MouseInputEvent mouseEvent(event);
pp::Point posDelta = mouseEvent.GetMovement();
LiSendMouseMoveEvent(posDelta.x(), posDelta.y());
// Wait to report mouse movement until the next input polling window
// to allow batching to occur which reduces overall input lag.
m_MouseDeltaX += posDelta.x();
m_MouseDeltaY += posDelta.y();
return true;
}

View File

@@ -1,5 +1,6 @@
#include <sys/timeb.h>
#include <sys/time.h>
#include <stdlib.h>
// This function is defined but not implemented by newlib
int ftime(struct timeb *tp) {
@@ -15,4 +16,11 @@ int ftime(struct timeb *tp) {
tp->dstflag = 0;
return 0;
}
}
// This function is required for libcurl to link but never
// called using by any of the APIs we use
unsigned alarm(unsigned seconds) {
abort();
return 0;
}

View File

@@ -80,8 +80,9 @@ int http_request(char* url, PHTTP_DATA data) {
curl_easy_setopt(curl, CURLOPT_MAXCONNECTS, 0L);
curl_easy_setopt(curl, CURLOPT_FRESH_CONNECT, 1L);
curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1L);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 5L);
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3L);
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);
curl_easy_setopt(curl, CURLOPT_SSL_ENABLE_ALPN, 0L);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, data);
curl_easy_setopt(curl, CURLOPT_URL, url);

View File

@@ -22,8 +22,6 @@
MoonlightInstance* g_Instance;
MoonlightInstance::~MoonlightInstance() {}
class MoonlightModule : public pp::Module {
public:
MoonlightModule() : pp::Module() {}
@@ -85,18 +83,19 @@ void* MoonlightInstance::StopThreadFunc(void* context) {
// We also need to stop this thread after the connection thread, because it depends
// on being initialized there.
pthread_join(g_Instance->m_GamepadThread, NULL);
pthread_join(g_Instance->m_InputThread, NULL);
// Stop the connection
LiStopConnection();
return NULL;
}
void* MoonlightInstance::GamepadThreadFunc(void* context) {
void* MoonlightInstance::InputThreadFunc(void* context) {
MoonlightInstance* me = (MoonlightInstance*)context;
while (me->m_Running) {
me->PollGamepads();
me->ReportMouseMovement();
// Poll every 10 ms
usleep(10 * 1000);
@@ -123,6 +122,7 @@ void* MoonlightInstance::ConnectionThreadFunc(void* context) {
&MoonlightInstance::s_ClCallbacks,
&MoonlightInstance::s_DrCallbacks,
&MoonlightInstance::s_ArCallbacks,
NULL, 0,
NULL, 0);
if (err != 0) {
// Notify the JS code that the stream has ended
@@ -134,7 +134,7 @@ void* MoonlightInstance::ConnectionThreadFunc(void* context) {
// Set running state before starting connection-specific threads
me->m_Running = true;
pthread_create(&me->m_GamepadThread, NULL, MoonlightInstance::GamepadThreadFunc, me);
pthread_create(&me->m_InputThread, NULL, MoonlightInstance::InputThreadFunc, me);
return NULL;
}
@@ -256,13 +256,15 @@ void MoonlightInstance::HandleOpenURL(int32_t callbackId, pp::VarArray args) {
std::string url = args.Get(0).AsString();
bool binaryResponse = args.Get(1).AsBool();
openHttpThread.message_loop().PostWork(m_CallbackFactory.NewCallback(&MoonlightInstance::NvHTTPRequest, callbackId, url, binaryResponse));
m_HttpThreadPool[m_HttpThreadPoolSequence++ % HTTP_HANDLER_THREADS]->message_loop().PostWork(
m_CallbackFactory.NewCallback(&MoonlightInstance::NvHTTPRequest, callbackId, url, binaryResponse));
PostMessage(pp::Var (url.c_str()));
}
void MoonlightInstance::HandlePair(int32_t callbackId, pp::VarArray args) {
openHttpThread.message_loop().PostWork(m_CallbackFactory.NewCallback(&MoonlightInstance::PairCallback, callbackId, args));
m_HttpThreadPool[m_HttpThreadPoolSequence++ % HTTP_HANDLER_THREADS]->message_loop().PostWork(
m_CallbackFactory.NewCallback(&MoonlightInstance::PairCallback, callbackId, args));
}
void MoonlightInstance::PairCallback(int32_t /*result*/, int32_t callbackId, pp::VarArray args) {

View File

@@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "Moonlight Game Streaming",
"short_name": "Moonlight",
"version": "0.7.0",
"version": "0.7.4",
"description": "Open-source client for NVIDIA GameStream",
"icons": {
"128": "icons/icon128.png",
@@ -26,6 +26,7 @@
"pointerLock",
"system.network",
"fullscreen",
"power",
"overrideEscFullscreen", {
"socket": [
"tcp-connect",

View File

@@ -38,6 +38,11 @@
#define DR_FLAG_FORCE_SW_DECODE 0x01
// These will mostly be I/O bound so we'll create
// a bunch to allow more concurrent server requests
// since our HTTP request libary is synchronous.
#define HTTP_HANDLER_THREADS 8
struct Shader {
Shader() : program(0), texcoord_scale_location(0) {}
~Shader() {}
@@ -59,7 +64,9 @@ class MoonlightInstance : public pp::Instance, public pp::MouseLock {
m_MouseLocked(false),
m_WaitingForAllModifiersUp(false),
m_AccumulatedTicks(0),
openHttpThread(this) {
m_MouseDeltaX(0),
m_MouseDeltaY(0),
m_HttpThreadPoolSequence(0) {
// This function MUST be used otherwise sockets don't work (nacl_io_init() doesn't work!)
nacl_io_init_ppapi(pp_instance(), pp::Module::Get()->get_browser_interface());
@@ -69,10 +76,18 @@ class MoonlightInstance : public pp::Instance, public pp::MouseLock {
m_GamepadApi = static_cast<const PPB_Gamepad*>(pp::Module::Get()->GetBrowserInterface(PPB_GAMEPAD_INTERFACE));
openHttpThread.Start();
for (int i = 0; i < HTTP_HANDLER_THREADS; i++) {
m_HttpThreadPool[i] = new pp::SimpleThread(this);
m_HttpThreadPool[i]->Start();
}
}
virtual ~MoonlightInstance();
virtual ~MoonlightInstance() {
for (int i = 0; i < HTTP_HANDLER_THREADS; i++) {
m_HttpThreadPool[i]->Join();
delete m_HttpThreadPool[i];
}
}
bool Init(uint32_t argc, const char* argn[], const char* argv[]);
@@ -85,6 +100,7 @@ class MoonlightInstance : public pp::Instance, public pp::MouseLock {
void PairCallback(int32_t /*result*/, int32_t callbackId, pp::VarArray args);
bool HandleInputEvent(const pp::InputEvent& event);
void ReportMouseMovement();
void PollGamepads();
@@ -105,7 +121,7 @@ class MoonlightInstance : public pp::Instance, public pp::MouseLock {
static void ProfilerPrintWarning(const char* message);
static void* ConnectionThreadFunc(void* context);
static void* GamepadThreadFunc(void* context);
static void* InputThreadFunc(void* context);
static void* StopThreadFunc(void* context);
static void ClStageStarting(int stage);
@@ -114,6 +130,7 @@ class MoonlightInstance : public pp::Instance, public pp::MouseLock {
static void ClConnectionTerminated(long errorCode);
static void ClDisplayMessage(const char* message);
static void ClDisplayTransientMessage(const char* message);
static void ClLogMessage(const char* format, ...);
static Shader CreateProgram(const char* vertexShader, const char* fragmentShader);
static void CreateShader(GLuint program, GLenum type, const char* source, int size);
@@ -125,11 +142,11 @@ class MoonlightInstance : public pp::Instance, public pp::MouseLock {
bool InitializeRenderingSurface(int width, int height);
void DidChangeFocus(bool got_focus);
static void VidDecSetup(int videoFormat, int width, int height, int redrawRate, void* context, int drFlags);
static int VidDecSetup(int videoFormat, int width, int height, int redrawRate, void* context, int drFlags);
static void VidDecCleanup(void);
static int VidDecSubmitDecodeUnit(PDECODE_UNIT decodeUnit);
static void AudDecInit(int audioConfiguration, POPUS_MULTISTREAM_CONFIGURATION opusConfig);
static int AudDecInit(int audioConfiguration, POPUS_MULTISTREAM_CONFIGURATION opusConfig, void* context, int flags);
static void AudDecCleanup(void);
static void AudDecDecodeAndPlaySample(char* sampleData, int sampleLength);
@@ -150,7 +167,7 @@ class MoonlightInstance : public pp::Instance, public pp::MouseLock {
bool m_Running;
pthread_t m_ConnectionThread;
pthread_t m_GamepadThread;
pthread_t m_InputThread;
pp::Graphics3D m_Graphics3D;
pp::VideoDecoder* m_VideoDecoder;
@@ -172,8 +189,10 @@ class MoonlightInstance : public pp::Instance, public pp::MouseLock {
bool m_MouseLocked;
bool m_WaitingForAllModifiersUp;
float m_AccumulatedTicks;
int32_t m_MouseDeltaX, m_MouseDeltaY;
pp::SimpleThread openHttpThread;
pp::SimpleThread* m_HttpThreadPool[HTTP_HANDLER_THREADS];
uint32_t m_HttpThreadPoolSequence;
};
extern MoonlightInstance* g_Instance;

0
ports/include/curl/curl.h Executable file → Normal file
View File

0
ports/include/curl/curlbuild.h Executable file → Normal file
View File

0
ports/include/curl/curlrules.h Executable file → Normal file
View File

0
ports/include/curl/curlver.h Executable file → Normal file
View File

0
ports/include/curl/easy.h Executable file → Normal file
View File

0
ports/include/curl/mprintf.h Executable file → Normal file
View File

0
ports/include/curl/multi.h Executable file → Normal file
View File

0
ports/include/curl/stdcheaders.h Executable file → Normal file
View File

0
ports/include/curl/typecheck-gcc.h Executable file → Normal file
View File

0
ports/include/openssl/aes.h Executable file → Normal file
View File

0
ports/include/openssl/asn1.h Executable file → Normal file
View File

0
ports/include/openssl/asn1_mac.h Executable file → Normal file
View File

0
ports/include/openssl/asn1t.h Executable file → Normal file
View File

0
ports/include/openssl/bio.h Executable file → Normal file
View File

0
ports/include/openssl/blowfish.h Executable file → Normal file
View File

0
ports/include/openssl/bn.h Executable file → Normal file
View File

0
ports/include/openssl/buffer.h Executable file → Normal file
View File

0
ports/include/openssl/camellia.h Executable file → Normal file
View File

0
ports/include/openssl/cast.h Executable file → Normal file
View File

0
ports/include/openssl/cmac.h Executable file → Normal file
View File

0
ports/include/openssl/cms.h Executable file → Normal file
View File

0
ports/include/openssl/comp.h Executable file → Normal file
View File

0
ports/include/openssl/conf.h Executable file → Normal file
View File

0
ports/include/openssl/conf_api.h Executable file → Normal file
View File

0
ports/include/openssl/crypto.h Executable file → Normal file
View File

0
ports/include/openssl/des.h Executable file → Normal file
View File

0
ports/include/openssl/des_old.h Executable file → Normal file
View File

0
ports/include/openssl/dh.h Executable file → Normal file
View File

0
ports/include/openssl/dsa.h Executable file → Normal file
View File

0
ports/include/openssl/dso.h Executable file → Normal file
View File

0
ports/include/openssl/dtls1.h Executable file → Normal file
View File

0
ports/include/openssl/e_os2.h Executable file → Normal file
View File

0
ports/include/openssl/ebcdic.h Executable file → Normal file
View File

0
ports/include/openssl/ec.h Executable file → Normal file
View File

0
ports/include/openssl/ecdh.h Executable file → Normal file
View File

0
ports/include/openssl/ecdsa.h Executable file → Normal file
View File

0
ports/include/openssl/engine.h Executable file → Normal file
View File

0
ports/include/openssl/err.h Executable file → Normal file
View File

0
ports/include/openssl/evp.h Executable file → Normal file
View File

0
ports/include/openssl/hmac.h Executable file → Normal file
View File

0
ports/include/openssl/idea.h Executable file → Normal file
View File

0
ports/include/openssl/krb5_asn.h Executable file → Normal file
View File

0
ports/include/openssl/kssl.h Executable file → Normal file
View File

0
ports/include/openssl/lhash.h Executable file → Normal file
View File

0
ports/include/openssl/md4.h Executable file → Normal file
View File

0
ports/include/openssl/md5.h Executable file → Normal file
View File

0
ports/include/openssl/mdc2.h Executable file → Normal file
View File

0
ports/include/openssl/modes.h Executable file → Normal file
View File

0
ports/include/openssl/obj_mac.h Executable file → Normal file
View File

0
ports/include/openssl/objects.h Executable file → Normal file
View File

0
ports/include/openssl/ocsp.h Executable file → Normal file
View File

0
ports/include/openssl/opensslconf.h Executable file → Normal file
View File

0
ports/include/openssl/opensslv.h Executable file → Normal file
View File

0
ports/include/openssl/ossl_typ.h Executable file → Normal file
View File

0
ports/include/openssl/pem.h Executable file → Normal file
View File

0
ports/include/openssl/pem2.h Executable file → Normal file
View File

0
ports/include/openssl/pkcs12.h Executable file → Normal file
View File

0
ports/include/openssl/pkcs7.h Executable file → Normal file
View File

0
ports/include/openssl/pqueue.h Executable file → Normal file
View File

0
ports/include/openssl/rand.h Executable file → Normal file
View File

0
ports/include/openssl/rc2.h Executable file → Normal file
View File

0
ports/include/openssl/rc4.h Executable file → Normal file
View File

0
ports/include/openssl/ripemd.h Executable file → Normal file
View File

0
ports/include/openssl/rsa.h Executable file → Normal file
View File

0
ports/include/openssl/safestack.h Executable file → Normal file
View File

0
ports/include/openssl/seed.h Executable file → Normal file
View File

0
ports/include/openssl/sha.h Executable file → Normal file
View File

0
ports/include/openssl/srp.h Executable file → Normal file
View File

0
ports/include/openssl/srtp.h Executable file → Normal file
View File

0
ports/include/openssl/ssl.h Executable file → Normal file
View File

0
ports/include/openssl/ssl2.h Executable file → Normal file
View File

0
ports/include/openssl/ssl23.h Executable file → Normal file
View File

0
ports/include/openssl/ssl3.h Executable file → Normal file
View File

0
ports/include/openssl/stack.h Executable file → Normal file
View File

0
ports/include/openssl/symhacks.h Executable file → Normal file
View File

0
ports/include/openssl/tls1.h Executable file → Normal file
View File

0
ports/include/openssl/ts.h Executable file → Normal file
View File

0
ports/include/openssl/txt_db.h Executable file → Normal file
View File

0
ports/include/openssl/ui.h Executable file → Normal file
View File

0
ports/include/openssl/ui_compat.h Executable file → Normal file
View File

0
ports/include/openssl/whrlpool.h Executable file → Normal file
View File

0
ports/include/openssl/x509.h Executable file → Normal file
View File

0
ports/include/openssl/x509_vfy.h Executable file → Normal file
View File

0
ports/include/openssl/x509v3.h Executable file → Normal file
View File

0
ports/include/zconf.h Executable file → Normal file
View File

0
ports/include/zlib.h Executable file → Normal file
View File

Some files were not shown because too many files have changed in this diff Show More