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;
