<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Recent changes to bugs</title><link href="https://sourceforge.net/p/controlremote/bugs/" rel="alternate"/><link href="https://sourceforge.net/p/controlremote/bugs/feed.atom" rel="self"/><id>https://sourceforge.net/p/controlremote/bugs/</id><updated>2026-05-11T08:32:57.956000Z</updated><subtitle>Recent changes to bugs</subtitle><entry><title>#43 "Error loading file" when it contains DSMs bound to shifted keys</title><link href="https://sourceforge.net/p/controlremote/bugs/43/?limit=250#2127" rel="alternate"/><published>2026-05-11T08:32:57.956000Z</published><updated>2026-05-11T08:32:57.956000Z</updated><author><name>Leonardo Brondani Schenkel</name><uri>https://sourceforge.net/u/lbschenkel/</uri></author><id>https://sourceforge.net6f291344994229d2d0eac80db28c364f741e1ecb</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;To be honest I don't completely remember the context anymore after all this time. I &lt;em&gt;think&lt;/em&gt; my intent back then was to create a controlled DSM and RMIR was misbehaving for some reason, but as previous comments stated this is a real-time DSM (unsure what is the actual difference in practice between them in this particular remote); I am not sure if the use of real-time here was my mistake or a genuine bug in RMIR. Anyhow, the fact that RMIR can open the file now and warn about it indicates to me that the original problem of not being able to load the file was fixed.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>#43 "Error loading file" when it contains DSMs bound to shifted keys</title><link href="https://sourceforge.net/p/controlremote/bugs/43/?limit=25#9a6a" rel="alternate"/><published>2026-05-08T12:39:50.366000Z</published><updated>2026-05-08T12:39:50.366000Z</updated><author><name>Graham Dixon</name><uri>https://sourceforge.net/u/mathsdon/</uri></author><id>https://sourceforge.net4d1eff8abf9b418ce5516fcb06795974a758e804</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;If you open test.rmir in a recent RMIR version, the latest release being v3.2.16 but I think any v3.2 build will do, it will open and you will see that the DSM in test.rmir is NOT a controlled DSM, it is a real-time DSM.  The only valid key that you can assign a real-time DSM to is NetTV.   It is possible for testing purposes to turn off the validation by selecting the menu item Advanced &amp;gt; Disable Upload Restrictions.  If you do so, create an entry and then deselect this item, the created entry will be highlighted in purple.  By using an old version of RMIR you have managed to assign a real-time DSM to Shift-Play, which is why it now gets highlighted in purple.  If you create a real controlled DSM then you CAN assign it to a shifted key with v3.2.16 or other recent builds.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>#37 Bug with keymoves with NEC1 Combo </title><link href="https://sourceforge.net/p/controlremote/bugs/37/?limit=25#3483" rel="alternate"/><published>2026-05-08T11:53:55.812000Z</published><updated>2026-05-08T11:53:55.812000Z</updated><author><name>Graham Dixon</name><uri>https://sourceforge.net/u/mathsdon/</uri></author><id>https://sourceforge.neta9d7cdf3c8f77a2f6af1a7549f7572cf154c5049</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;: open --&amp;gt; closed&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Group&lt;/strong&gt;:  --&amp;gt; v0.27&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>#46 Protocol parameters overwritten by RMIR</title><link href="https://sourceforge.net/p/controlremote/bugs/46/?limit=25#a4e9" rel="alternate"/><published>2026-05-08T11:44:11.748000Z</published><updated>2026-05-08T11:44:11.748000Z</updated><author><name>Graham Dixon</name><uri>https://sourceforge.net/u/mathsdon/</uri></author><id>https://sourceforge.nete47fdcdd79521559ada6113744dba834af87ad38</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;This fix is now included in RMIR v3.2.16, posted yesterday.&lt;/p&gt;&lt;/div&gt;</summary></entry><entry><title>#39 ModeName Special Function</title><link href="https://sourceforge.net/p/controlremote/bugs/39/?limit=25#6bc8" rel="alternate"/><published>2026-05-07T11:14:30.533000Z</published><updated>2026-05-07T11:14:30.533000Z</updated><author><name>Graham Dixon</name><uri>https://sourceforge.net/u/mathsdon/</uri></author><id>https://sourceforge.netd2b67caeca797ce3d66a15f9d666960603847c00</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;: pending --&amp;gt; closed&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>#40 Missing map and image for URC-2025 and problem with RDF</title><link href="https://sourceforge.net/p/controlremote/bugs/40/?limit=25#3926" rel="alternate"/><published>2026-05-07T10:26:09.922000Z</published><updated>2026-05-07T10:26:09.922000Z</updated><author><name>Graham Dixon</name><uri>https://sourceforge.net/u/mathsdon/</uri></author><id>https://sourceforge.net5140549aa80a67688cfc9ccdfe72b1002ae1936e</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;: open --&amp;gt; closed&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>#44 v3 &amp; lost icons on remote</title><link href="https://sourceforge.net/p/controlremote/bugs/44/?limit=25#97fb" rel="alternate"/><published>2026-05-07T10:15:26.571000Z</published><updated>2026-05-07T10:15:26.571000Z</updated><author><name>Graham Dixon</name><uri>https://sourceforge.net/u/mathsdon/</uri></author><id>https://sourceforge.net32e791bbdc28c85d04f6b72051931b97d4eb6491</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;: open --&amp;gt; closed&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>#41 Can't install under XP</title><link href="https://sourceforge.net/p/controlremote/bugs/41/?limit=25#b537" rel="alternate"/><published>2026-05-07T10:09:51.167000Z</published><updated>2026-05-07T10:09:51.167000Z</updated><author><name>Graham Dixon</name><uri>https://sourceforge.net/u/mathsdon/</uri></author><id>https://sourceforge.net44a852f0a21dd561ad6fea49c381448a62de56ce</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;: open --&amp;gt; closed&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>#45 Some Help menu entries dead since the demise of hifi-remote.com/forums</title><link href="https://sourceforge.net/p/controlremote/bugs/45/?limit=25#ee28" rel="alternate"/><published>2026-05-07T10:07:57.396000Z</published><updated>2026-05-07T10:07:57.396000Z</updated><author><name>Graham Dixon</name><uri>https://sourceforge.net/u/mathsdon/</uri></author><id>https://sourceforge.net646efaa2352c3ff7d660597a723aa2561168223e</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;status&lt;/strong&gt;: open --&amp;gt; closed&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;</summary></entry><entry><title>Protocol parameters overwritten by RMIR</title><link href="https://sourceforge.net/p/controlremote/bugs/46/" rel="alternate"/><published>2026-05-05T06:08:39.293000Z</published><updated>2026-05-05T06:08:39.293000Z</updated><author><name>Leonardo Brondani Schenkel</name><uri>https://sourceforge.net/u/lbschenkel/</uri></author><id>https://sourceforge.net5bb782af23395aa8168a7d79528bd254ffa83449</id><summary type="html">&lt;div class="markdown_content"&gt;&lt;p&gt;I independently have encountered the same problem reported in &lt;a href="https://www.hifi-remote.com/forums/viewtopic.php?t=103894:" rel="nofollow"&gt;https://www.hifi-remote.com/forums/viewtopic.php?t=103894:&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It manifests in the following forms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;once you submit a device upgrade, even if it's the only one, you can no longer edit the protocol parameters (they revert back to previous values when the editor closes)&lt;/li&gt;
&lt;li&gt;if you have multiple upgrades using the same protocol, the parameters are always overwritten with the values from the first one&lt;/li&gt;
&lt;li&gt;if you edit the file manually instead, and open it, the values stay as in the file until you attempt to edit the upgrade, then the problems happen again&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Strangely enough, I also stumbled upon a workaround: if Options/Advanced/Non-model editor is turned on, the problems above do not manifest. Turn if on again, and they come back.&lt;/p&gt;
&lt;p&gt;After struggling a lot with the above I decided to run RMIR under a debugger and diagnose what was happening (I am a Java developer). And I found out what the issue was:&lt;/p&gt;
&lt;p&gt;The problem is that protocol parameters while they're being edited are both live and global state, they're components from the protocol device parameters being shown in the UI that are per-protocol and protocols are global. And when new instances of the class DeviceUpgrade are created, they try to clone the protocol parameter values of the upgrade by using the protocol device parameters, and that overwrites the values in those components. &lt;/p&gt;
&lt;p&gt;One of the code paths that creates new device upgrades is the renderer of the device upgrade table in the Devices tab. When the table needs to be refreshed, it will clone the upgrades from the model in order to update the UI.&lt;/p&gt;
&lt;p&gt;When non-modal editor is OFF (the default), and you launch the device upgrade editor, it will disable the parent window (containing the device upgrade table), open the editor, and when you press OK one of the first things it will do is to re-enable the parent window.&lt;/p&gt;
&lt;p&gt;When the parent window is re-enabled, Swing will trigger a refresh/re-render of the table component. That will invoke the code path trying to clone the existing device upgrades, and the first entry in the table that has the same protocol will result in that code path cloning the previous values (the ones in the model, in the pre-edited state) and overwriting the values entered in the device upgrade editor. This happens very early, before the values are actually processed and the model is updated, so any changes the user have made are reverted back.&lt;/p&gt;
&lt;p&gt;When non-modal editor is ON, then the parent window is never re-enabled and that does not trigger any table refresh at that point. The problematic code path is not invoked, the values are actually processed and the data models are updated, and &lt;em&gt;then&lt;/em&gt; the table is refreshed, with the problematic code path being invoked, but now the models are actually containing the post-edited state so that is fine.&lt;/p&gt;
&lt;p&gt;I am attaching a patch that addresses this problem. It changes the DeviceUpgrade cloning code so it never attempts to use the protocol device parameters (and their components):&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gh"&gt;diff --git a/src/main/java/com/hifiremote/jp1/Value.java b/src/main/java/com/hifiremote/jp1/Value.java&lt;/span&gt;
&lt;span class="gd"&gt;--- a/src/main/java/com/hifiremote/jp1/Value.java   (revision 2240)&lt;/span&gt;
&lt;span class="gi"&gt;+++ b/src/main/java/com/hifiremote/jp1/Value.java   (date 1777961033694)&lt;/span&gt;
&lt;span class="gu"&gt;@@ -1,6 +1,9 @@&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;package com.hifiremote.jp1;

&lt;span class="w"&gt; &lt;/span&gt;// TODO: Auto-generated Javadoc
&lt;span class="gi"&gt;+&lt;/span&gt;
&lt;span class="gi"&gt;+import java.util.Arrays;&lt;/span&gt;
&lt;span class="gi"&gt;+&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;/**

&lt;span class="w"&gt; &lt;/span&gt; * The Class Value.
&lt;span class="w"&gt; &lt;/span&gt; */
&lt;span class="gu"&gt;@@ -39,6 +42,18 @@&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;    this.defaultValue = defaultValue;
&lt;span class="w"&gt; &lt;/span&gt;  }


&lt;span class="gi"&gt;+  public Value copy()&lt;/span&gt;
&lt;span class="gi"&gt;+  {&lt;/span&gt;
&lt;span class="gi"&gt;+    return new Value( userValue, defaultValue );&lt;/span&gt;
&lt;span class="gi"&gt;+  }&lt;/span&gt;
&lt;span class="gi"&gt;+&lt;/span&gt;
&lt;span class="gi"&gt;+  public static Value[] copy( Value[] values )&lt;/span&gt;
&lt;span class="gi"&gt;+  {&lt;/span&gt;
&lt;span class="gi"&gt;+    return Arrays.stream( values )&lt;/span&gt;
&lt;span class="gi"&gt;+        .map( Value::copy )&lt;/span&gt;
&lt;span class="gi"&gt;+        .toArray( Value[]::new );&lt;/span&gt;
&lt;span class="gi"&gt;+  }&lt;/span&gt;
&lt;span class="gi"&gt;+&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;  /**
&lt;span class="w"&gt; &lt;/span&gt;   * Gets the user value.
&lt;span class="w"&gt; &lt;/span&gt;   * 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gh"&gt;diff --git a/src/main/java/com/hifiremote/jp1/DeviceUpgrade.java b/src/main/java/com/hifiremote/jp1/DeviceUpgrade.java&lt;/span&gt;
&lt;span class="gd"&gt;--- a/src/main/java/com/hifiremote/jp1/DeviceUpgrade.java   (revision 2240)&lt;/span&gt;
&lt;span class="gi"&gt;+++ b/src/main/java/com/hifiremote/jp1/DeviceUpgrade.java   (date 1777621985560)&lt;/span&gt;
&lt;span class="gu"&gt;@@ -139,8 +139,17 @@&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;    // copy the device parameter values
&lt;span class="w"&gt; &lt;/span&gt;    if ( base.protocol != null )
&lt;span class="w"&gt; &lt;/span&gt;    {
&lt;span class="gd"&gt;-      protocol.setDeviceParms( base.parmValues );&lt;/span&gt;
&lt;span class="gd"&gt;-      parmValues = protocol.getDeviceParmValues();&lt;/span&gt;
&lt;span class="gi"&gt;+      // *DO NOT* call protocol.setDeviceParams() here to clone parmValues!&lt;/span&gt;
&lt;span class="gi"&gt;+      // Protocol device params are global state, and may be:&lt;/span&gt;
&lt;span class="gi"&gt;+      // - live: currently rendered in the UI; and/or&lt;/span&gt;
&lt;span class="gi"&gt;+      // - dirty: containing user-entered input which has not been saved yet.&lt;/span&gt;
&lt;span class="gi"&gt;+      //&lt;/span&gt;
&lt;span class="gi"&gt;+      // Violation of this rule will result in this code path overwriting&lt;/span&gt;
&lt;span class="gi"&gt;+      // user-entered protocol parameters. For example, if the table showing&lt;/span&gt;
&lt;span class="gi"&gt;+      // device upgrades is re-rendered while the upgrade dialog is open,&lt;/span&gt;
&lt;span class="gi"&gt;+      // the old values in the table data will overwrite any changes the user&lt;/span&gt;
&lt;span class="gi"&gt;+      // has typed.&lt;/span&gt;
&lt;span class="gi"&gt;+      parmValues = Value.copy( parmValues );&lt;/span&gt;
&lt;span class="w"&gt; &lt;/span&gt;    }

&lt;span class="w"&gt; &lt;/span&gt;    // Copy the functions and their assignments
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This completely addresses the problems described. I kindly ask for this fix (or an equivalent one) to be added to RMIR. Thank you.&lt;/p&gt;&lt;/div&gt;</summary></entry></feed>