Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package razercfg for openSUSE:Factory 
checked in at 2026-09-07 11:34:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/razercfg (Old)
 and      /work/SRC/openSUSE:Factory/.razercfg.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "razercfg"

Mon Sep  7 11:34:00 2026 rev:13 rq:1375961 version:0.44

Changes:
--------
--- /work/SRC/openSUSE:Factory/razercfg/razercfg.changes        2025-07-11 
21:31:12.735770351 +0200
+++ /work/SRC/openSUSE:Factory/.razercfg.new.1265/razercfg.changes      
2026-09-07 11:34:50.179570044 +0200
@@ -1,0 +2,10 @@
+Sat May 23 18:36:34 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.44:
+  * Fix independent axes
+  * Fix QLineEdit.EchoMode
+  * Update Qt.CheckState
+  * Fix QSystemTrayIcon.ActionReason
+  * Update to pyqt6
+
+-------------------------------------------------------------------

Old:
----
  razercfg-0.43.tar.xz
  razercfg-0.43.tar.xz.asc

New:
----
  razercfg-0.44.tar.xz
  razercfg-0.44.tar.xz.asc

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ razercfg.spec ++++++
--- /var/tmp/diff_new_pack.OYdHC3/_old  2026-09-07 11:34:50.999598771 +0200
+++ /var/tmp/diff_new_pack.OYdHC3/_new  2026-09-07 11:34:51.001598841 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package razercfg
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,11 +17,11 @@
 
 
 Name:           razercfg
-Version:        0.43
+Version:        0.44
 Release:        0
 Summary:        A Razer device configuration tool
 # Icons are http://creativecommons.org/licenses/by/4.0/
-License:        GPL-2.0-or-later AND CC-BY-SA-4.0
+License:        CC-BY-SA-4.0 AND GPL-2.0-or-later
 Group:          Hardware/Other
 URL:            https://bues.ch/cms/hacking/razercfg.html
 Source0:        https://bues.ch/razercfg/%{name}-%{version}.tar.xz
@@ -40,7 +40,7 @@
 BuildRequires:  systemd-rpm-macros
 BuildRequires:  update-desktop-files
 BuildRequires:  pkgconfig(udev)
-Requires:       python3-qt5
+Requires:       python3-qt6
 %{?systemd_ordering}
 
 %description

++++++ razercfg-0.43.tar.xz -> razercfg-0.44.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/razercfg-0.43/CMakeLists.txt 
new/razercfg-0.44/CMakeLists.txt
--- old/razercfg-0.43/CMakeLists.txt    1970-01-01 01:00:00.000000000 +0100
+++ new/razercfg-0.44/CMakeLists.txt    1970-01-01 01:00:00.000000000 +0100
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.10)
 project(razer C)
 
 if (COMMAND cmake_policy)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/razercfg-0.43/HACKING.html 
new/razercfg-0.44/HACKING.html
--- old/razercfg-0.43/HACKING.html      1970-01-01 01:00:00.000000000 +0100
+++ new/razercfg-0.44/HACKING.html      1970-01-01 01:00:00.000000000 +0100
@@ -60,6 +60,10 @@
     img {
       max-width: 100%;
     }
+    svg {
+      height: auto;
+      max-width: 100%;
+    }
     h1, h2, h3, h4, h5, h6 {
       margin-top: 1.4em;
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/razercfg-0.43/README.html 
new/razercfg-0.44/README.html
--- old/razercfg-0.43/README.html       1970-01-01 01:00:00.000000000 +0100
+++ new/razercfg-0.44/README.html       1970-01-01 01:00:00.000000000 +0100
@@ -60,6 +60,10 @@
     img {
       max-width: 100%;
     }
+    svg {
+      height: auto;
+      max-width: 100%;
+    }
     h1, h2, h3, h4, h5, h6 {
       margin-top: 1.4em;
     }
@@ -162,6 +166,70 @@
       vertical-align: middle;
     }
     .display.math{display: block; text-align: center; margin: 0.5rem auto;}
+    /* CSS for syntax highlighting */
+    pre > code.sourceCode { white-space: pre; position: relative; }
+    pre > code.sourceCode > span { line-height: 1.25; }
+    pre > code.sourceCode > span:empty { height: 1.2em; }
+    .sourceCode { overflow: visible; }
+    code.sourceCode > span { color: inherit; text-decoration: inherit; }
+    div.sourceCode { margin: 1em 0; }
+    pre.sourceCode { margin: 0; }
+    @media screen {
+    div.sourceCode { overflow: auto; }
+    }
+    @media print {
+    pre > code.sourceCode { white-space: pre-wrap; }
+    pre > code.sourceCode > span { display: inline-block; text-indent: -5em; 
padding-left: 5em; }
+    }
+    pre.numberSource code
+      { counter-reset: source-line 0; }
+    pre.numberSource code > span
+      { position: relative; left: -4em; counter-increment: source-line; }
+    pre.numberSource code > span > a:first-child::before
+      { content: counter(source-line);
+        position: relative; left: -1em; text-align: right; vertical-align: 
baseline;
+        border: none; display: inline-block;
+        -webkit-touch-callout: none; -webkit-user-select: none;
+        -khtml-user-select: none; -moz-user-select: none;
+        -ms-user-select: none; user-select: none;
+        padding: 0 4px; width: 4em;
+        color: #aaaaaa;
+      }
+    pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa;  
padding-left: 4px; }
+    div.sourceCode
+      {   }
+    @media screen {
+    pre > code.sourceCode > span > a:first-child::before { text-decoration: 
underline; }
+    }
+    code span.al { color: #ff0000; font-weight: bold; } /* Alert */
+    code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* 
Annotation */
+    code span.at { color: #7d9029; } /* Attribute */
+    code span.bn { color: #40a070; } /* BaseN */
+    code span.bu { color: #008000; } /* BuiltIn */
+    code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
+    code span.ch { color: #4070a0; } /* Char */
+    code span.cn { color: #880000; } /* Constant */
+    code span.co { color: #60a0b0; font-style: italic; } /* Comment */
+    code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* 
CommentVar */
+    code span.do { color: #ba2121; font-style: italic; } /* Documentation */
+    code span.dt { color: #902000; } /* DataType */
+    code span.dv { color: #40a070; } /* DecVal */
+    code span.er { color: #ff0000; font-weight: bold; } /* Error */
+    code span.ex { } /* Extension */
+    code span.fl { color: #40a070; } /* Float */
+    code span.fu { color: #06287e; } /* Function */
+    code span.im { color: #008000; font-weight: bold; } /* Import */
+    code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* 
Information */
+    code span.kw { color: #007020; font-weight: bold; } /* Keyword */
+    code span.op { color: #666666; } /* Operator */
+    code span.ot { color: #007020; } /* Other */
+    code span.pp { color: #bc7a00; } /* Preprocessor */
+    code span.sc { color: #4070a0; } /* SpecialChar */
+    code span.ss { color: #bb6688; } /* SpecialString */
+    code span.st { color: #4070a0; } /* String */
+    code span.va { color: #19177c; } /* Variable */
+    code span.vs { color: #4070a0; } /* VerbatimString */
+    code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* 
Warning */
   </style>
 </head>
 <body>
@@ -185,10 +253,10 @@
 <li><p>libusb 1.0: <a
 href="http://libusb.org/";>http://libusb.org/</a><br />
 Debian Linux: <code>apt-get install libusb-1.0-0-dev</code></p></li>
-<li><p>PyQt5 (for the graphical qrazercfg tool only): <a
-href="https://riverbankcomputing.com/software/pyqt/download5/";>https://riverbankcomputing.com/software/pyqt/download5/</a>
-Debian Linux: <code>apt-get install python3-pyqt5</code></p></li>
-<li><p>cmake 3.5 or later (for building only): <a
+<li><p>PyQt6 (for the graphical qrazercfg tool only: <a
+href="https://pypi.org/project/PyQt6/";>https://pypi.org/project/PyQt6/</a>
+Debian Linux: <code>apt-get install python3-pyqt6</code></p></li>
+<li><p>cmake 3.10 or later (for building only): <a
 href="https://cmake.org/";>https://cmake.org/</a><br />
 Debian Linux: <code>apt-get install cmake</code></p></li>
 </ul>
@@ -201,17 +269,13 @@
 <h2 id="building">Building</h2>
 <p>First invoke <code>cmake</code> to build the makefiles. Then invoke
 <code>make</code> to build the binaries:</p>
-<pre>
-cmake .
-make
-</pre>
+<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code 
class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" 
tabindex="-1"></a><span class="fu">cmake</span> .</span>
+<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span 
class="fu">make</span></span></code></pre></div>
 <p>(Note the required space and dot after the cmake command)</p>
 <h2 id="installing">Installing</h2>
 <p>First you need to install the tool libraries and binaries. Do this by
 executing the following command as root:</p>
-<pre>
-make install
-</pre>
+<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code 
class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" 
tabindex="-1"></a><span class="fu">make</span> install</span></code></pre></div>
 <p>Be aware that <code>make install</code> installs the shared library
 <code>librazer.so</code> to <code>$PREFIX/lib</code>. The default
 <code>$PREFIX</code> is <code>/usr/local/</code>, but the install prefix
@@ -229,9 +293,7 @@
 <p>The <code>make install</code> step installed the razerd.service file.
 Reboot or run the following command as root to start the razerd
 daemon:</p>
-<pre>
-systemctl start razerd
-</pre>
+<div class="sourceCode" id="cb3"><pre class="sourceCode sh"><code 
class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" 
tabindex="-1"></a><span class="ex">systemctl</span> start 
razerd</span></code></pre></div>
 <h3 id="if-you-do-not-use-systemd">If you do <strong>not</strong> use
 systemd:</h3>
 <p>To automatically start the required system daemon <code>razerd</code>
@@ -239,18 +301,14 @@
 package includes a generic example script, that should work
 out-of-the-box on many Linux distributions. To install it, invoke the
 following commands as root:</p>
-<pre>
-cp ./razerd.initscript /etc/init.d/razerd
-ln -s /etc/init.d/razerd /etc/rc2.d/S99razerd
-ln -s /etc/init.d/razerd /etc/rc5.d/S99razerd
-ln -s /etc/init.d/razerd /etc/rc0.d/K01razerd
-ln -s /etc/init.d/razerd /etc/rc6.d/K01razerd
-</pre>
+<div class="sourceCode" id="cb4"><pre class="sourceCode sh"><code 
class="sourceCode bash"><span id="cb4-1"><a href="#cb4-1" aria-hidden="true" 
tabindex="-1"></a><span class="fu">cp</span> ./razerd.initscript 
/etc/init.d/razerd</span>
+<span id="cb4-2"><a href="#cb4-2" aria-hidden="true" tabindex="-1"></a><span 
class="fu">ln</span> <span class="at">-s</span> /etc/init.d/razerd 
/etc/rc2.d/S99razerd</span>
+<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a><span 
class="fu">ln</span> <span class="at">-s</span> /etc/init.d/razerd 
/etc/rc5.d/S99razerd</span>
+<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a><span 
class="fu">ln</span> <span class="at">-s</span> /etc/init.d/razerd 
/etc/rc0.d/K01razerd</span>
+<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a><span 
class="fu">ln</span> <span class="at">-s</span> /etc/init.d/razerd 
/etc/rc6.d/K01razerd</span></code></pre></div>
 <h3 id="if-you-use-udev">If you use <strong>udev</strong>:</h3>
-The <code>make install</code> step installed the udev script to
-<pre>
-/etc/udev/rules.d/80-razer.rules
-</pre>
+<p>The <code>make install</code> step installed the udev script to</p>
+<div class="sourceCode" id="cb5"><pre class="sourceCode sh"><code 
class="sourceCode bash"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" 
tabindex="-1"></a><span 
class="ex">/etc/udev/rules.d/80-razer.rules</span></span></code></pre></div>
 <p>This should work on most distributions.</p>
 <p>If udev notification does not work, try to reboot the system.</p>
 <h2 id="razerd-configuration">RazerD Configuration</h2>
@@ -271,21 +329,17 @@
 <code>/dev/input/mice</code> device instead. This will enable X to pick
 up the mouse again after a configuration event from razerd.</p>
 <p>Example xorg.conf snippet:</p>
-<pre>
-Section "InputDevice"
-    Identifier  "Mouse"
-    Driver  "mouse"
-    Option  "Device" "/dev/input/mice"
-EndSection
-</pre>
+<pre><code>Section &quot;InputDevice&quot;
+    Identifier  &quot;Mouse&quot;
+    Driver  &quot;mouse&quot;
+    Option  &quot;Device&quot; &quot;/dev/input/mice&quot;
+EndSection</code></pre>
 <p>Alternatively, do not specify a <code>"Device"</code> at all. X will
 autodetect the device then:</p>
-<pre>
-Section "InputDevice"
-    Identifier  "Mouse"
-    Driver  "mouse"
-EndSection
-</pre>
+<pre><code>Section &quot;InputDevice&quot;
+    Identifier  &quot;Mouse&quot;
+    Driver  &quot;mouse&quot;
+EndSection</code></pre>
 <p>In any case, do <em>NOT</em> use:
 <code>Option "Device" "/dev/input/mouseX"</code></p>
 <h2 id="using-the-tools">Using the tools</h2>
@@ -304,13 +358,10 @@
 It must be called with the install prefix as its first argument. That
 usually is <code>/usr/local</code>, unless specified otherwise in cmake.
 A call to uninstall.sh might look like this:</p>
-<pre>
-./uninstall.sh /usr/local
-</pre>
+<div class="sourceCode" id="cb8"><pre class="sourceCode sh"><code 
class="sourceCode bash"><span id="cb8-1"><a href="#cb8-1" aria-hidden="true" 
tabindex="-1"></a><span class="ex">./uninstall.sh</span> 
/usr/local</span></code></pre></div>
 <h2 id="architecture">Architecture</h2>
 <p>The architecture layout of the razer tools looks like this:</p>
-<pre>
- -------------------
+<pre><code> -------------------
 | hardware driver 0 |--v
  -------------------   |
                        |    ----------
@@ -345,8 +396,7 @@
                                                                 |
                             --------------------------          |
                           | Other Python applications |---------^
-                           ---------------------------
-</pre>
+                           ---------------------------</code></pre>
 <p>So in general, your application wants to access the razer devices
 through pyrazer or (if it’s not a python app) through librazerd. (Note
 that librazerd is not written, yet. So currently the only way to access
@@ -354,7 +404,7 @@
 lowlevel librazer directly, because there will be no instance that keeps
 track of the device state and permissions and concurrency.</p>
 <h2 id="license">License</h2>
-<p>Copyright (c) 2007-2024 Michael Büsch, et al.</p>
+<p>Copyright (c) 2007-2026 Michael Büsch, et al.</p>
 <p>See the COPYING file for license information.</p>
 </body>
 </html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/razercfg-0.43/README.md new/razercfg-0.44/README.md
--- old/razercfg-0.43/README.md 1970-01-01 01:00:00.000000000 +0100
+++ new/razercfg-0.44/README.md 1970-01-01 01:00:00.000000000 +0100
@@ -19,10 +19,10 @@
 * libusb 1.0: [http://libusb.org/](http://libusb.org/)   
 Debian Linux: `apt-get install libusb-1.0-0-dev`
 
-* PyQt5 (for the graphical qrazercfg tool only): 
[https://riverbankcomputing.com/software/pyqt/download5/](https://riverbankcomputing.com/software/pyqt/download5/)
-Debian Linux: `apt-get install python3-pyqt5`
+* PyQt6 (for the graphical qrazercfg tool only: 
[https://pypi.org/project/PyQt6/](https://pypi.org/project/PyQt6/)
+Debian Linux: `apt-get install python3-pyqt6`
 
-* cmake 3.5 or later (for building only): 
[https://cmake.org/](https://cmake.org/)  
+* cmake 3.10 or later (for building only): 
[https://cmake.org/](https://cmake.org/)  
 Debian Linux: `apt-get install cmake`
 
 Note that almost all distributions ship prebuilt packages of the
@@ -39,10 +39,10 @@
 First invoke `cmake` to build the makefiles.
 Then invoke `make` to build the binaries:
 
-<pre>
+```sh
 cmake .
 make
-</pre>
+```
 
 (Note the required space and dot after the cmake command)
 
@@ -52,9 +52,9 @@
 First you need to install the tool libraries and binaries. Do this by executing
 the following command as root:
 
-<pre>
+```sh
 make install
-</pre>
+```
 
 Be aware that `make install` installs the shared library `librazer.so` to 
`$PREFIX/lib`.
 The default `$PREFIX` is `/usr/local/`, but the install prefix can also be 
changed via `-DCMAKE_INSTALL_PREFIX='<somewhere>'`.
@@ -68,9 +68,9 @@
 The `make install` step installed the razerd.service file. Reboot or run the
 following command as root to start the razerd daemon:
 
-<pre>
+```sh
 systemctl start razerd
-</pre>
+```
 
 ### If you do **not** use systemd:
 
@@ -79,20 +79,22 @@
 example script, that should work out-of-the-box on many Linux distributions. To
 install it, invoke the following commands as root:
 
-<pre>
+```sh
 cp ./razerd.initscript /etc/init.d/razerd
 ln -s /etc/init.d/razerd /etc/rc2.d/S99razerd
 ln -s /etc/init.d/razerd /etc/rc5.d/S99razerd
 ln -s /etc/init.d/razerd /etc/rc0.d/K01razerd
 ln -s /etc/init.d/razerd /etc/rc6.d/K01razerd
-</pre>
+```
 
 ### If you use **udev**:
 
 The `make install` step installed the udev script to
-<pre>
+
+```sh
 /etc/udev/rules.d/80-razer.rules
-</pre>
+```
+
 This should work on most distributions.
 
 If udev notification does not work, try to reboot the system.
@@ -120,23 +122,23 @@
 
 Example xorg.conf snippet:
 
-<pre>
+```
 Section "InputDevice"
     Identifier "Mouse"
     Driver     "mouse"
     Option     "Device" "/dev/input/mice"
 EndSection
-</pre>
+```
 
 Alternatively, do not specify a `"Device"` at all. X will autodetect the device
 then:
 
-<pre>
+```
 Section "InputDevice"
     Identifier "Mouse"
     Driver     "mouse"
 EndSection
-</pre>
+```
 
 In any case, do _NOT_ use: `Option "Device" "/dev/input/mouseX"`
 
@@ -161,16 +163,16 @@
 argument. That usually is `/usr/local`, unless specified otherwise in cmake. A
 call to uninstall.sh might look like this:
 
-<pre>
+```sh
 ./uninstall.sh /usr/local
-</pre>
+```
 
 Architecture
 ------------
 
 The architecture layout of the razer tools looks like this:
 
-<pre>
+```
  -------------------
 | hardware driver 0 |--v
  -------------------   |
@@ -207,7 +209,7 @@
                             --------------------------          |
                           | Other Python applications |---------^
                            ---------------------------
-</pre>
+```
 
 So in general, your application wants to access the razer devices through
 pyrazer or (if it's not a python app) through librazerd.
@@ -220,6 +222,6 @@
 License
 -------
 
-Copyright (c) 2007-2024 Michael Büsch, et al.
+Copyright (c) 2007-2026 Michael Büsch, et al.
 
 See the COPYING file for license information.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/razercfg-0.43/razerd/razerd.c 
new/razercfg-0.44/razerd/razerd.c
--- old/razercfg-0.43/razerd/razerd.c   1970-01-01 01:00:00.000000000 +0100
+++ new/razercfg-0.44/razerd/razerd.c   1970-01-01 01:00:00.000000000 +0100
@@ -798,30 +798,38 @@
 
 static int recv_bulk(struct client *client, char *buf, unsigned int len)
 {
-       unsigned int next_len, i;
+       unsigned int next_len, i, got;
        int nr;
 
-//FIXME timeout
        for (i = 0; i < len; i += BULK_CHUNK_SIZE) {
                next_len = BULK_CHUNK_SIZE;
                if (i + next_len > len)
                        next_len = len - i;
-               while (1) {
-                       nr = recv(client->fd, buf + i, next_len, 0);
+
+               got = 0;
+               while (got < next_len) {
+                       nr = recv(client->fd, buf + i + got, next_len - got, 0);
                        if (nr < 0) {
-                               if (errno == EAGAIN ||
-                                   errno == EINTR) {
+                               if (errno == EAGAIN || errno == EINTR) {
                                        razer_msleep(1);
                                        continue;
                                }
+                               send_u32(client, ERR_PAYLOAD);
+                               return -1;
+                       }
+                       if (nr == 0) {
+                               /* Peer closed connection unexpectedly. */
+                               send_u32(client, ERR_PAYLOAD);
+                               return -1;
                        }
-                       if (nr > 0)
-                               break;
+                       got += (unsigned int)nr;
                }
-               if (nr < 0 || (unsigned int)nr != next_len) {
+
+               if (got != next_len) {
                        send_u32(client, ERR_PAYLOAD);
                        return -1;
                }
+
                send_u32(client, ERR_NONE);
        }
 
@@ -2082,6 +2090,7 @@
        int err;
        int errcount = 0;
        fd_set wait_fdset;
+       int maxfd;
 
        loginfo("Razer device service daemon\n");
 
@@ -2100,13 +2109,54 @@
 
        while (1) {
                FD_ZERO(&wait_fdset);
-               FD_SET(privsock, &wait_fdset);
-               FD_SET(ctlsock, &wait_fdset);
-               for (client = clients; client; client = client->next)
-                       FD_SET(client->fd, &wait_fdset);
-               for (client = privileged_clients; client; client = client->next)
-                       FD_SET(client->fd, &wait_fdset);
-               err = select(FD_SETSIZE, &wait_fdset, NULL, NULL, NULL);
+
+               /* Build fdset while tracking maximum fd. Skip and log fds >= 
FD_SETSIZE. */
+               maxfd = -1;
+               if (privsock >= 0) {
+                       if (privsock < FD_SETSIZE) {
+                               FD_SET(privsock, &wait_fdset);
+                               maxfd = max(maxfd, privsock);
+                       } else {
+                               logerr("privsock fd %d >= FD_SETSIZE (%d), 
skipping\n", privsock, FD_SETSIZE);
+                       }
+               }
+               if (ctlsock >= 0) {
+                       if (ctlsock < FD_SETSIZE) {
+                               FD_SET(ctlsock, &wait_fdset);
+                               maxfd = max(maxfd, ctlsock);
+                       } else {
+                               logerr("ctlsock fd %d >= FD_SETSIZE (%d), 
skipping\n", ctlsock, FD_SETSIZE);
+                       }
+               }
+
+               for (client = clients; client; client = client->next) {
+                       if (client->fd >= 0) {
+                               if (client->fd < FD_SETSIZE) {
+                                       FD_SET(client->fd, &wait_fdset);
+                                       maxfd = max(maxfd, client->fd);
+                               } else {
+                                       logerr("Client fd %d >= FD_SETSIZE 
(%d), skipping\n", client->fd, FD_SETSIZE);
+                               }
+                       }
+               }
+               for (client = privileged_clients; client; client = 
client->next) {
+                       if (client->fd >= 0) {
+                               if (client->fd < FD_SETSIZE) {
+                                       FD_SET(client->fd, &wait_fdset);
+                                       maxfd = max(maxfd, client->fd);
+                               } else {
+                                       logerr("Privileged client fd %d >= 
FD_SETSIZE (%d), skipping\n", client->fd, FD_SETSIZE);
+                               }
+                       }
+               }
+
+               if (maxfd < 0) {
+                       /* No valid fds to wait on. Avoid busy-looping. */
+                       razer_msleep(100);
+                       continue;
+               }
+
+               err = select(maxfd + 1, &wait_fdset, NULL, NULL, NULL);
                if (err == 0) /* no fd ready */
                        err = -1;
                if (err > 0) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/razercfg-0.43/ui/pyrazer/main.py 
new/razercfg-0.44/ui/pyrazer/main.py
--- old/razercfg-0.43/ui/pyrazer/main.py        1970-01-01 01:00:00.000000000 
+0100
+++ new/razercfg-0.44/ui/pyrazer/main.py        1970-01-01 01:00:00.000000000 
+0100
@@ -28,7 +28,7 @@
 import hashlib
 import struct
 
-RAZER_VERSION  = "0.43"
+RAZER_VERSION  = "0.44"
 
 
 class RazerEx(Exception):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/razercfg-0.43/ui/pyrazer/ui.py 
new/razercfg-0.44/ui/pyrazer/ui.py
--- old/razercfg-0.43/ui/pyrazer/ui.py  1970-01-01 01:00:00.000000000 +0100
+++ new/razercfg-0.44/ui/pyrazer/ui.py  1970-01-01 01:00:00.000000000 +0100
@@ -13,9 +13,9 @@
 #   GNU General Public License for more details.
 
 import sys
-from PyQt5.QtCore import *
-from PyQt5.QtGui import *
-from PyQt5.QtWidgets import *
+from PyQt6.QtCore import *
+from PyQt6.QtGui import *
+from PyQt6.QtWidgets import *
 Signal = pyqtSignal
 from functools import partial
 from pyrazer import *
@@ -150,7 +150,7 @@
 
                self.stateCb = QCheckBox(led.name + " LED", self)
                self.layout().addWidget(self.stateCb, 0, 0)
-               self.stateCb.setCheckState(Qt.Checked if led.state else 
Qt.Unchecked)
+               self.stateCb.setCheckState(Qt.CheckState.Checked if led.state 
else Qt.CheckState.Unchecked)
 
                if led.supported_modes:
                        self.modeComBox = WrappedComboBox(self)
@@ -319,10 +319,10 @@
                                resSel.setCurrentIndex(index)
                independent = bool([x for x in axisMappings if x != 
axisMappings[0]])
                if independent:
-                       self.resIndependent.setCheckState(Qt.Checked)
+                       self.resIndependent.setCheckState(Qt.CheckState.Checked)
                else:
-                       self.resIndependent.setCheckState(Qt.Unchecked)
-               self.resIndependentChanged(self.resIndependent.checkState())
+                       
self.resIndependent.setCheckState(Qt.CheckState.Unchecked)
+               self.resIndependentChanged()
 
                # Profile selection
                activeProf = razer.getActiveProfile(self.mouseWidget.mouse)
@@ -353,7 +353,7 @@
        def resChanged(self, unused=None):
                if self.mouseWidget.recurseProtect:
                        return
-               if self.resIndependent.checkState() == Qt.Checked:
+               if self.resIndependent.checkState() == Qt.CheckState.Checked:
                        axisId = 0
                        for resSel in self.resSel:
                                index = resSel.currentIndex()
@@ -370,8 +370,8 @@
                                resSel.setCurrentIndex(index)
                                self.mouseWidget.recurseProtect -= 1
 
-       def resIndependentChanged(self, newState):
-               if newState == Qt.Checked:
+       def resIndependentChanged(self, _=None):
+               if self.resIndependent.checkState() == Qt.CheckState.Checked:
                        for resSel in self.resSel[1:]:
                                resSel.setEnabled(True)
                else:
@@ -381,13 +381,13 @@
 
        def showButtonConf(self, checked):
                bconf = ButtonConfDialog(self)
-               bconf.exec_()
+               bconf.exec()
 
        def nameChange(self, unused):
                name = razer.getProfileName(self.mouseWidget.mouse, 
self.profileId)
                (newName, ok) = QInputDialog.getText(self, self.tr("New profile 
name"),
                                                     self.tr("New profile 
name:"),
-                                                    QLineEdit.Normal,
+                                                    QLineEdit.EchoMode.Normal,
                                                     name)
                if not ok:
                        return
@@ -680,7 +680,7 @@
                QMessageBox.information(self, self.tr("About"),
                                        self.tr("Razer device configuration 
tool\n"
                                                "Version %s\n"
-                                               "Copyright (c) 2007-2020 
Michael Buesch et al."
+                                               "Copyright (c) 2007-2026 
Michael Buesch et al."
                                                % RAZER_VERSION))
 
        def showEvent(self, ev):
@@ -738,9 +738,9 @@
                self.mainwnd.hidden.connect(self.__mainwndHidden)
 
        def __handleActivate(self, reason):
-               if reason in {QSystemTrayIcon.Trigger,
-                             QSystemTrayIcon.DoubleClick,
-                             QSystemTrayIcon.MiddleClick}:
+               if reason in {QSystemTrayIcon.ActivationReason.Trigger,
+                             QSystemTrayIcon.ActivationReason.DoubleClick,
+                             QSystemTrayIcon.ActivationReason.MiddleClick}:
                        self.contextMenu().popup(QCursor.pos())
 
        def __contextAboutToShow(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/razercfg-0.43/ui/qrazercfg 
new/razercfg-0.44/ui/qrazercfg
--- old/razercfg-0.43/ui/qrazercfg      1970-01-01 01:00:00.000000000 +0100
+++ new/razercfg-0.44/ui/qrazercfg      1970-01-01 01:00:00.000000000 +0100
@@ -16,9 +16,9 @@
 
 import sys
 import traceback
-from PyQt5.QtCore import *
-from PyQt5.QtGui import *
-from PyQt5.QtWidgets import *
+from PyQt6.QtCore import *
+from PyQt6.QtGui import *
+from PyQt6.QtWidgets import *
 
 import pyrazer
 from pyrazer import ui
@@ -34,7 +34,7 @@
        try:
                mainwnd = ui.MainWindow()
                mainwnd.show()
-               return app.exec_()
+               return app.exec()
        except pyrazer.RazerEx as e:
                QMessageBox.critical(None,
                        "qrazercfg - Fatal exception",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/razercfg-0.43/ui/qrazercfg-applet 
new/razercfg-0.44/ui/qrazercfg-applet
--- old/razercfg-0.43/ui/qrazercfg-applet       1970-01-01 01:00:00.000000000 
+0100
+++ new/razercfg-0.44/ui/qrazercfg-applet       1970-01-01 01:00:00.000000000 
+0100
@@ -16,9 +16,9 @@
 
 import sys
 import traceback
-from PyQt5.QtCore import *
-from PyQt5.QtGui import *
-from PyQt5.QtWidgets import *
+from PyQt6.QtCore import *
+from PyQt6.QtGui import *
+from PyQt6.QtWidgets import *
 
 import pyrazer
 from pyrazer import ui
@@ -38,7 +38,7 @@
                        return 1
                applet = ui.RazerApplet()
                applet.show()
-               return app.exec_()
+               return app.exec()
        except pyrazer.RazerEx as e:
                QMessageBox.critical(None,
                        "qrazercfg-applet - Fatal exception",

Reply via email to