mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-25 06:47:19 +00:00
[client] wayland: add option to enable cursor warp
This is enabled on default. Specify wayland:warpSupport=no to disable it, which may be useful on certain compositors that do not warp when the pointer is confined.
This commit is contained in:
parent
9b688909b0
commit
1ba1108099
@ -196,4 +196,10 @@ Command line arguments will override any options loaded from the config files.
|
|||||||
| opengl:preventBuffer | | yes | Prevent the driver from buffering frames |
|
| opengl:preventBuffer | | yes | Prevent the driver from buffering frames |
|
||||||
| opengl:amdPinnedMem | | yes | Use GL_AMD_pinned_memory if it is available |
|
| opengl:amdPinnedMem | | yes | Use GL_AMD_pinned_memory if it is available |
|
||||||
|------------------------------------------------------------------------------------|
|
|------------------------------------------------------------------------------------|
|
||||||
|
|
||||||
|
|-------------------------------------------------------------|
|
||||||
|
| Long | Short | Value | Description |
|
||||||
|
|-------------------------------------------------------------|
|
||||||
|
| wayland:warpSupport | | yes | Enable cursor warping |
|
||||||
|
|-------------------------------------------------------------|
|
||||||
```
|
```
|
||||||
|
@ -53,6 +53,10 @@ static struct SDLDSState sdl;
|
|||||||
/* forwards */
|
/* forwards */
|
||||||
static int sdlEventFilter(void * userdata, SDL_Event * event);
|
static int sdlEventFilter(void * userdata, SDL_Event * event);
|
||||||
|
|
||||||
|
static void sdlSetup(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
static bool sdlProbe(void)
|
static bool sdlProbe(void)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
@ -504,6 +508,7 @@ static bool sdlGetFullscreen(void)
|
|||||||
|
|
||||||
struct LG_DisplayServerOps LGDS_SDL =
|
struct LG_DisplayServerOps LGDS_SDL =
|
||||||
{
|
{
|
||||||
|
.setup = sdlSetup,
|
||||||
.probe = sdlProbe,
|
.probe = sdlProbe,
|
||||||
.earlyInit = sdlEarlyInit,
|
.earlyInit = sdlEarlyInit,
|
||||||
.init = sdlInit,
|
.init = sdlInit,
|
||||||
|
@ -42,6 +42,7 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
|||||||
#include "common/debug.h"
|
#include "common/debug.h"
|
||||||
#include "common/locking.h"
|
#include "common/locking.h"
|
||||||
#include "common/countedbuffer.h"
|
#include "common/countedbuffer.h"
|
||||||
|
#include "common/option.h"
|
||||||
|
|
||||||
#include "wayland-xdg-shell-client-protocol.h"
|
#include "wayland-xdg-shell-client-protocol.h"
|
||||||
#include "wayland-xdg-decoration-unstable-v1-client-protocol.h"
|
#include "wayland-xdg-decoration-unstable-v1-client-protocol.h"
|
||||||
@ -166,6 +167,18 @@ struct WCBState
|
|||||||
static struct WaylandDSState wm;
|
static struct WaylandDSState wm;
|
||||||
static struct WCBState wcb;
|
static struct WCBState wcb;
|
||||||
|
|
||||||
|
static struct Option waylandOptions[] =
|
||||||
|
{
|
||||||
|
{
|
||||||
|
.module = "wayland",
|
||||||
|
.name = "warpSupport",
|
||||||
|
.description = "Enable cursor warping",
|
||||||
|
.type = OPTION_TYPE_BOOL,
|
||||||
|
.value.x_bool = true,
|
||||||
|
},
|
||||||
|
{0}
|
||||||
|
};
|
||||||
|
|
||||||
static const uint32_t cursorBitmap[] = {
|
static const uint32_t cursorBitmap[] = {
|
||||||
0x000000, 0x000000, 0x000000, 0x000000,
|
0x000000, 0x000000, 0x000000, 0x000000,
|
||||||
0x000000, 0xFFFFFF, 0xFFFFFF, 0x000000,
|
0x000000, 0xFFFFFF, 0xFFFFFF, 0x000000,
|
||||||
@ -618,6 +631,11 @@ static bool waylandEarlyInit(void)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void waylandSetup(void)
|
||||||
|
{
|
||||||
|
option_register(waylandOptions);
|
||||||
|
}
|
||||||
|
|
||||||
static bool waylandProbe(void)
|
static bool waylandProbe(void)
|
||||||
{
|
{
|
||||||
return getenv("WAYLAND_DISPLAY") != NULL;
|
return getenv("WAYLAND_DISPLAY") != NULL;
|
||||||
@ -630,6 +648,8 @@ static bool waylandInit(const LG_DSInitParams params)
|
|||||||
{
|
{
|
||||||
memset(&wm, 0, sizeof(wm));
|
memset(&wm, 0, sizeof(wm));
|
||||||
|
|
||||||
|
wm.warpSupport = option_get_bool("wayland", "warpSupport");
|
||||||
|
|
||||||
wm.epollFd = epoll_create1(EPOLL_CLOEXEC);
|
wm.epollFd = epoll_create1(EPOLL_CLOEXEC);
|
||||||
if (wm.epollFd < 0)
|
if (wm.epollFd < 0)
|
||||||
{
|
{
|
||||||
@ -1514,6 +1534,7 @@ static void waylandCBRelease(void)
|
|||||||
|
|
||||||
struct LG_DisplayServerOps LGDS_Wayland =
|
struct LG_DisplayServerOps LGDS_Wayland =
|
||||||
{
|
{
|
||||||
|
.setup = waylandSetup,
|
||||||
.probe = waylandProbe,
|
.probe = waylandProbe,
|
||||||
.earlyInit = waylandEarlyInit,
|
.earlyInit = waylandEarlyInit,
|
||||||
.init = waylandInit,
|
.init = waylandInit,
|
||||||
|
@ -118,6 +118,10 @@ static void x11SetFullscreen(bool fs);
|
|||||||
static int x11EventThread(void * unused);
|
static int x11EventThread(void * unused);
|
||||||
static void x11GenericEvent(XGenericEventCookie *cookie);
|
static void x11GenericEvent(XGenericEventCookie *cookie);
|
||||||
|
|
||||||
|
static void x11Setup(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
static bool x11Probe(void)
|
static bool x11Probe(void)
|
||||||
{
|
{
|
||||||
return getenv("DISPLAY") != NULL;
|
return getenv("DISPLAY") != NULL;
|
||||||
@ -1490,6 +1494,7 @@ static void x11CBRequest(LG_ClipboardData type)
|
|||||||
|
|
||||||
struct LG_DisplayServerOps LGDS_X11 =
|
struct LG_DisplayServerOps LGDS_X11 =
|
||||||
{
|
{
|
||||||
|
.setup = x11Setup,
|
||||||
.probe = x11Probe,
|
.probe = x11Probe,
|
||||||
.earlyInit = x11EarlyInit,
|
.earlyInit = x11EarlyInit,
|
||||||
.init = x11Init,
|
.init = x11Init,
|
||||||
|
@ -84,6 +84,9 @@ typedef struct LG_DSGLContext
|
|||||||
|
|
||||||
struct LG_DisplayServerOps
|
struct LG_DisplayServerOps
|
||||||
{
|
{
|
||||||
|
/* called before options are parsed, useful for registering options */
|
||||||
|
void (*setup)(void);
|
||||||
|
|
||||||
/* return true if the selected ds is valid for the current platform */
|
/* return true if the selected ds is valid for the current platform */
|
||||||
bool (*probe)(void);
|
bool (*probe)(void);
|
||||||
|
|
||||||
@ -175,6 +178,7 @@ struct LG_DisplayServerOps
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define ASSERT_LG_DS_VALID(x) \
|
#define ASSERT_LG_DS_VALID(x) \
|
||||||
|
assert((x)->setup ); \
|
||||||
assert((x)->probe ); \
|
assert((x)->probe ); \
|
||||||
assert((x)->earlyInit ); \
|
assert((x)->earlyInit ); \
|
||||||
assert((x)->init ); \
|
assert((x)->init ); \
|
||||||
|
@ -1032,6 +1032,9 @@ int main(int argc, char * argv[])
|
|||||||
for(unsigned int i = 0; i < LG_RENDERER_COUNT; ++i)
|
for(unsigned int i = 0; i < LG_RENDERER_COUNT; ++i)
|
||||||
LG_Renderers[i]->setup();
|
LG_Renderers[i]->setup();
|
||||||
|
|
||||||
|
for(unsigned int i = 0; i < LG_DISPLAYSERVER_COUNT; ++i)
|
||||||
|
LG_DisplayServers[i]->setup();
|
||||||
|
|
||||||
if (!config_load(argc, argv))
|
if (!config_load(argc, argv))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user