Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libspnav for openSUSE:Factory checked in at 2025-04-30 19:05:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libspnav (Old) and /work/SRC/openSUSE:Factory/.libspnav.new.30101 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libspnav" Wed Apr 30 19:05:59 2025 rev:13 rq:1273703 version:1.2 Changes: -------- --- /work/SRC/openSUSE:Factory/libspnav/libspnav.changes 2022-12-26 23:28:14.968998616 +0100 +++ /work/SRC/openSUSE:Factory/.libspnav.new.30101/libspnav.changes 2025-04-30 19:06:06.694651715 +0200 @@ -1,0 +2,13 @@ +Wed Apr 30 14:50:36 UTC 2025 - Christophe Marin <christo...@krop.fr> + +- Update to 1.2 + * add missing requests and API entry points for cfg set/get + repeat interval + * fixed spnav_sensitivity (proto1) sending garbage + * fixed omission of linking with libm, while using math + functions in util + * fixed graphical glitches in the fly example on non-nvidia GPUs + * compatibility improvements for IRIX and Solaris + * fixed various minor build issues + +------------------------------------------------------------------- Old: ---- libspnav-1.1.tar.gz New: ---- libspnav-1.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libspnav.spec ++++++ --- /var/tmp/diff_new_pack.U9FEUo/_old 2025-04-30 19:06:07.142670397 +0200 +++ /var/tmp/diff_new_pack.U9FEUo/_new 2025-04-30 19:06:07.142670397 +0200 @@ -18,11 +18,10 @@ Name: libspnav -Version: 1.1 +Version: 1.2 Release: 0 Summary: Library for accessing 3D connexion devices License: BSD-3-Clause -Group: Hardware/Other URL: https://sourceforge.net/projects/spacenav/ Source0: https://github.com/FreeSpacenav/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.gz BuildRequires: pkgconfig @@ -44,7 +43,6 @@ %package -n libspnav0 Summary: Library for accessing 3D connexion devices -Group: Hardware/Other Suggests: spacenavd %description -n libspnav0 @@ -63,7 +61,6 @@ %package devel Summary: Include files for libspnav -Group: Development/Libraries/C and C++ Requires: libspnav0 = %{version}-%{release} %description devel @@ -100,8 +97,7 @@ mkdir -p %{buildroot}%{_libdir}/pkgconfig mv %{buildroot}%{_datadir}/pkgconfig/spnav.pc %{buildroot}%{_libdir}/pkgconfig/ -%post -n libspnav0 -p /sbin/ldconfig -%postun -n libspnav0 -p /sbin/ldconfig +%ldconfig_scriptlets -n libspnav0 %files -n libspnav0 %license LICENSE ++++++ libspnav-1.1.tar.gz -> libspnav-1.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/.github/workflows/build_freebsd.yml new/libspnav-1.2/.github/workflows/build_freebsd.yml --- old/libspnav-1.1/.github/workflows/build_freebsd.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/libspnav-1.2/.github/workflows/build_freebsd.yml 2025-03-30 04:42:13.000000000 +0200 @@ -0,0 +1,38 @@ +name: FreeBSD build + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + build: + + runs-on: ubuntu-22.04 + + steps: + - uses: actions/checkout@v4 + + - name: FreeBSD build + uses: vmactions/freebsd-vm@v1 + with: + prepare: | + pkg install -y gmake libX11 mesa-libs libglvnd libGLU + + run: | + ./configure + gmake + gmake DESTDIR=libspnav-freebsd install + gmake examples + mkdir libspnav-freebsd/examples + cp examples/simple/simple_af_unix libspnav-freebsd/examples + cp examples/simple/simple_x11 libspnav-freebsd/examples + cp examples/cube/cube libspnav-freebsd/examples + cp examples/fly/fly libspnav-freebsd/examples + + - uses: actions/upload-artifact@v4 + with: + name: libspnav-freebsd + path: libspnav-freebsd + +# vi:ts=2 sts=2 sw=2 expandtab: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/.github/workflows/build_gnulinux.yml new/libspnav-1.2/.github/workflows/build_gnulinux.yml --- old/libspnav-1.1/.github/workflows/build_gnulinux.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/libspnav-1.2/.github/workflows/build_gnulinux.yml 2025-03-30 04:42:13.000000000 +0200 @@ -0,0 +1,80 @@ +name: GNU/Linux build + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: install dependencies + run: | + sudo apt-get update + sudo apt-get install libx11-dev libgl1-mesa-dev libglu1-mesa-dev + + - name: configure + run: ./configure + + - name: build + run: make + + - name: build examples + run: make examples + + - name: stage install + run: | + DESTDIR=libspnav-gnulinux make install + mkdir libspnav-gnulinux/examples + cp examples/simple/simple_af_unix libspnav-gnulinux/examples + cp examples/simple/simple_x11 libspnav-gnulinux/examples + cp examples/cube/cube libspnav-gnulinux/examples + cp examples/fly/fly libspnav-gnulinux/examples + + - uses: actions/upload-artifact@v4 + with: + name: libspnav-gnulinux + path: libspnav-gnulinux + + build-nox11: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: install dependencies + run: | + sudo apt-get update + sudo apt-get install libx11-dev libgl1-mesa-dev libglu1-mesa-dev + + - name: configure + run: ./configure --disable-x11 + + - name: build + run: make + + - name: build examples + run: | + make -C examples/simple simple_af_unix + make -C examples/fly + + - name: stage install + run: | + DESTDIR=libspnav-gnulinux-nox11 make install + mkdir libspnav-gnulinux-nox11/examples + cp examples/simple/simple_af_unix libspnav-gnulinux-nox11/examples + cp examples/fly/fly libspnav-gnulinux-nox11/examples + + - uses: actions/upload-artifact@v4 + with: + name: libspnav-gnulinux-nox11 + path: libspnav-gnulinux-nox11 + + +# vi:ts=2 sts=2 sw=2 expandtab: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/.github/workflows/build_macosx.yml new/libspnav-1.2/.github/workflows/build_macosx.yml --- old/libspnav-1.1/.github/workflows/build_macosx.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/libspnav-1.2/.github/workflows/build_macosx.yml 2025-03-30 04:42:13.000000000 +0200 @@ -0,0 +1,77 @@ +name: MacOS X build + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + build: + + runs-on: macos-latest + + steps: + - uses: actions/checkout@v4 + + - name: install dependencies + run: | + brew install libx11 mesa mesa-glu + + - name: configure + run: ./configure + + - name: build + run: make + + - name: build examples + run: make examples + + - name: stage install + run: | + DESTDIR=libspnav-macosx make install + mkdir libspnav-macosx/examples + cp examples/simple/simple_af_unix libspnav-macosx/examples + cp examples/simple/simple_x11 libspnav-macosx/examples + cp examples/cube/cube libspnav-macosx/examples + cp examples/fly/fly libspnav-macosx/examples + + - uses: actions/upload-artifact@v4 + with: + name: libspnav-macosx + path: libspnav-macosx + + build-nox11: + + runs-on: macos-latest + + steps: + - uses: actions/checkout@v4 + + - name: install dependencies + run: | + brew install libx11 mesa mesa-glu + + - name: configure + run: ./configure --disable-x11 + + - name: build + run: make + + - name: build examples + run: | + make -C examples/simple simple_af_unix + make -C examples/fly + + - name: stage install + run: | + DESTDIR=libspnav-macosx-nox11 make install + mkdir libspnav-macosx-nox11/examples + cp examples/simple/simple_af_unix libspnav-macosx-nox11/examples + cp examples/fly/fly libspnav-macosx-nox11/examples + + - uses: actions/upload-artifact@v4 + with: + name: libspnav-macosx-nox11 + path: libspnav-macosx-nox11 + +# vi:ts=2 sts=2 sw=2 expandtab: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/Makefile.in new/libspnav-1.2/Makefile.in --- old/libspnav-1.1/Makefile.in 2022-04-26 16:19:43.000000000 +0200 +++ new/libspnav-1.2/Makefile.in 2025-03-30 04:42:13.000000000 +0200 @@ -5,20 +5,20 @@ name = spnav lib_a = lib$(name).a -incpaths = -I. -I/usr/local/include -I/usr/X11R6/include -libpaths = -L/usr/local/lib -L/usr/X11R6/lib +incpaths = -I. -I/usr/local/include -I/usr/X11R6/include -I/opt/homebrew/include +libpaths = -L/usr/local/lib -L/usr/X11R6/lib -L/opt/homebrew/lib CC ?= gcc AR ?= ar CFLAGS = $(opt) $(dbg) -std=c89 $(pic) -pedantic -Wall -fno-strict-aliasing $(incpaths) $(user_cflags) -LDFLAGS = $(libpaths) $(user_ldflags) $(xlib) +LDFLAGS = $(libpaths) $(user_ldflags) $(xlib) -lm ifeq ($(shell uname -s), Darwin) lib_so = libspnav.dylib shared = -dynamiclib else so_major = 0 - so_minor = 3 + so_minor = 4 devlink = lib$(name).so soname = $(devlink).$(so_major) lib_so = $(soname).$(so_minor) @@ -43,7 +43,7 @@ clean: rm -f $(obj) -.PHONY: cleandist +.PHONY: distclean distclean: rm -f $(obj) $(lib_a) $(lib_so) Makefile @@ -72,3 +72,8 @@ for i in $(hdr); do rm -f $(DESTDIR)$(PREFIX)/include/$$i; done rm -f $(DESTDIR)$(PREFIX)/share/pkgconfig/spnav.pc +.PHONY: examples +examples: + $(MAKE) -C examples/simple + $(MAKE) -C examples/cube + $(MAKE) -C examples/fly diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/README.md new/libspnav-1.2/README.md --- old/libspnav-1.1/README.md 2022-04-26 16:19:43.000000000 +0200 +++ new/libspnav-1.2/README.md 2025-03-30 04:42:13.000000000 +0200 @@ -1,6 +1,10 @@ libspnav ======== + + + + About ----- Libspnav is a C library for receiving input from 6 degrees-of-freedom (6dof) @@ -57,12 +61,21 @@ installing libspnav system-wide, which is the common case (default prefix is: `/usr/local`). -Running `./configure --help` prints available build options. +Run `./configure --help` for a list of available build options. + +By default libspnav will be compiled with X11 support (and will require Xlib), +which is necessary for compatibility with the proprietary driver. If you don't +need that, and would rather drop the Xlib dependency, you can pass +`--disable-x11` to `configure`, to build without X11 support. + +To build the example programs, change into their directory and run `make`. The +"cube" and "fly" examples use OpenGL and Xlib, so make sure to have `libGL` and +`libX11` installed, before attempting to build them. License ------- -Copyright (C) 2007-2022 John Tsiombikas <nucl...@member.fsf.org> +Copyright (C) 2007-2025 John Tsiombikas <nucl...@member.fsf.org> libspnav is free software. Feel free to use, modify, and/or redistibute it under the terms of the 3-clause BSD license. See LICENSE for details. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/configure new/libspnav-1.2/configure --- old/libspnav-1.1/configure 2022-04-26 16:19:43.000000000 +0200 +++ new/libspnav-1.2/configure 2025-03-30 05:02:34.000000000 +0200 @@ -6,7 +6,7 @@ OPT=yes DBG=yes X11=yes -VER=`git describe --tags 2>/dev/null` +VER=1.2 if [ -z "$VER" ]; then VER=`git rev-parse --short HEAD 2>/dev/null` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/examples/cube/Makefile new/libspnav-1.2/examples/cube/Makefile --- old/libspnav-1.1/examples/cube/Makefile 2022-04-26 16:19:43.000000000 +0200 +++ new/libspnav-1.2/examples/cube/Makefile 2025-03-30 04:42:13.000000000 +0200 @@ -1,9 +1,12 @@ obj = cube.o bin = cube -CC = gcc -CFLAGS = -pedantic -Wall -g -I../.. -I../../src -I/usr/local/include -LDFLAGS = -L../.. -L/usr/local/lib -lX11 -lGL -lGLU -lspnav -lm +incdir = -I../.. -I../../src -I/usr/local/include -I/usr/X11R6/include \ + -I/opt/homebrew/include +libdir = -L../.. -L/usr/local/lib -L/usr/X11R6/lib -L/opt/homebrew/lib + +CFLAGS = -pedantic -Wall -g $(incdir) +LDFLAGS = $(libdir) -lGL -lGLU -lspnav -lX11 -lm $(bin): $(obj) $(CC) -o $@ $(obj) $(LDFLAGS) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/examples/cube/cube.c new/libspnav-1.2/examples/cube/cube.c --- old/libspnav-1.1/examples/cube/cube.c 2022-04-26 16:19:43.000000000 +0200 +++ new/libspnav-1.2/examples/cube/cube.c 2025-03-30 04:42:13.000000000 +0200 @@ -94,10 +94,10 @@ int attr[] = { GLX_RGBA, GLX_DOUBLEBUFFER, - GLX_RED_SIZE, 8, - GLX_GREEN_SIZE, 8, - GLX_BLUE_SIZE, 8, - GLX_DEPTH_SIZE, 24, + GLX_RED_SIZE, 1, + GLX_GREEN_SIZE, 1, + GLX_BLUE_SIZE, 1, + GLX_DEPTH_SIZE, 16, None }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/examples/fly/Makefile new/libspnav-1.2/examples/fly/Makefile --- old/libspnav-1.1/examples/fly/Makefile 2022-04-26 16:19:43.000000000 +0200 +++ new/libspnav-1.2/examples/fly/Makefile 2025-03-30 04:42:13.000000000 +0200 @@ -1,9 +1,12 @@ obj = fly.o xwin.o bin = fly -CC ?= gcc -CFLAGS = -pedantic -Wall -g -I../.. -I../../src -I/usr/local/include -LDFLAGS = -L../.. -L/usr/local/lib -lX11 -lGL -lGLU -lspnav -lm +incdir = -I../.. -I../../src -I/usr/local/include -I/usr/X11R6/include \ + -I/opt/homebrew/include +libdir = -L../.. -L/usr/local/lib -L/usr/X11R6/lib -L/opt/homebrew/lib + +CFLAGS = -pedantic -Wall -O3 $(incdir) +LDFLAGS = $(libdir) -lGL -lGLU -lspnav -lX11 -lm $(bin): $(obj) $(CC) -o $@ $(obj) $(LDFLAGS) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/examples/fly/fly.c new/libspnav-1.2/examples/fly/fly.c --- old/libspnav-1.1/examples/fly/fly.c 2022-04-26 16:19:43.000000000 +0200 +++ new/libspnav-1.2/examples/fly/fly.c 2025-03-30 04:42:13.000000000 +0200 @@ -7,6 +7,7 @@ #include <stdlib.h> #include <math.h> #include <errno.h> +#include <unistd.h> #include <sys/select.h> #include <X11/Xlib.h> #include <GL/gl.h> @@ -17,6 +18,7 @@ #define GRID_REP 60 #define GRID_SZ 200 +#define GRID_RES 7 void gen_textures(void); void gen_scene(void); @@ -27,14 +29,17 @@ void draw_box(float xsz, float ysz, float zsz); /* XXX: posrot contains a position vector and an orientation quaternion, and - * can be used with the spnav_posrot_moveobj function to accumulate input - * motions, and then with spnav_matrix_obj to create a transformation matrix. + * can be used with the spnav_posrot_moveview function to accumulate input + * motions, and then with spnav_matrix_view to create a view matrix. * See util.c in the libspnav source code for implementation details. */ struct spnav_posrot posrot; unsigned int grid_tex, box_tex; -unsigned int scene; +unsigned int scene, skydome; + +float apex_color[] = {0.07, 0.1, 0.4, 1.0f}; +float horiz_color[] = {0.5, 0.2, 0.05, 1.0f}; int main(void) @@ -62,8 +67,9 @@ glEnable(GL_CULL_FACE); glFogi(GL_FOG_MODE, GL_LINEAR); - glFogf(GL_FOG_START, GRID_SZ / 4); + glFogf(GL_FOG_START, GRID_SZ / 4.0f); glFogf(GL_FOG_END, GRID_SZ); + glFogfv(GL_FOG_COLOR, horiz_color); gen_textures(); gen_scene(); @@ -177,30 +183,35 @@ void gen_scene(void) { - int i, j; - float x, y, h; + int i, j, k; + float x, y, h, u, v, du; srand(0); scene = glGenLists(1); glNewList(scene, GL_COMPILE); - glEnable(GL_TEXTURE_2D); - glEnable(GL_FOG); - /* grid */ glBindTexture(GL_TEXTURE_2D, grid_tex); - glBegin(GL_QUADS); glColor3f(1, 1, 1); - glTexCoord2f(0, 0); - glVertex3f(-GRID_SZ, 0, GRID_SZ); - glTexCoord2f(GRID_REP, 0); - glVertex3f(GRID_SZ, 0, GRID_SZ); - glTexCoord2f(GRID_REP, GRID_REP); - glVertex3f(GRID_SZ, 0, -GRID_SZ); - glTexCoord2f(0, GRID_REP); - glVertex3f(-GRID_SZ, 0, -GRID_SZ); + + du = 1.0f / (float)GRID_RES; + for(i=0; i<GRID_RES; i++) { + u = (float)i * du; + for(j=0; j<GRID_RES; j++) { + v = (float)j * du; + for(k=0; k<4; k++) { + int gc = k ^ (k >> 1); + float tu = (u + (gc & 1) * du) * GRID_REP; + float tv = (v + (gc >> 1) * du) * GRID_REP; + x = ((u - 0.5f) + (gc & 1) * du) * GRID_SZ * 2.0f; + y = ((v - 0.5f) + (gc >> 1) * du) * GRID_SZ * 2.0f; + glTexCoord2f(tu, tv); + glVertex3f(x, 0, -y); + } + } + } glEnd(); /* buildings */ @@ -224,21 +235,31 @@ glPopMatrix(); } } + glEndList(); - glDisable(GL_TEXTURE_2D); - glDisable(GL_FOG); + skydome = glGenLists(1); + glNewList(skydome, GL_COMPILE); /* skydome */ glBegin(GL_TRIANGLE_FAN); - glColor3f(0.07, 0.1, 0.4); - glVertex3f(0, GRID_SZ/5, 0); - glColor3f(0.5, 0.2, 0.05); + glColor3fv(apex_color); + glVertex3f(0, GRID_SZ / 5.0f, 0); + glColor3fv(horiz_color); glVertex3f(-GRID_SZ, 0, -GRID_SZ); glVertex3f(GRID_SZ, 0, -GRID_SZ); glVertex3f(GRID_SZ, 0, GRID_SZ); glVertex3f(-GRID_SZ, 0, GRID_SZ); glVertex3f(-GRID_SZ, 0, -GRID_SZ); glEnd(); + glBegin(GL_TRIANGLE_FAN); + glColor3fv(horiz_color); + glVertex3f(0, -GRID_SZ / 5.0f, 0); + glVertex3f(-GRID_SZ, 0, -GRID_SZ); + glVertex3f(-GRID_SZ, 0, GRID_SZ); + glVertex3f(GRID_SZ, 0, GRID_SZ); + glVertex3f(GRID_SZ, 0, -GRID_SZ); + glVertex3f(-GRID_SZ, 0, -GRID_SZ); + glEnd(); glEndList(); } @@ -257,7 +278,22 @@ glMultMatrixf(xform); /* concatenate our computed view matrix */ glTranslatef(0, -5, 0); /* move the default view a bit higher above the ground */ + glPushMatrix(); + xform[12] = xform[13] = xform[14] = 0.0f; + glLoadMatrixf(xform); + glTranslatef(0, -5, 0); + + glDisable(GL_DEPTH_TEST); + glCallList(skydome); + glEnable(GL_DEPTH_TEST); + + glPopMatrix(); + + glEnable(GL_TEXTURE_2D); + glEnable(GL_FOG); glCallList(scene); + glDisable(GL_TEXTURE_2D); + glDisable(GL_FOG); glXSwapBuffers(dpy, win); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/examples/simple/Makefile new/libspnav-1.2/examples/simple/Makefile --- old/libspnav-1.1/examples/simple/Makefile 2022-04-26 16:19:43.000000000 +0200 +++ new/libspnav-1.2/examples/simple/Makefile 2025-03-30 04:42:13.000000000 +0200 @@ -1,6 +1,9 @@ -CC = gcc -CFLAGS = -pedantic -Wall -g -I../.. -I../../src -I/usr/local/include -LDFLAGS = -L../.. -L/usr/local/lib -lspnav -lX11 +incdir = -I../.. -I../../src -I/usr/local/include -I/usr/X11R6/include \ + -I/opt/homebrew/include +libdir = -L../.. -L/usr/local/lib -L/usr/X11R6/lib -L/opt/homebrew/lib + +CFLAGS = -pedantic -Wall -g $(incdir) +LDFLAGS = $(libdir) -lspnav -lX11 -lm .PHONY: all all: simple_x11 simple_af_unix diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/src/proto.h new/libspnav-1.2/src/proto.h --- old/libspnav-1.1/src/proto.h 2022-04-26 16:19:43.000000000 +0200 +++ new/libspnav-1.2/src/proto.h 2025-03-30 04:42:13.000000000 +0200 @@ -1,7 +1,11 @@ #ifndef PROTO_H_ #define PROTO_H_ +#if defined(__sgi) || defined(__sun) +#include <inttypes.h> +#else #include <stdint.h> +#endif /* maximum supported protocol version */ #define MAX_PROTO_VER 1 @@ -83,6 +87,8 @@ REQ_GCFG_GRAB, /* get device grabbing: R[0] state R[6] status */ REQ_SCFG_SERDEV, /* set serial device path: Q[0-5] next 24 bytes Q[6] remaining length - R[6] status */ REQ_GCFG_SERDEV, /* get serial device path: R[0-5] next 24 bytes R[6] remaining length or -1 for failure */ + REQ_SCFG_REPEAT, /* set repeat interval: Q[0] interval (msec) - R[6] status */ + REQ_GCFG_REPEAT, /* get repeat interval: R[0] interval (msec) R[6] status */ /* TODO ... more */ REQ_CFG_SAVE = 0x3ffe, /* save config file: R[6] status */ REQ_CFG_RESTORE, /* load config from file: R[6] status */ @@ -170,7 +176,9 @@ "SCFG_GRAB", "GCFG_GRAB", "SCFG_SERDEV", - "GCFG_SERDEV" + "GCFG_SERDEV", + "SCFG_REPEAT", + "GCFG_REPEAT" }; const int spnav_reqnames_1000_size = sizeof spnav_reqnames_1000 / sizeof *spnav_reqnames_1000; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/src/spnav.c new/libspnav-1.2/src/spnav.c --- old/libspnav-1.1/src/spnav.c 2022-04-26 16:19:43.000000000 +0200 +++ new/libspnav-1.2/src/spnav.c 2025-03-30 04:42:13.000000000 +0200 @@ -1,6 +1,6 @@ /* This file is part of libspnav, part of the spacenav project (spacenav.sf.net) -Copyright (C) 2007-2022 John Tsiombikas <nucl...@member.fsf.org> +Copyright (C) 2007-2023 John Tsiombikas <nucl...@member.fsf.org> Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -298,6 +298,7 @@ int spnav_sensitivity(double sens) { + float fval; struct reqresp rr; #ifdef SPNAV_USE_X11 @@ -306,10 +307,11 @@ } #endif + fval = sens; + if(proto == 0) { if(sock) { ssize_t bytes; - float fval = sens; while((bytes = write(sock, &fval, sizeof fval)) <= 0 && errno == EINTR); if(bytes <= 0) { @@ -320,7 +322,7 @@ return -1; } - rr.data[0] = *(int*)&sens; + rr.data[0] = *(int*)&fval; if(request(REQ_SET_SENS, &rr, TIMEOUT) == -1) { return -1; } @@ -1092,3 +1094,23 @@ { return request_str(REQ_GCFG_SERDEV, buf, bufsz, TIMEOUT); } + +int spnav_cfg_set_repeat(int msec) +{ + struct reqresp rr = {0}; + + if(msec < 0) msec = -1; + + rr.data[0] = msec; + return request(REQ_SCFG_REPEAT, &rr, TIMEOUT); +} + +int spnav_cfg_get_repeat(void) +{ + struct reqresp rr = {0}; + + if(request(REQ_GCFG_REPEAT, &rr, TIMEOUT) == -1) { + return -1; + } + return rr.data[0]; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libspnav-1.1/src/spnav.h new/libspnav-1.2/src/spnav.h --- old/libspnav-1.1/src/spnav.h 2022-04-26 16:19:43.000000000 +0200 +++ new/libspnav-1.2/src/spnav.h 2025-03-30 04:42:13.000000000 +0200 @@ -1,6 +1,6 @@ /* This file is part of libspnav, part of the spacenav project (spacenav.sf.net) -Copyright (C) 2007-2022 John Tsiombikas <nucl...@member.fsf.org> +Copyright (C) 2007-2023 John Tsiombikas <nucl...@member.fsf.org> Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: @@ -376,6 +376,9 @@ int spnav_cfg_set_serial(const char *devpath); int spnav_cfg_get_serial(char *buf, int bufsz); +int spnav_cfg_set_repeat(int msec); +int spnav_cfg_get_repeat(void); + #ifdef __cplusplus } #endif