Merge branch 'main' into feat/asclepius

This commit is contained in:
Julian Frohmüller
2026-04-22 20:47:27 +02:00
8 changed files with 1345 additions and 254 deletions
+54
View File
@@ -0,0 +1,54 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Debug OpenSuperClone",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/Debug/bin/opensuperclone",
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"miDebuggerServerAddress": "localhost:2345",
"cwd": "${workspaceFolder}/Debug/bin",
"useExtendedRemote": true,
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Use local filesystem instead of transferring from remote target",
"text": "set sysroot /",
"ignoreFailures": true
}
]
},
{
"name": "Debug OSCViewer",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/Debug/bin/oscviewer",
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"miDebuggerServerAddress": "localhost:2345",
"cwd": "${workspaceFolder}/Debug/bin",
"useExtendedRemote": true,
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Use local filesystem instead of transferring from remote target",
"text": "set sysroot /",
"ignoreFailures": true
}
]
}
]
}
+16
View File
@@ -25,6 +25,22 @@
"clear": true
}
},
{
// Run OpenSuperClone with GDBServer (as root)
"label": "🐞 Run OpenSuperClone with GDBServer",
"type": "shell",
"linux": {
"command": "[ -f ./Debug/bin/opensuperclone ] || ./build.sh debug && sudo gdbserver localhost:2345 ${workspaceFolder}/Debug/bin/opensuperclone"
}
},
{
// Run OSCViewer with GDBServer
"label": "🐞 Run OSCViewer with GDBServer",
"type": "shell",
"linux": {
"command": "[ -f ./Debug/bin/oscviewer ] || ./build.sh debug && gdbserver localhost:2345 ${workspaceFolder}/Debug/bin/opensuperclone"
}
},
{
// Build Release.
"label": "🔧 Build Release",
+2 -1
View File
@@ -60,7 +60,8 @@ Note that the Wiki is currently a work-in-progress and incomplete.
#### OpenSuperClone 2.5.1 (Work-In-Progress)
* OSCDriver 2.6.8: add support up to kernel 6.18.0 (thanks to <a href="https://github.com/ISpillMyDrink/OpenSuperClone/pull/30">piernov</a>)
* Add ability to save and load recovery settings
* Add ability to save and load recovery settings, and change default settings for program start
* OSCViewer: performance improvements and improved UI
#### OpenSuperClone 2.5
+3
View File
@@ -486,6 +486,9 @@ char *default_asclepius_config_filename = "asclepius.cfg";
int default_window_width = 1350;
int default_window_height = 670;
int default_window_width = 1150;
int default_window_height = 690;
void select_file_ccc(void);
void select_ddrescue_file_ccc(void);
+3
View File
@@ -46,6 +46,9 @@ target_link_directories(oscviewer PRIVATE ${LIBCONFIG_LIBRARY_DIRS})
target_compile_options(oscviewer PRIVATE ${LIBCONFIG_CFLAGS_OTHER})
target_link_libraries(oscviewer ${LIBCONFIG_LIBRARIES})
# Add libm dependency
target_link_libraries(oscviewer m)
target_compile_options(oscviewer PRIVATE ${CC_OPTIONS})
# Install executable
+920 -253
View File
File diff suppressed because it is too large Load Diff
+295
View File
@@ -89,6 +89,13 @@
<object class="GtkMenu">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkMenuItem" id="jumpcurrentmi">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Jump to Current</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="leftresolutionmi">
<property name="visible">True</property>
@@ -555,6 +562,13 @@
<property name="label" translatable="yes">Show Domain</property>
</object>
</child>
<child>
<object class="GtkCheckMenuItem" id="followcurrentcheck">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Follow Current on Auto-Update</property>
</object>
</child>
</object>
</child>
</object>
@@ -1292,6 +1306,287 @@
<property name="position">13</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">14</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="settings_view_label">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">5</property>
<property name="label" translatable="yes">View Settings</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">15</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Main Grid Size</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="settings_main_grid_size_combo">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">16</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Auto-Update</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="settings_auto_update_combo">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">17</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Show High-Time</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="settings_show_timing_combo">
<property name="visible">True</property>
<property name="can-focus">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">18</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Highlight Good Data</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="settings_show_good_data_check">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">19</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Show Bad Head</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="settings_show_bad_head_check">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">20</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Show Domain</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="settings_show_domain_check">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">21</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="xpad">10</property>
<property name="label" translatable="yes">Follow Current on Auto-Update</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="settings_follow_current_check">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">22</property>
</packing>
</child>
</object>
</child>
</object>
+52
View File
@@ -103,6 +103,23 @@ GtkWidget *left_drawing_area;
GtkWidget *main_scrolled_window;
GtkWidget *main_drawing_vbox;
// cached render surfaces
cairo_surface_t *top_render_cache;
cairo_surface_t *main_render_cache;
cairo_surface_t *left_render_cache;
gboolean top_render_cache_dirty;
gboolean main_render_cache_dirty;
gboolean left_render_cache_dirty;
gint top_render_cache_width;
gint top_render_cache_height;
gint main_render_cache_width;
gint main_render_cache_height;
gdouble main_render_cache_scroll_position;
gint main_render_cache_clip_x;
gint main_render_cache_clip_y;
gint left_render_cache_width;
gint left_render_cache_height;
// main window widgets
GtkWidget *progress_log_label;
GtkWidget *domain_log_label;
@@ -134,6 +151,14 @@ GtkWidget *time_color_label;
GtkWidget *domain_color_label;
GtkWidget *block_color_label;
GtkWidget *marker_color_label;
GtkWidget *settings_view_label;
GtkWidget *settings_main_grid_size_combo;
GtkWidget *settings_auto_update_combo;
GtkWidget *settings_show_good_data_check;
GtkWidget *settings_show_bad_head_check;
GtkWidget *settings_show_domain_check;
GtkWidget *settings_show_timing_combo;
GtkWidget *settings_follow_current_check;
// file menu
GtkWidget *filemenu;
@@ -179,6 +204,7 @@ GtkWidget *mainsizebutton2m;
GtkWidget *mainsizebutton4m;
GtkWidget *mainsizebutton8m;
GtkWidget *mainsizebutton16m;
GtkWidget *jumpcurrentmi;
GtkWidget *autoupdatemi;
GtkWidget *autoupdatemenu;
GtkWidget *autoupdatebuttonoff;
@@ -190,6 +216,7 @@ GtkWidget *autoupdatebutton2m;
GtkWidget *autoupdatebutton5m;
GtkWidget *showbadcheck;
GtkWidget *showdomaincheck;
GtkWidget *followcurrentcheck;
GtkWidget *optionsw;
GSList *leftresgroup = NULL;
GSList *mainresgroup = NULL;
@@ -276,12 +303,15 @@ int selected_color = WHITE;
int time_color = MAGENTA;
int domain_color = MYBLUE;
int main_grid_size = MAINGRIDSIZE;
int auto_update_interval = 0;
gint timeout_tag = 0;
int autotimer_on = 0;
int show_bad_head = 0;
int show_good_data = 0;
int show_timing = 0;
int show_domain = 0;
int follow_current_on_update = 0;
gboolean updating_preferences = FALSE;
int mouse_x = 0;
int mouse_y = 0;
int mouse_x_old = 0;
@@ -301,6 +331,10 @@ static gboolean left_drawing_expose_event(GtkWidget *self, cairo_t *cr, gpointer
static gboolean top_drawing_expose_event(GtkWidget *self, cairo_t *cr, gpointer user_data);
static void invalidate_render_caches(gboolean top_dirty, gboolean main_dirty, gboolean left_dirty);
static void clear_render_cache(cairo_surface_t **surface, gint *width, gint *height);
void getsize_top_drawing_area(GtkWidget *widget, GtkAllocation *allocation, void *data);
void getsize_main_drawing_area(GtkWidget *widget, GtkAllocation *allocation, void *data);
@@ -315,8 +349,24 @@ void change_main_resolution(GtkWidget *w, gpointer data);
void change_main_grid_size(GtkWidget *w, gpointer data);
void settings_main_grid_size_changed(GtkWidget *w, gpointer data);
void settings_auto_update_changed(GtkWidget *w, gpointer data);
void settings_show_timing_changed(GtkWidget *w, gpointer data);
void settings_toggle_show_good(GtkWidget *w, gpointer data);
void settings_toggle_show_bad(GtkWidget *w, gpointer data);
void settings_toggle_show_domain(GtkWidget *w, gpointer data);
void settings_toggle_follow_current(GtkWidget *w, gpointer data);
void change_left_resolution(GtkWidget *w, gpointer data);
void jump_to_current(GtkWidget *w, gpointer data);
int initialize_memory(void);
int increase_log_memory(int new_lines);
@@ -361,6 +411,8 @@ void set_show_timing(GtkWidget *w, gpointer data);
void toggle_showdomain(GtkWidget *w, gpointer data);
void toggle_follow_current_menu(GtkWidget *w, gpointer data);
int check_log(void);
void select_file(void);