Tom Lister
5d3a76cbe6
internal/uidriver/js: Implement {Set,}Fullscreen for browsers ( #1623 )
...
Closes #1611
2021-04-27 23:58:32 +09:00
Hajime Hoshi
091e51ae4c
internal/uidriver/glfw: Avoid allocating a new slice
2021-04-25 00:57:06 +09:00
Hajime Hoshi
e2ceb7b3a6
internal/uidriver/glfw: Call fromGLFWPixels from the main thread
...
fromGLFWPixels can invoke driverScaleFactor, and then using the main
thread is safer.
2021-04-24 23:30:51 +09:00
Hajime Hoshi
b6364c46fe
internal/clock: Misspelling
2021-04-24 23:24:11 +09:00
Hajime Hoshi
2534b78755
internal/clock: Simplify the logic to calculate tick per frame
...
Updates #1444
Updates #1597
2021-04-24 23:06:27 +09:00
Hajime Hoshi
2e6ecc766d
internal/clock: Integrate 'now' implementations
...
The Go runtime already uses QueryPerformanceCounter at runtime.nanotime.
2021-04-24 22:32:47 +09:00
Hajime Hoshi
011a524ac7
internal/clock: Update comments
2021-04-24 22:10:00 +09:00
Hajime Hoshi
91f8347500
internal/uidriver/glfw: Avoid busy loop by sleeping
...
Updates #1580
2021-04-24 05:19:23 +09:00
Hajime Hoshi
3df31c0fce
internal/uidriver/glfw: Bug fix: Deadlock at FramebufferSize callback
...
glfw.PollEvents might invoke multiple FramebufferSize callbacks in
theory, this is very rare though. In this case, the sending an object
to the channel never ends.
This change fixes this deadlock by using 'select'.
Closes #1618
2021-04-24 02:22:51 +09:00
Hajime Hoshi
ac9a18931c
internal/uidriver/glfw: Fix comments
...
Updates #1618
2021-04-23 03:28:14 +09:00
Hajime Hoshi
d446aa39a9
internal/uidriver/glfw: Bug fix: Always wait for SetFramebuffer
...
In case when the callback is not called, let's use timeout.
Updates #1618
2021-04-23 03:02:12 +09:00
Hajime Hoshi
c4c331b0d5
Fix misspellings
2021-04-21 22:50:00 +09:00
Hajime Hoshi
4cb6cb9d6a
internal/uidriver/glfw: Misspelling
2021-04-21 22:29:54 +09:00
Hajime Hoshi
1013ca9c66
internal/uidriver/glfw: Bug fix: A window can never be 'maximized' on fullscreen
...
When the window is fullscreen, calling MaximizeWindow never returned.
Apparently the attribute glfw.Maximized can never be true on the
fullscreen mode.
This change fixes the issue by checking the fullscreen state.
2021-04-21 22:25:14 +09:00
corfe83
d24313e236
internal/devicescale: Fallback to simpler logic when trying to get DPI from monitor and failing ( #1600 )
...
Closes #1612
2021-04-21 11:43:23 +09:00
Hajime Hoshi
c7dd9a4107
internal/uidriver/glfw: Bug fix: Wait for Restore/Maximize/Iconify finishes explicitly
...
On Linux (and probably other UNIX OSes), glfwRestore, glfwMaximize,
and glfwIconify returns even though the window state has not changed.
Wait for its finish by a for loop and glfw.PollEvents.
Closes #1608
2021-04-21 00:52:06 +09:00
Hajime Hoshi
58572fb000
internal/uidriver/glfw: Bug fix: Unexpected small window size on Linux
...
At the initial phase, GLFW window's GetSize seems unreliable. Do not
call it on Linux. On the other hand, this is still necessary on macOS.
Updates #1606
Closes #1609
2021-04-20 23:38:34 +09:00
Hajime Hoshi
ec5b806241
Revert "internal/uidriver/glfw: Bug fix: Delay to enable SetSize callback"
...
This reverts commit fbe6961528
.
Reason: This doesn't fix the issue unfortunately
2021-04-20 23:01:02 +09:00
Hajime Hoshi
fbe6961528
internal/uidriver/glfw: Bug fix: Delay to enable SetSize callback
...
On Linux, the SetSize callback is invoked with an unexpected value
at the initial phase. Just delay it until the initialization
finishes.
2021-04-20 22:53:48 +09:00
Hajime Hoshi
47f569e473
internal/uidriver/glfw: Bug fix: setWindowSize could not accept a fullscreen size
2021-04-20 20:09:04 +09:00
Hajime Hoshi
ee8bfcd837
internal/uidriver/glfw: Bug fix: Disable the SetSize callback for most of GLFW window functions
...
Updates #1576
Updates #1585
Closes #1606
2021-04-20 18:32:39 +09:00
Hajime Hoshi
74018348c0
internal/uidriver/js: Update the error message
...
Updates #1604
2021-04-20 12:47:38 +09:00
Hajime Hoshi
191cc667e1
internal/uidriver/js: Add an error message when pointerlockerror happens
...
Updates #1604
2021-04-20 12:22:33 +09:00
Hajime Hoshi
18ce150495
internal/uidriver/glfw: Bug fix: getWindowSizeLimits should return -1 when the original value was -1
...
Updates #1602
2021-04-20 11:05:17 +09:00
Hajime Hoshi
dcaa1f9722
internal/uidriver/glfw: Bug fix: Need to reregister the callback after recreating the window
...
Updates #1588
Closes #1593
2021-04-19 01:28:59 +09:00
Hajime Hoshi
fd80583dd0
internal/uidriver/glfw: Bug fix: Defer SetIcon on the fullscreen mode
...
Closes #1587
2021-04-18 22:28:01 +09:00
Hajime Hoshi
7e61189c3d
internal/uidriver/glfw: Bug fix: Avoid registring C callbacks too often
...
Instead of registring/unregistering callbacks, use a boolean flag.
Closes #1588
2021-04-18 22:07:29 +09:00
Hajime Hoshi
c88ee0d0ad
internal/uidriver/glfw: Bug fix: Unregister SetSize callback when undecorate the window
...
Closes #1586
2021-04-18 21:24:56 +09:00
Hajime Hoshi
f5a4216434
internal/uidriver/glfw: Bug fix: Do not call setWindowSize on iconifying
...
The window size might be 0 after iconifying. An iconified window is
invisible to users so setting a window size doesn't make sense anyway.
Closes #1585
2021-04-18 21:06:04 +09:00
Hajime Hoshi
26432dfc9e
Revert "internal/uidriver/glfw: Refactoring: use glfw.Window when possible"
...
This reverts commit 475453d5d2
.
Reason: #1584 : A wrong active monitor was detected at the initial phase?
Closes #1584
2021-04-18 20:05:37 +09:00
Hajime Hoshi
78732d93f6
internal/uidriver/glfw: Bug fix: Crash on some operations on native fullscreen mode (macOS)
...
This change forbids some operations when the wiindow is natively
fullscreened on macOS in order to avoid crashes.
Closes #1578
2021-04-18 18:11:33 +09:00
Hajime Hoshi
fda1fd9a95
internal/uidriver/glfw: Bug fix: FramebufferSize callback was not called when the window size was not changed
...
Closes #1580
2021-04-18 15:22:51 +09:00
Hajime Hoshi
61c0908b13
internal/glfw: Refactoring
2021-04-18 03:33:01 +09:00
Hajime Hoshi
f09cf7fa47
internal/uidriver/glfw: Bug fix: Crash at Iconify
...
This is the same reason as Maximize.
Updates #1576
2021-04-18 01:03:13 +09:00
Hajime Hoshi
b5d4c834b8
internal/uidriver/glfw: Bug fix: More precise window size adjustment
...
Before this change, setWindowSize converts the size in device-
independent pixels once, invokes adjustWindowSizeBasedOnSizeLimitsInDP,
and then restore the values in device-dependent pixels. This might
introduce a slight error and then SetSize be unexpectedly invoked.
Such SetSize call with a slightly different size might not invoke
the FramebufferSize callback, and then this blocked forever when
maximizing the window.
This change fixes this by adjusting the size limits instead of the
window size so that the window size is not modified unexpectedly.
Closes #1577
2021-04-18 00:56:37 +09:00
Hajime Hoshi
d6ab27a5a2
internal/uidriver/glfw: Bug fix: Crash at Restore
...
This is the same reason as Maximize.
Updates #1576
2021-04-18 00:10:40 +09:00
Hajime Hoshi
37944d67c4
internal/uidriver/glfw: Update comments
...
Updates #1576
2021-04-18 00:05:48 +09:00
Hajime Hoshi
ab8477a21a
internal/uidriver/glfw: Bug fix: Crash on Maximize
...
At least on macOS, Maximize invokes the SetSize callback in the game's
Update. This change fixes this issue by unregisting the callback
temporarily like what #1505 did.
Closes #1576
2021-04-18 00:02:58 +09:00
Hajime Hoshi
f62576d88d
internal/glfw: Add tools.go to keep go.sum
2021-04-17 20:24:39 +09:00
Hajime Hoshi
855edcd2ff
internal/glfw: Update Dockerfile and regenerate DLLs
2021-04-17 20:11:10 +09:00
Hajime Hoshi
6df87a0383
internal/uidriver: Add comments
...
Updates #1575
2021-04-17 18:17:26 +09:00
Hajime Hoshi
1ca0ecc10f
internal/devicescale: Add comment about #1573
...
Updates #1573
2021-04-17 18:14:26 +09:00
Hajime Hoshi
deba352384
internal/uidriver/glfw: Prefer currentMonitor to get the monitor at deviceScaleFactor
2021-04-17 17:03:50 +09:00
Hajime Hoshi
e89f53774c
internal/uidriver/glfw, internal/devicescale: Add comments
2021-04-17 15:45:46 +09:00
Hajime Hoshi
585f173d1c
internal/uidriver/glfw: Bug fix: Treat pixel units correctly
...
Updates #1385
2021-04-17 04:43:33 +09:00
Hajime Hoshi
99b2b5c1ee
internal/glfw: Bug fix: compile error on Windows
...
Updates #1385
2021-04-17 04:24:19 +09:00
Hajime Hoshi
9b6ba5ed2c
ebiten: Add {Set,}WindowSizeLimits
...
Closes #1385
2021-04-17 03:58:06 +09:00
Hajime Hoshi
4cbbdbf518
internal/uidriver/js: Misspelling
2021-04-16 03:14:46 +09:00
Hajime Hoshi
20705d63a3
internal/uidriver/js: Refactoring
2021-04-16 03:13:12 +09:00
Hajime Hoshi
ead84553a0
internal/uidriver/js: Implement CursorModeCaptured
...
Closes #1572
2021-04-16 03:09:24 +09:00
Hajime Hoshi
3c1226a227
internal/uidriver/js: Bug fix: SetCursorMode didn't work
2021-04-16 01:21:48 +09:00
Hajime Hoshi
d00d0c8556
ebiten: Add CursorShape/SetCursorShape/CursorShapeType
...
This change adds APIs to enable to use system cursor shapes other
than the default shape (an arrow).
This change doesn't add these cursors since they seem a little
different on macOS from the other platforms.
* GLFW_HRESIZE_CURSOR
* GLFW_VRESIZE_CURSOR
Closes #995
2021-04-16 01:09:19 +09:00
Hajime Hoshi
71e899acf3
internal/uidriver/glfw: Refactoring
2021-04-15 02:01:20 +09:00
Hajime Hoshi
4398a5e227
ebiten: Change the key name convention to follow the Web standard
...
Closes #1394
2021-04-14 22:49:07 +09:00
Hajime Hoshi
7934c3b22b
internal/driver: Clean CursorMode values up
2021-04-11 03:29:14 +09:00
Hajime Hoshi
77b51e4707
internal/shader: Add more tests and improve the comment
...
Updates #1192
2021-04-09 01:25:37 +09:00
Hajime Hoshi
1cdc6ea72b
internal/shader: Bug fix: Treat multiple constant definitions in one statement correctly
...
Updates #1192
2021-04-09 01:18:38 +09:00
Hajime Hoshi
3b6fa891ac
internal/shader: Bug fix: Error on duplicated const/var names
...
Updates #1192
2021-04-09 00:12:17 +09:00
Hajime Hoshi
59a80cf953
internal/shader: Implement basic constants
...
Updates #1192
2021-04-09 00:00:49 +09:00
Hajime Hoshi
0246a6407e
ebiten: Guarantee that CursorPosition returns (0, 0) in the very initial state on desktops
...
This change also guarantees that CursorPosition always returns (0, 0)
on mobiles.
2021-04-07 03:08:09 +09:00
Hajime Hoshi
ad3c76b6d9
internal/uidriver/js: Bug fix: CursorPosition crashed before the main loop on browsers
...
Closes #1559
2021-04-07 03:07:09 +09:00
Hajime Hoshi
6fe6543b4b
internal/graphicsdriver/opengl: Bug fix: getBufferSubData was available only with WebGL2
2021-04-06 00:11:51 +09:00
Hajime Hoshi
bd8367588e
internal/graphicsdriver/opengl: Prepare function objects by bind
...
Passing a Go string to the JS world is expensive. This change reduces
this cost by preparing function objects by bind.
Closes #1438
2021-04-05 23:53:21 +09:00
Hajime Hoshi
475453d5d2
internal/uidriver/glfw: Refactoring: use glfw.Window when possible
...
Updates #1122
2021-04-03 17:29:38 +09:00
Hajime Hoshi
9dd00114c5
internal/devicescale: Remove a Unicode space
2021-03-28 23:39:06 +09:00
Hajime Hoshi
19702619ee
ebiten: Bug fix: AdjustPosition could return Inf
...
Before the initialization finishes, AdjustPosition could return Inf
values and in this case AdjustPosition's returning values don't make
sense. Let's return NaN in this case.
Closes #1545
2021-03-27 18:46:14 +09:00
Hajime Hoshi
d415e9c771
internal/uidriver/glfw: Refactoring
2021-03-27 18:35:31 +09:00
Hajime Hoshi
24973da123
internal/jsutil: Restrict the build environment
2021-03-22 03:50:05 +09:00
Hajime Hoshi
402e1a251a
internal/uidriver/js: Bug fix: CursorMode didn't work on go2cpp
2021-03-21 16:40:35 +09:00
Hajime Hoshi
41f060b1d2
ebiten: Use the common vertices backend at DrawTriangles
2021-03-20 20:25:42 +09:00
Hajime Hoshi
15a0c53918
internal/graphics: Refactoring
2021-03-20 20:18:02 +09:00
Hajime Hoshi
26b9fa20c1
internal/graphics: Bug fix: Race condition at QuadVertices
...
QuadVertices or verticesBackend.slice reused its backend slice.
This caused a race condition. QuadVertices can be accessed from
multiple goroutines, and resetting the head and copying the data
at internal/graphicscommand might not be synced.
This change fixes this issue by basically reverting
9cb631e30f
.
Closes #1546
2021-03-20 16:32:13 +09:00
Humphrey Shotton
21cfe362c8
internal/graphicscommand: fix missing graphicscommand log ( #1543 )
...
Closes #1544
2021-03-15 02:14:03 +09:00
Hajime Hoshi
3e7217cb86
internal/atlas: Add comments to moveTo
2021-03-12 00:26:38 +09:00
Hajime Hoshi
ec677a258f
Rename internal/shareable -> internal/atlas
...
Also the terms are renamed:
* shared -> on an atlas
* not shared -> isolated
Closes #1529
2021-03-12 00:22:08 +09:00
Hajime Hoshi
df3e74533b
internal/shareable: Use an exponential way to determine the image sharing
...
When an image was used in both ways source and destination, Ebiten
worked ineffectively since Ebiten tried to make the image on a texture
atlas after the image was used as a source for a while, which tried to
create a new internal texture every time.
This fix mitigates this issue by using an exponential way to determine
whether the image should be on a texture atlas again or not, so that
an image often used as a destination will require much longer time to
become on a texture atlas again.
Updates #1464
2021-03-10 02:30:33 +09:00
Hajime Hoshi
052947d7b7
internal/glfw: Update GLFW to 3.3.3 for Windows
...
Closes #1523
2021-03-09 02:19:34 +09:00
Hajime Hoshi
990fb14f17
internal/uidriver/glfw: Separate createWindow and registring the callback
...
createWindow created a window and also registered the SetSize callback.
This was problematic in setWindowSize, since the callback was invoked
in setWindowSize unexpectedly.
This change separates createWindow and registring the callback so that
the created window in setWindowSize doesn't invoke the callback until
setWindowSize finishes.
Closes #1505
2021-03-06 17:48:28 +09:00
Hajime Hoshi
fda421c5fe
internal/uidriver/glfw: Bug fix: SEGV at setWindowSize
...
u.window can be a different value before and after the function
setWindowSize.
Closes #1522
2021-03-03 23:04:35 +09:00
Hajime Hoshi
c8b98f13fb
internal/graphics: Always use the vertex backend to reduce GC
...
Closes #1521
2021-03-03 22:23:15 +09:00
Hajime Hoshi
cb3fc3c51c
Revert "shareable: Limit the texture size to 8192"
...
This reverts commit c92ccfff79
.
Reason: This should no longer be needed after #1517 is fixed.
2021-02-27 13:55:13 +09:00
Hajime Hoshi
77b198211c
internal/graphicsdriver/metal: Add a comment
2021-02-27 04:04:25 +09:00
Hajime Hoshi
53352cf2b3
internal/graphicsdriver/metal: Use the smallest temporary texture
...
Updates #1517
2021-02-27 03:45:19 +09:00
Hajime Hoshi
673627c4d4
internal/graphicsdriver/metal: Optimization
2021-02-27 02:30:20 +09:00
Hajime Hoshi
6b3c51921c
internal/driver: Remove Image.Sync
...
Syncing is no longer needed for Metal, and additionally, OpenGL's sync
implementation was mock.
Updates #1508
2021-02-26 23:16:28 +09:00
Hajime Hoshi
9341d21614
internal/shareable: Call DrawTriangles instead of ReplacePixels at makeShared ( #1513 )
...
When context losts never happen, reading pixels and call replace-pixels command are not needed.
Closes #1508
2021-02-26 12:56:22 +09:00
Hajime Hoshi
d913e66cd9
Revert "uidriver/glfw: Bug fix: Do not iconify the fullscreen window automatically"
...
This reverts commit 61bf10e73e
.
Reason: This prevents the app from iconifying when toggling apps.
Updates #1405
Closes #1504
2021-02-23 20:13:21 +09:00
Hajime Hoshi
18d526c2d3
internal/uidriver/glfw: Bug fix: Crash when returning from fullscreen
...
ForceUpdate was called unexpectedly inside Update. This caused the
race condition.
Closes #1505
2021-02-23 16:52:12 +09:00
Hajime Hoshi
969964cb46
internal/graphicsdriver/opengl/gl: Bug fix: Remove unsafe reflect usage
...
Closes #1495
2021-02-14 21:27:30 +09:00
Hajime Hoshi
1517f80430
internal/uidriver/glfw: Refactoring
2021-02-11 04:02:18 +09:00
Hajime Hoshi
ec912e5cad
internal/uidriver/glfw: Remove the dirty hack creating a temporary UI instance
...
Updates #1122
2021-02-11 03:45:39 +09:00
Hajime Hoshi
fea802b39d
internal/uidriver: Replace mutex usages with atomic
...
Updates #1073
2021-02-11 02:38:15 +09:00
Hajime Hoshi
ec843ce92c
internal/web: Consider the case when navigator exists but userAgent doesn't
...
This can happen on go2cpp.
2021-02-09 23:59:39 +09:00
Hajime Hoshi
9400efa9a5
internal/uidriver/glfw: Update the screen on resizing
...
Closes #1204
2021-02-07 23:03:56 +09:00
Hajime Hoshi
5f81065d78
internal/shader: Make function duplications error
...
Closes #1430
2021-02-07 22:24:23 +09:00
Hajime Hoshi
d999b4dc8e
internal/uidriver/glfw: Bug fix: Enable to specify ebiten.Image to SetWindowIcon
...
Closes #1468
2021-02-07 21:18:30 +09:00
Hajime Hoshi
acb8bcae38
cmd/ebitenmobile, internal/devicescale: Experimental fix of the display density
...
Closes #1481
2021-02-07 14:07:06 +09:00
Hajime Hoshi
44bb004cb7
internal/restorable: Avoid allocating new slices for drawTrianglesHistory
2021-01-30 19:13:03 +09:00
Hajime Hoshi
87c8625692
Remove internal/colormcache
2021-01-28 03:28:29 +09:00
Hajime Hoshi
256adfff9d
internal/affine: Add tests
...
Updates #1474
2021-01-28 02:24:24 +09:00