Try to disable mouse accel in chromium. Use RAF timing for better precision to try to get smoother in-browser framerates.
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@6080 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
06a8133048
commit
7d7cb5f40c
5 changed files with 51 additions and 43 deletions
|
@ -2281,16 +2281,16 @@ endif
|
|||
web-rel:
|
||||
@PATH="$(EMSCRIPTENPATH)" $(MAKE) gl-rel FTE_TARGET=web CC="$(EMCC)"
|
||||
cp $(BASE_DIR)/web/fteshell.html $(RELEASE_DIR)/ftewebgl.html
|
||||
@gzip -f $(RELEASE_DIR)/ftewebgl.html
|
||||
@gzip -f $(RELEASE_DIR)/ftewebgl.js
|
||||
@gzip -f $(RELEASE_DIR)/ftewebgl.wasm
|
||||
@gzip -kf $(RELEASE_DIR)/ftewebgl.html
|
||||
@gzip -kf $(RELEASE_DIR)/ftewebgl.js
|
||||
@gzip -kf $(RELEASE_DIR)/ftewebgl.wasm
|
||||
|
||||
web-dbg:
|
||||
@PATH="$(EMSCRIPTENPATH)" $(MAKE) gl-dbg FTE_TARGET=web CC="$(EMCC)"
|
||||
cp $(BASE_DIR)/web/fteshell.html $(DEBUG_DIR)/ftewebgl.html
|
||||
@gzip -f $(DEBUG_DIR)/ftewebgl.html
|
||||
@gzip -f $(DEBUG_DIR)/ftewebgl.js
|
||||
@gzip -f $(DEBUG_DIR)/ftewebgl.wasm
|
||||
@gzip -kf $(DEBUG_DIR)/ftewebgl.html
|
||||
@gzip -kf $(DEBUG_DIR)/ftewebgl.js
|
||||
@gzip -kf $(DEBUG_DIR)/ftewebgl.wasm
|
||||
|
||||
#################################################
|
||||
#android
|
||||
|
|
|
@ -13,12 +13,7 @@ static struct dl_download *activedownloads;
|
|||
#if defined(FTE_TARGET_WEB)
|
||||
|
||||
|
||||
#define MYJS 1
|
||||
#if MYJS
|
||||
#include "web/ftejslib.h"
|
||||
#else
|
||||
#include <emscripten/emscripten.h>
|
||||
#endif
|
||||
|
||||
vfsfile_t *FSWEB_OpenTempHandle(int f);
|
||||
|
||||
|
@ -32,7 +27,6 @@ static void DL_OnLoad(void *c, int buf)
|
|||
//also fires from 404s.
|
||||
struct dl_download *dl = c;
|
||||
vfsfile_t *tempfile = FSWEB_OpenTempHandle(buf);
|
||||
|
||||
//make sure the file is 'open'.
|
||||
if (!dl->file)
|
||||
{
|
||||
|
@ -76,26 +70,15 @@ static void DL_OnLoad(void *c, int buf)
|
|||
VFS_CLOSE(tempfile);
|
||||
|
||||
dl->replycode = 200;
|
||||
#if !MYJS
|
||||
dl->completed += datasize;
|
||||
#endif
|
||||
}
|
||||
#if MYJS
|
||||
static void DL_OnError(void *c, int ecode)
|
||||
#else
|
||||
static void DL_OnError(void *c)
|
||||
#endif
|
||||
{
|
||||
struct dl_download *dl = c;
|
||||
//fires from cross-domain blocks, tls errors, etc.
|
||||
//anything which doesn't yield an http response (404 is NOT an error as far as js is aware).
|
||||
|
||||
#if MYJS
|
||||
dl->replycode = ecode;
|
||||
#else
|
||||
dl->replycode = 404; //we don't actually know. should we not do this?
|
||||
#endif
|
||||
Con_Printf(CON_WARNING"dl error: %s\n", dl->url);
|
||||
Con_Printf(CON_WARNING"dl error(%i): %s\n", ecode, dl->url);
|
||||
dl->status = DL_FAILED;
|
||||
}
|
||||
static void DL_OnProgress(void *c, int position, int totalsize)
|
||||
|
@ -112,9 +95,8 @@ qboolean DL_Decide(struct dl_download *dl)
|
|||
const char *url = dl->redir;
|
||||
if (!*url)
|
||||
url = dl->url;
|
||||
|
||||
if (dl->postdata)
|
||||
{
|
||||
{ //not supported...
|
||||
DL_Cancel(dl);
|
||||
return false; //safe to destroy it now
|
||||
}
|
||||
|
@ -129,19 +111,18 @@ qboolean DL_Decide(struct dl_download *dl)
|
|||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (dl->status == DL_PENDING)
|
||||
{
|
||||
dl->status = DL_ACTIVE;
|
||||
dl->abort = DL_Cancel;
|
||||
dl->ctx = dl;
|
||||
|
||||
#if MYJS
|
||||
emscriptenfte_async_wget_data2(url, dl, DL_OnLoad, DL_OnError, DL_OnProgress);
|
||||
#else
|
||||
//annoyingly, emscripten doesn't provide an onprogress callback, unlike firefox etc, so we can't actually tell how far its got.
|
||||
//we'd need to provide our own js library to fix this. it can be done, I'm just lazy.
|
||||
emscripten_async_wget_data(url, dl, DL_OnLoad, DL_OnError);
|
||||
#endif
|
||||
}
|
||||
else if (dl->status == DL_ACTIVE)
|
||||
{ //canceled?
|
||||
dl->status = DL_FAILED;
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -31,7 +31,7 @@ void emscriptenfte_rtc_candidate(int sock, const char *offer); //adds a remot
|
|||
//misc stuff for printf replacements
|
||||
void emscriptenfte_alert(const char *msg);
|
||||
void emscriptenfte_print(const char *msg);
|
||||
void emscriptenfte_setupmainloop(int(*mainloop)(void));
|
||||
void emscriptenfte_setupmainloop(int(*mainloop)(double timestamp));
|
||||
NORETURN void emscriptenfte_abortmainloop(const char *caller);
|
||||
|
||||
//we're trying to avoid including libpng+libjpeg+libogg in javascript due to it being redundant bloat.
|
||||
|
@ -42,6 +42,7 @@ void emscriptenfte_al_loadaudiofile(int al_buf, void *data, int datasize);
|
|||
//avoid all of emscripten's sdl emulation.
|
||||
//this resolves input etc issues.
|
||||
unsigned long emscriptenfte_ticks_ms(void);
|
||||
double emscriptenfte_uptime_ms(void);
|
||||
void emscriptenfte_updatepointerlock(int wantpointerlock, int hidecursor);
|
||||
void emscriptenfte_polljoyevents(void);
|
||||
void emscriptenfte_settitle(const char *text);
|
||||
|
|
|
@ -156,7 +156,7 @@ mergeInto(LibraryManager.library,
|
|||
if (FTEC.pointerwantlock != 0 && FTEC.pointerislocked == 0)
|
||||
{
|
||||
FTEC.pointerislocked = -1; //don't repeat the request on every click. firefox has a fit at that, so require the mouse to leave the element or something before we retry.
|
||||
Module['canvas'].requestPointerLock();
|
||||
Module['canvas'].requestPointerLock({unadjustedMovement: true});
|
||||
}
|
||||
|
||||
if (FTEC.usevr)
|
||||
|
@ -547,7 +547,7 @@ mergeInto(LibraryManager.library,
|
|||
|
||||
try //this try is needed to handle Host_EndGame properly.
|
||||
{
|
||||
dovsync = {{{makeDynCall('i')}}}(fnc);
|
||||
dovsync = {{{makeDynCall('if')}}}(fnc,timestamp);
|
||||
}
|
||||
catch(err)
|
||||
{
|
||||
|
@ -563,17 +563,21 @@ mergeInto(LibraryManager.library,
|
|||
Browser.requestAnimationFrame(Module["sched"]);
|
||||
}
|
||||
else
|
||||
setTimeout(Module["sched"], 0);
|
||||
setTimeout(Module["sched"], 0, performance.now());
|
||||
};
|
||||
Module["sched"] = step;
|
||||
//don't start it instantly, so we can distinguish between types of errors (emscripten sucks!).
|
||||
setTimeout(step, 1);
|
||||
setTimeout(step, 1, performance.now());
|
||||
},
|
||||
|
||||
emscriptenfte_ticks_ms : function()
|
||||
{
|
||||
{ //milliseconds...
|
||||
return Date.now();
|
||||
},
|
||||
emscriptenfte_uptime_ms : function()
|
||||
{ //milliseconds...
|
||||
return performance.now();
|
||||
},
|
||||
|
||||
emscriptenfte_buf_create__deps : ['emscriptenfte_handle_alloc'],
|
||||
emscriptenfte_buf_create : function()
|
||||
|
|
|
@ -57,6 +57,21 @@ void Sys_Printf (char *fmt, ...)
|
|||
va_end (argptr);
|
||||
}
|
||||
|
||||
#if 1
|
||||
//use Performance.now() instead of Date.now() - its likely to both provide higher precision and no NTP/etc issues.
|
||||
double Sys_DoubleTime (void)
|
||||
{
|
||||
double t = emscriptenfte_uptime_ms()/1000; //we need it as seconds...
|
||||
static double old = -99999999;
|
||||
if (t < old)
|
||||
t = old; //don't let t step backwards, ever. this shouldn't happen, but some CPUs don't keep their high-precision timers synced properly.
|
||||
return old=t;
|
||||
}
|
||||
unsigned int Sys_Milliseconds(void)
|
||||
{
|
||||
return Sys_DoubleTime() * (uint64_t)1000;
|
||||
}
|
||||
#else
|
||||
unsigned int Sys_Milliseconds(void)
|
||||
{
|
||||
static int first = true;
|
||||
|
@ -83,6 +98,7 @@ double Sys_DoubleTime (void)
|
|||
{
|
||||
return Sys_Milliseconds() / 1000.0;
|
||||
}
|
||||
#endif
|
||||
|
||||
//create a directory
|
||||
void Sys_mkdir (const char *path)
|
||||
|
@ -196,12 +212,18 @@ void Sys_CloseTerminal (void)
|
|||
{
|
||||
}
|
||||
|
||||
int Sys_MainLoop(void)
|
||||
int Sys_MainLoop(double newtime)
|
||||
{
|
||||
extern cvar_t vid_vsync;
|
||||
static float oldtime;
|
||||
float newtime, time;
|
||||
newtime = Sys_DoubleTime ();
|
||||
static double oldtime;
|
||||
double time;
|
||||
|
||||
if (newtime)
|
||||
newtime /= 1000; //use RAF's timing for slightly greater precision.
|
||||
else
|
||||
newtime = Sys_DoubleTime (); //otherwise fall back on internally consistent timing...
|
||||
if (newtime < oldtime)
|
||||
newtime = oldtime; //don't let ourselves go backwards...
|
||||
if (!oldtime)
|
||||
oldtime = newtime;
|
||||
time = newtime - oldtime;
|
||||
|
|
Loading…
Reference in a new issue