Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package ft2-clone for openSUSE:Factory 
checked in at 2026-09-04 12:38:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ft2-clone (Old)
 and      /work/SRC/openSUSE:Factory/.ft2-clone.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ft2-clone"

Fri Sep  4 12:38:33 2026 rev:46 rq:1375438 version:2.23

Changes:
--------
--- /work/SRC/openSUSE:Factory/ft2-clone/ft2-clone.changes      2026-07-20 
10:01:28.596444199 +0200
+++ /work/SRC/openSUSE:Factory/.ft2-clone.new.1265/ft2-clone.changes    
2026-09-04 12:39:03.620740099 +0200
@@ -1,0 +2,18 @@
+Tue Sep  1 14:20:05 UTC 2026 - Martin Hauke <[email protected]>
+
+- Update to versoin 2.23
+  * Fixed: If the "WAV exporting" screen was open, the "Render
+    individual tracks" checkbox would have a much taller clickable
+    area than it should, which could interfere with for example
+    moving sample loops in the sample editor screen or interacting
+    with the pattern editor.
+  * Fixed: Several of the functions in Smp. Ed. -> Effects didn't
+    set the "song is modified" flag.
+  * Fixed: When zapping the song, the Disk Op. module filename
+    wasn't reset.
+  * The Zap dialog's text was maybe a bit unclear..
+  * Changed from "Total devastation of the..." to "What do you
+    want to clear?".
+  * Also changed the "All" button to "Everything".
+
+-------------------------------------------------------------------

Old:
----
  ft2-clone-2.22.tar.gz

New:
----
  ft2-clone-2.23.tar.gz

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

Other differences:
------------------
++++++ ft2-clone.spec ++++++
--- /var/tmp/diff_new_pack.h30Hnx/_old  2026-09-04 12:39:04.442768975 +0200
+++ /var/tmp/diff_new_pack.h30Hnx/_new  2026-09-04 12:39:04.445769081 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           ft2-clone
-Version:        2.22
+Version:        2.23
 Release:        0
 Summary:        Fasttracker II clone
 License:        BSD-3-Clause AND CC-BY-NC-SA-4.0

++++++ ft2-clone-2.22.tar.gz -> ft2-clone-2.23.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.22/CMakeLists.txt 
new/ft2-clone-2.23/CMakeLists.txt
--- old/ft2-clone-2.22/CMakeLists.txt   2026-07-19 18:34:04.000000000 +0200
+++ new/ft2-clone-2.23/CMakeLists.txt   2026-08-23 12:26:06.000000000 +0200
@@ -6,60 +6,49 @@
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${ft2-clone_SOURCE_DIR}/release/other/")
 
 if((CMAKE_CXX_COMPILER_ID MATCHES "Clang") OR (CMAKE_CXX_COMPILER_ID MATCHES 
"GNU"))
-    add_compile_options(-O3)
-    add_compile_options(-ffast-math)
+       add_compile_options(-O3)
+       add_compile_options(-ffast-math)
 endif()
 
 file(GLOB ft2-clone_SRC
-    "${ft2-clone_SOURCE_DIR}/src/rtmidi/*.cpp"
-    "${ft2-clone_SOURCE_DIR}/src/*.c"
-    "${ft2-clone_SOURCE_DIR}/src/gfxdata/*.c"
-    "${ft2-clone_SOURCE_DIR}/src/mixer/*.c"
-    "${ft2-clone_SOURCE_DIR}/src/scopes/*.c"
-    "${ft2-clone_SOURCE_DIR}/src/modloaders/*.c"
-    "${ft2-clone_SOURCE_DIR}/src/smploaders/*.c"
+       "${ft2-clone_SOURCE_DIR}/src/rtmidi/*.cpp"
+       "${ft2-clone_SOURCE_DIR}/src/*.c"
+       "${ft2-clone_SOURCE_DIR}/src/gfxdata/*.c"
+       "${ft2-clone_SOURCE_DIR}/src/mixer/*.c"
+       "${ft2-clone_SOURCE_DIR}/src/scopes/*.c"
+       "${ft2-clone_SOURCE_DIR}/src/modloaders/*.c"
+       "${ft2-clone_SOURCE_DIR}/src/smploaders/*.c"
 )
 
 add_executable(ft2-clone ${ft2-clone_SRC})
-
-target_include_directories(ft2-clone SYSTEM
-    PRIVATE ${SDL2_INCLUDE_DIRS})
+target_include_directories(ft2-clone SYSTEM PRIVATE ${SDL2_INCLUDE_DIRS})
 
 if("${SDL2_LIBRARIES}" STREQUAL "")
-    message(WARNING "SDL2_LIBRARIES wasn't set, manually setting to 
SDL2::SDL2")
-    set(SDL2_LIBRARIES "SDL2::SDL2")
+       message(WARNING "SDL2_LIBRARIES wasn't set, manually setting to 
SDL2::SDL2")
+       set(SDL2_LIBRARIES "SDL2::SDL2")
 endif()
 
 find_package(Threads REQUIRED)
-
-target_link_libraries(ft2-clone
-    PRIVATE m Threads::Threads ${SDL2_LIBRARIES})
-
-target_compile_definitions(ft2-clone
-    PRIVATE HAS_MIDI)
+target_link_libraries(ft2-clone PRIVATE m Threads::Threads ${SDL2_LIBRARIES})
+target_compile_definitions(ft2-clone PRIVATE HAS_MIDI)
 
 if(UNIX)
-    if(APPLE)
-        find_library(COREAUDIO CoreAudio REQUIRED)
-        find_library(COREFOUNDATION CoreFoundation REQUIRED)
-        find_library(COREMIDI CoreMIDI REQUIRED)
-        find_library(ICONV iconv REQUIRED)
-        target_link_libraries(ft2-clone
-            PRIVATE ${COREAUDIO} ${COREMIDI} ${COREFOUNDATION} ${ICONV})
-        target_compile_definitions(ft2-clone
-            PRIVATE __MACOSX_CORE__)
-    else()
-        # musl systems need musl-fts installed, others have it with glibc
-        find_library(FTS fts)
-        if (FTS)
-            target_link_libraries(ft2-clone PRIVATE fts)
-        endif()
-        target_link_libraries(ft2-clone
-            PRIVATE asound)
-        target_compile_definitions(ft2-clone
-            PRIVATE __LINUX_ALSA__)
-    endif()
+       if(APPLE)
+               find_library(COREAUDIO CoreAudio REQUIRED)
+               find_library(COREFOUNDATION CoreFoundation REQUIRED)
+               find_library(COREMIDI CoreMIDI REQUIRED)
+               find_library(ICONV iconv REQUIRED)
+               target_link_libraries(ft2-clone PRIVATE ${COREAUDIO} 
${COREMIDI} ${COREFOUNDATION} ${ICONV})
+               target_compile_definitions(ft2-clone PRIVATE __MACOSX_CORE__)
+       else()
+               # musl systems need musl-fts installed, others have it with 
glibc
+               find_library(FTS fts)
+               if(FTS)
+                       target_link_libraries(ft2-clone PRIVATE fts)
+               endif()
+               target_link_libraries(ft2-clone PRIVATE asound)
+               target_compile_definitions(ft2-clone PRIVATE __LINUX_ALSA__)
+       endif()
 endif()
 
-install(TARGETS ft2-clone
-    RUNTIME DESTINATION bin)
+install(TARGETS ft2-clone RUNTIME DESTINATION bin)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.22/src/ft2_checkboxes.c 
new/ft2-clone-2.23/src/ft2_checkboxes.c
--- old/ft2-clone-2.22/src/ft2_checkboxes.c     2026-07-19 18:34:04.000000000 
+0200
+++ new/ft2-clone-2.23/src/ft2_checkboxes.c     2026-08-23 12:26:06.000000000 
+0200
@@ -129,7 +129,7 @@
 
        // WAV RENDERER BPM MODE
        //x,   y,   w,   h,  funcOnUp
-       { 62, 157,  159, 24, cbToggleWavRenderIndividualTracks }
+       { 62, 157,  159, 12, cbToggleWavRenderIndividualTracks }
 };
 
 void drawCheckBox(uint16_t checkBoxID)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.22/src/ft2_diskop.c 
new/ft2-clone-2.23/src/ft2_diskop.c
--- old/ft2-clone-2.22/src/ft2_diskop.c 2026-07-19 18:34:04.000000000 +0200
+++ new/ft2-clone-2.23/src/ft2_diskop.c 2026-08-23 12:26:06.000000000 +0200
@@ -305,6 +305,14 @@
        freeDirRecBuffer();
 }
 
+void resetDiskOpModuleFilename(void)
+{
+       modTmpFName[0] = '\0';
+       strcpy(modTmpFName, "untitled.xm");
+       updateCurrSongFilename(); // for window title
+       updateWindowTitle(true);
+}
+
 bool setupDiskOp(void)
 {
        modTmpFName = (char *)malloc((PATH_MAX + 1) * sizeof (char));
@@ -331,7 +339,6 @@
        }
 
        // clear first entry of strings
-       modTmpFName[0] = '\0';
        insTmpFName[0] = '\0';
        smpTmpFName[0] = '\0';
        patTmpFName[0] = '\0';
@@ -343,7 +350,7 @@
        FReq_PatCurPathU[0] = 0;
        FReq_TrkCurPathU[0] = 0;
 
-       strcpy(modTmpFName, "untitled.xm");
+       resetDiskOpModuleFilename();
        strcpy(insTmpFName, "untitled.xi");
        strcpy(smpTmpFName, "untitled.wav");
        strcpy(patTmpFName, "untitled.xp");
@@ -352,9 +359,6 @@
        setupInitialPaths();
        setDiskOpItem(0);
 
-       updateCurrSongFilename(); // for window title
-       updateWindowTitle(true);
-
        return true;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.22/src/ft2_diskop.h 
new/ft2-clone-2.23/src/ft2_diskop.h
--- old/ft2-clone-2.22/src/ft2_diskop.h 2026-07-19 18:34:04.000000000 +0200
+++ new/ft2-clone-2.23/src/ft2_diskop.h 2026-08-23 12:26:06.000000000 +0200
@@ -34,6 +34,7 @@
 void diskOpChangeFilenameExt(char *ext);
 void freeDiskOp(void);
 bool setupDiskOp(void);
+void resetDiskOpModuleFilename(void);
 void diskOpSetFilename(uint8_t type, UNICHAR *pathU);
 void sanitizeFilename(const char *src);
 bool diskOpGoParent(void);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.22/src/ft2_header.h 
new/ft2-clone-2.23/src/ft2_header.h
--- old/ft2-clone-2.22/src/ft2_header.h 2026-07-19 18:34:04.000000000 +0200
+++ new/ft2-clone-2.23/src/ft2_header.h 2026-08-23 12:26:06.000000000 +0200
@@ -14,7 +14,7 @@
 #endif
 #include "ft2_replayer.h"
 
-#define PROG_VER_STR "2.22"
+#define PROG_VER_STR "2.23"
 
 // do NOT change these! It will only mess things up...
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.22/src/ft2_pattern_ed.c 
new/ft2-clone-2.23/src/ft2_pattern_ed.c
--- old/ft2-clone-2.22/src/ft2_pattern_ed.c     2026-07-19 18:34:04.000000000 
+0200
+++ new/ft2-clone-2.23/src/ft2_pattern_ed.c     2026-08-23 12:26:06.000000000 
+0200
@@ -2642,7 +2642,7 @@
        setScrollBarPos(SB_POS_ED, 0, DONT_TRIGGER_CALLBACK);
        setScrollBarEnd(SB_POS_ED, (song.songLength - 1) + 5);
 
-       updateWindowTitle(true);
+       resetDiskOpModuleFilename(); // also updates the window title
 }
 
 static void zapInstrs(void)
@@ -2672,18 +2672,18 @@
 
 void pbZap(void)
 {
-       const int16_t choice = okBox(3, "System request", "Total devastation of 
the...", NULL);
+       const int16_t choice = okBox(3, "System request", "What do you want to 
clear?", NULL);
 
-       if (choice == 1) // zap all
+       if (choice == 1) // "everything"
        {
                zapSong();
                zapInstrs();
        }
-       else if (choice == 2) // zap song
+       else if (choice == 2) // "song"
        {
                zapSong();
        }
-       else if (choice == 3) // zap instruments
+       else if (choice == 3) // "instruments"
        {
                zapInstrs();
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.22/src/ft2_replayer.c 
new/ft2-clone-2.23/src/ft2_replayer.c
--- old/ft2-clone-2.22/src/ft2_replayer.c       2026-07-19 18:34:04.000000000 
+0200
+++ new/ft2-clone-2.23/src/ft2_replayer.c       2026-08-23 12:26:06.000000000 
+0200
@@ -47,7 +47,7 @@
 int16_t patternNumRows[MAX_PATTERNS];
 channel_t channel[MAX_CHANNELS];
 song_t song;
-instr_t *instr[128+4];
+instr_t *instr[128+4]; // (extra placeholder instruments needed)
 note_t *pattern[MAX_PATTERNS];
 // ----------------------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.22/src/ft2_replayer.h 
new/ft2-clone-2.23/src/ft2_replayer.h
--- old/ft2-clone-2.22/src/ft2_replayer.h       2026-07-19 18:34:04.000000000 
+0200
+++ new/ft2-clone-2.23/src/ft2_replayer.h       2026-08-23 12:26:06.000000000 
+0200
@@ -355,5 +355,5 @@
 extern int16_t patternNumRows[MAX_PATTERNS];
 extern channel_t channel[MAX_CHANNELS];
 extern song_t song;
-extern instr_t *instr[128+4];
+extern instr_t *instr[128+4]; // (extra placeholder instruments needed)
 extern note_t *pattern[MAX_PATTERNS];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.22/src/ft2_smpfx.c 
new/ft2-clone-2.23/src/ft2_smpfx.c
--- old/ft2-clone-2.22/src/ft2_smpfx.c  2026-07-19 18:34:04.000000000 +0200
+++ new/ft2-clone-2.23/src/ft2_smpfx.c  2026-08-23 12:26:06.000000000 +0200
@@ -229,6 +229,7 @@
        resumeAudio();
 
        updateSampleEditorSample();
+       setSongModifiedFlag();
 }
 
 void pbSfxSaw(void)
@@ -280,6 +281,7 @@
        resumeAudio();
 
        updateSampleEditorSample();
+       setSongModifiedFlag();
 }
 
 void pbSfxSine(void)
@@ -327,6 +329,7 @@
        resumeAudio();
 
        updateSampleEditorSample();
+       setSongModifiedFlag();
 }
 
 void pbSfxSquare(void)
@@ -384,6 +387,7 @@
        resumeAudio();
 
        updateSampleEditorSample();
+       setSongModifiedFlag();
 }
 
 void drawFilterResonance(void)
@@ -654,6 +658,7 @@
        fillSampleUndo(KEEP_SAMPLE_MARK);
        applyResoFilter(s, &f);
        writeSample(FORCE_SAMPLE_REDRAW);
+       setSongModifiedFlag();
 }
 
 void pbSfxHighPass(void)
@@ -686,6 +691,7 @@
        fillSampleUndo(KEEP_SAMPLE_MARK);
        applyResoFilter(s, &f);
        writeSample(FORCE_SAMPLE_REDRAW);
+       setSongModifiedFlag();
 }
 
 void sfxPreviewFilter(uint32_t cutoff)
@@ -803,6 +809,7 @@
        fillSampleUndo(KEEP_SAMPLE_MARK);
        applyResoFilter(s, &f);
        writeSample(FORCE_SAMPLE_REDRAW);
+       setSongModifiedFlag();
 }
 
 void pbSfxAddBass(void)
@@ -966,6 +973,7 @@
        resumeAudio();
 
        writeSample(FORCE_SAMPLE_REDRAW);
+       setSongModifiedFlag();
 }
 
 void pbSfxSubTreble(void)
@@ -980,6 +988,7 @@
        fillSampleUndo(KEEP_SAMPLE_MARK);
        applyResoFilter(s, &f);
        writeSample(FORCE_SAMPLE_REDRAW);
+       setSongModifiedFlag();
 }
 
 void pbSfxAddTreble(void)
@@ -1143,6 +1152,7 @@
        resumeAudio();
 
        writeSample(FORCE_SAMPLE_REDRAW);
+       setSongModifiedFlag();
 }
 
 void pbSfxSetAmp(void)
@@ -1219,6 +1229,7 @@
        resumeAudio();
 
        writeSample(FORCE_SAMPLE_REDRAW);
+       setSongModifiedFlag();
 }
 
 void pbSfxUndo(void)
@@ -1247,6 +1258,7 @@
 
                fixSample(s);
                resumeAudio();
+               setSongModifiedFlag();
        }
        else
        {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.22/src/ft2_sysreqs.c 
new/ft2-clone-2.23/src/ft2_sysreqs.c
--- old/ft2-clone-2.22/src/ft2_sysreqs.c        2026-07-19 18:34:04.000000000 
+0200
+++ new/ft2-clone-2.23/src/ft2_sysreqs.c        2026-08-23 12:26:06.000000000 
+0200
@@ -34,7 +34,7 @@
        { "Yes", "No", "","","" },
 
        // custom dialogs
-       { "All", "Song", "Instruments", "Cancel", "" },   // "song clear" dialog
+       { "Everything", "Song", "Instruments", "Cancel", "" },   // "song 
clear" dialog
        { "Left channel", "Right channel", "Mix to mono", "", "" }, // "stereo 
sample loader" dialog
        { "Mono", "Stereo", "Cancel", "","" },            // "audio sampling" 
dialog
        { "OK", "Preview", "Cancel", "","" }              // sample editor 
effects filters
@@ -48,7 +48,7 @@
        { SDLK_y, SDLK_n, 0,      0,      0 },
 
        // custom dialogs
-       { SDLK_a, SDLK_s, SDLK_i, SDLK_c, 0 }, // "song clear" dialog
+       { SDLK_e, SDLK_s, SDLK_i, SDLK_c, 0 }, // "song clear" dialog
        { SDLK_l, SDLK_r, SDLK_c, 0,      0 }, // "stereo sample loader" dialog 
        { SDLK_m, SDLK_s, SDLK_c, 0,      0 }, // "audio sampling" dialog
        { SDLK_o, SDLK_p, SDLK_c, 0,      0 }  // sample editor effects filters
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.22/src/mixer/ft2_mix_macros.h 
new/ft2-clone-2.23/src/mixer/ft2_mix_macros.h
--- old/ft2-clone-2.22/src/mixer/ft2_mix_macros.h       2026-07-19 
18:34:04.000000000 +0200
+++ new/ft2-clone-2.23/src/mixer/ft2_mix_macros.h       2026-08-23 
12:26:06.000000000 +0200
@@ -130,21 +130,21 @@
 /*                       CUBIC SPLINE INTERPOLATION                        */
 /* ----------------------------------------------------------------------- */
 
-// Catmull-Rom algorithm
+// Catmull-Rom algorithm (with unity gain)
 #define CUBIC_SPLINE_INTERPOLATION(s, f, scale) \
 { \
        const int32_t frac31 = (uint32_t)f >> 1; /* reduce from uint32_t to 
int32_t for fast SIMD usage */ \
-       const float x = frac31 * (1.0f / ((float)INT32_MAX+1.0f)); \
+       const float x = (float)frac31 * (1.0f / ((float)INT32_MAX+1.0f)); \
        \
-       const float v0 = s[-1]; \
-       const float v1 = s[0]; \
-       const float v2 = s[1]; \
-       const float v3 = s[2]; \
+       const float s1 = s[-1]; \
+       const float s2 = s[0]; \
+       const float s3 = s[1]; \
+       const float s4 = s[2]; \
        \
-       const float c1 = v1; \
-       const float c2 = 0.5f * (v2 - v0); \
-       const float c3 = v0 - (2.5f * v1) + (2.0f * v2) - (0.5f * v3); \
-       const float c4 = 0.5f * (v3 - v0) + 1.5f * (v1 - v2); \
+       const float c1 = s2; \
+       const float c2 = 0.5f * (s3 - s1); \
+       const float c3 = s1 - (2.5f * s2) + (2.0f * s3) - (0.5f * s4); \
+       const float c4 = 0.5f * (s4 - s1) + 1.5f * (s2 - s3); \
        \
        fSample = (((c4 * x + c3) * x + c2) * x + c1) * (1.0f / scale); \
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ft2-clone-2.22/src/mixer/ft2_windowed_sinc.c 
new/ft2-clone-2.23/src/mixer/ft2_windowed_sinc.c
--- old/ft2-clone-2.22/src/mixer/ft2_windowed_sinc.c    2026-07-19 
18:34:04.000000000 +0200
+++ new/ft2-clone-2.23/src/mixer/ft2_windowed_sinc.c    2026-08-23 
12:26:06.000000000 +0200
@@ -43,6 +43,7 @@
        sincKernel_t *k = sincKernelConfig;
        for (int32_t i = 0; i < SINC_KERNELS; i++, k++)
        {
+               // (+1 comes from the need for an additional phase for 
interpolation)
                 fSinc8[i] = (float *)malloc((SINC_OVERSAMPLING+1) *  
SINC8_TAPS * sizeof (float));
                fSinc16[i] = (float *)malloc((SINC_OVERSAMPLING+1) * 
SINC16_TAPS * sizeof (float));
 
@@ -162,10 +163,9 @@
                        *fOutPtr++ = (float)(tapBuffer[j] * tapMul);
        }
 
-       // store inverted wrap-around taps after end of LUT (for phase 
interpolation)
-       float *fEnd = &fOut[numTaps * numPhases];
+       // store inverted copy of first phase after end of LUT (for 
interpolation look-up)
        for (int32_t i = 0; i < numTaps; i++)
-               fEnd[i] = fOut[(numTaps-1) - i];
+               *fOutPtr++ = fOut[(numTaps-1) - i];
 
        free(tapBuffer);
        return true;

Reply via email to