-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
368 additions
and
0 deletions.
There are no files selected for viewing
368 changes: 368 additions & 0 deletions
368
srcpkgs/shotwell/patches/shotwell-0.31.3-vapi_fixes.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,368 @@ | ||
From 9a9876e27076f5939525023eb8c7f24d48c8ff25 Mon Sep 17 00:00:00 2001 | ||
From: Jens Georg <mail@jensge.org> | ||
Date: Sun, 14 Mar 2021 11:21:10 +0100 | ||
Subject: [PATCH 1/6] vapis: Plug memory leak in GPhoto2 | ||
|
||
Caller was supposed to free the StorageInfo, which with the old binding | ||
we never did | ||
--- | ||
src/camera/GPhoto.vala | 5 +++-- | ||
src/camera/ImportPage.vala | 14 ++++++-------- | ||
vapi/libgphoto2.vapi | 2 +- | ||
3 files changed, 10 insertions(+), 11 deletions(-) | ||
|
||
diff --git a/src/camera/GPhoto.vala b/src/camera/GPhoto.vala | ||
index aa2fcf2b..64ff7ca0 100644 | ||
--- a/src/camera/GPhoto.vala | ||
+++ b/src/camera/GPhoto.vala | ||
@@ -135,9 +135,10 @@ namespace GPhoto { | ||
// filesystem. In these cases shotwell can access the file directly. See: | ||
// https://bugzilla.gnome.org/show_bug.cgi?id=716915 | ||
public PhotoMetadata? get_fallback_metadata(Camera camera, Context context, string folder, string filename) { | ||
- GPhoto.CameraStorageInformation *sifs = null; | ||
+ // Fixme: Why do we need to query get_storageinfo here first? | ||
+ GPhoto.CameraStorageInformation[] sifs = null; | ||
int count = 0; | ||
- camera.get_storageinfo(&sifs, out count, context); | ||
+ camera.get_storageinfo(out sifs, context); | ||
|
||
GPhoto.PortInfo port_info; | ||
camera.get_port_info(out port_info); | ||
diff --git a/src/camera/ImportPage.vala b/src/camera/ImportPage.vala | ||
index ab24df61..c424de88 100644 | ||
--- a/src/camera/ImportPage.vala | ||
+++ b/src/camera/ImportPage.vala | ||
@@ -1179,9 +1179,9 @@ public class ImportPage : CheckerboardPage { | ||
|
||
Gee.ArrayList<ImportSource> import_list = new Gee.ArrayList<ImportSource>(); | ||
|
||
- GPhoto.CameraStorageInformation *sifs = null; | ||
+ GPhoto.CameraStorageInformation[] sifs = null; | ||
int count = 0; | ||
- refresh_result = dcamera.gcamera.get_storageinfo(&sifs, out count, spin_idle_context.context); | ||
+ refresh_result = dcamera.gcamera.get_storageinfo(out sifs, spin_idle_context.context); | ||
if (refresh_result == GPhoto.Result.OK) { | ||
for (int fsid = 0; fsid < count; fsid++) { | ||
// Check well-known video and image paths first to prevent accidental | ||
@@ -1324,18 +1324,16 @@ public class ImportPage : CheckerboardPage { | ||
// Need to do this because some phones (iPhone, in particular) changes the name of their filesystem | ||
// between each mount | ||
public static string? get_fs_basedir(GPhoto.Camera camera, int fsid) { | ||
- GPhoto.CameraStorageInformation *sifs = null; | ||
+ GPhoto.CameraStorageInformation[] sifs = null; | ||
int count = 0; | ||
- GPhoto.Result res = camera.get_storageinfo(&sifs, out count, null_context.context); | ||
+ GPhoto.Result res = camera.get_storageinfo(out sifs, null_context.context); | ||
if (res != GPhoto.Result.OK) | ||
return null; | ||
|
||
- if (fsid >= count) | ||
+ if (fsid >= sifs.length) | ||
return null; | ||
|
||
- GPhoto.CameraStorageInformation *ifs = sifs + fsid; | ||
- | ||
- return (ifs->fields & GPhoto.CameraStorageInfoFields.BASE) != 0 ? ifs->basedir : "/"; | ||
+ return (sifs[fsid].fields & GPhoto.CameraStorageInfoFields.BASE) != 0 ? sifs[fsid].basedir : "/"; | ||
} | ||
|
||
public static string? get_fulldir(GPhoto.Camera camera, string camera_name, int fsid, string folder) { | ||
diff --git a/vapi/libgphoto2.vapi b/vapi/libgphoto2.vapi | ||
index 22f70eed..7e569823 100644 | ||
--- a/vapi/libgphoto2.vapi | ||
+++ b/vapi/libgphoto2.vapi | ||
@@ -64,7 +64,7 @@ namespace GPhoto { | ||
public Result set_port_info(PortInfo info); | ||
public Result get_abilities(out CameraAbilities abilities); | ||
public Result set_abilities(CameraAbilities abilities); | ||
- public Result get_storageinfo(CameraStorageInformation **sifs, out int count, Context context); | ||
+ public Result get_storageinfo([CCode (array_length_pos=1)]out CameraStorageInformation[] sifs, Context context); | ||
|
||
// Folders | ||
[CCode (cname="gp_camera_folder_list_folders")] | ||
-- | ||
2.31.1 | ||
|
||
From e1f53784dd7475388470a30683df34b5ca7784eb Mon Sep 17 00:00:00 2001 | ||
From: Jens Georg <mail@jensge.org> | ||
Date: Sat, 13 Mar 2021 23:22:50 +0100 | ||
Subject: [PATCH 2/6] More GPhoto2 vapi fixes | ||
|
||
--- | ||
vapi/libgphoto2.vapi | 25 ++++++++++++------------- | ||
1 file changed, 12 insertions(+), 13 deletions(-) | ||
|
||
diff --git a/vapi/libgphoto2.vapi b/vapi/libgphoto2.vapi | ||
index 7e569823..607a644f 100644 | ||
--- a/vapi/libgphoto2.vapi | ||
+++ b/vapi/libgphoto2.vapi | ||
@@ -53,7 +53,7 @@ namespace GPhoto { | ||
ref_function="GPHOTO_REF_CAMERA", | ||
unref_function="gp_camera_unref", | ||
free_function="gp_camera_free", | ||
- cheader_filename="gphoto2/gphoto2-camera.h,gphoto.h" | ||
+ cheader_filename="gphoto2/gphoto2-camera.h,gphoto2.h" | ||
)] | ||
public class Camera { | ||
[CCode (cname="gp_camera_new")] | ||
@@ -74,7 +74,7 @@ namespace GPhoto { | ||
[CCode (cname="gp_camera_folder_delete_all")] | ||
public Result delete_all_files(string folder, Context context); | ||
[CCode (cname="gp_camera_folder_put_file")] | ||
- public Result put_file(string folder, CameraFile file, Context context); | ||
+ public Result put_file(string folder, string filename, CameraFileType type, CameraFile file, Context context); | ||
[CCode (cname="gp_camera_folder_make_dir")] | ||
public Result make_dir(string folder, string name, Context context); | ||
[CCode (cname="gp_camera_folder_remove_dir")] | ||
@@ -99,7 +99,7 @@ namespace GPhoto { | ||
ref_function="GPHOTO_REF_FILE", | ||
unref_function="gp_file_unref", | ||
free_function="gp_file_free", | ||
- cheader_filename="gphoto2/gphoto2-file.h,gphoto.h" | ||
+ cheader_filename="gphoto2/gphoto2-file.h,gphoto2.h" | ||
)] | ||
public class CameraFile { | ||
[CCode (cname="gp_file_new")] | ||
@@ -140,7 +140,6 @@ namespace GPhoto { | ||
public enum CameraFileInfoFields { | ||
NONE, | ||
TYPE, | ||
- NAME, | ||
SIZE, | ||
WIDTH, | ||
HEIGHT, | ||
@@ -159,7 +158,7 @@ namespace GPhoto { | ||
public CameraFileInfoFields fields; | ||
public CameraFileStatus status; | ||
public ulong size; | ||
- public string type; | ||
+ public char type[64]; | ||
public uint width; | ||
public uint height; | ||
public string name; | ||
@@ -176,7 +175,7 @@ namespace GPhoto { | ||
public CameraFileInfoFields fields; | ||
public CameraFileStatus status; | ||
public ulong size; | ||
- public string type; | ||
+ public char type[64]; | ||
public uint width; | ||
public uint height; | ||
public string name; | ||
@@ -257,7 +256,7 @@ namespace GPhoto { | ||
ref_function="GPHOTO_REF_LIST", | ||
unref_function="gp_list_unref", | ||
free_function="gp_list_free", | ||
- cheader_filename="gphoto2/gphoto2-list.h,gphoto.h" | ||
+ cheader_filename="gphoto2/gphoto2-list.h,gphoto2.h" | ||
)] | ||
public class CameraList { | ||
[CCode (cname="gp_list_new")] | ||
@@ -266,7 +265,7 @@ namespace GPhoto { | ||
public Result append(string name, string value); | ||
public Result reset(); | ||
public Result sort(); | ||
- public Result find_by_name(out int? index, string name); | ||
+ public Result find_by_name(out int index, string name); | ||
public Result get_name(int index, out unowned string name); | ||
public Result get_value(int index, out unowned string value); | ||
public Result set_name(int index, string name); | ||
@@ -314,9 +313,9 @@ namespace GPhoto { | ||
)] | ||
public struct CameraStorageInformation { | ||
public CameraStorageInfoFields fields; | ||
- public string basedir; | ||
- public string label; | ||
- public string description; | ||
+ public char basedir[256]; | ||
+ public char label[256]; | ||
+ public char description[256]; | ||
public int type; | ||
public int fstype; | ||
public int access; | ||
@@ -329,7 +328,7 @@ namespace GPhoto { | ||
[CCode ( | ||
ref_function="GPHOTO_REF_CONTEXT", | ||
unref_function="gp_context_unref", | ||
- cheader_filename="gphoto2/gphoto2-context.h,gphoto.h" | ||
+ cheader_filename="gphoto2/gphoto2-context.h,gphoto2.h" | ||
)] | ||
public class Context { | ||
[CCode (cname="gp_context_new")] | ||
@@ -485,7 +484,7 @@ namespace GPhoto { | ||
|
||
[CCode ( | ||
cheader_filename="gphoto2/gphoto2-version.h", | ||
- cprefix="GP_VERSION" | ||
+ cprefix="GP_VERSION_" | ||
)] | ||
public enum VersionVerbosity { | ||
SHORT, | ||
-- | ||
2.31.1 | ||
|
||
From 754520638beafa997d81fdbff58a9d07a48f7cfd Mon Sep 17 00:00:00 2001 | ||
From: Jens Georg <mail@jensge.org> | ||
Date: Sat, 13 Mar 2021 22:31:32 +0100 | ||
Subject: [PATCH 3/6] vapis: Fix gphoto2 vapi | ||
|
||
There was some copy-paste going on there that didn't actually match the | ||
C structs | ||
--- | ||
vapi/libgphoto2.vapi | 4 ---- | ||
1 file changed, 4 deletions(-) | ||
|
||
diff --git a/vapi/libgphoto2.vapi b/vapi/libgphoto2.vapi | ||
index 607a644f..adcef5c5 100644 | ||
--- a/vapi/libgphoto2.vapi | ||
+++ b/vapi/libgphoto2.vapi | ||
@@ -161,7 +161,6 @@ namespace GPhoto { | ||
public char type[64]; | ||
public uint width; | ||
public uint height; | ||
- public string name; | ||
public CameraFilePermissions permissions; | ||
public time_t mtime; | ||
} | ||
@@ -178,9 +177,6 @@ namespace GPhoto { | ||
public char type[64]; | ||
public uint width; | ||
public uint height; | ||
- public string name; | ||
- public CameraFilePermissions permissions; | ||
- public time_t mtime; | ||
} | ||
|
||
[CCode ( | ||
-- | ||
2.31.1 | ||
|
||
From f7d044e7a72b80a550fd1907a2d56053caab1ae3 Mon Sep 17 00:00:00 2001 | ||
From: Jens Georg <mail@jensge.org> | ||
Date: Sat, 13 Mar 2021 22:32:17 +0100 | ||
Subject: [PATCH 4/6] Fix strings in [SimpleType] structs | ||
|
||
--- | ||
src/camera/ImportPage.vala | 5 +++-- | ||
vapi/libraw.vapi | 2 +- | ||
2 files changed, 4 insertions(+), 3 deletions(-) | ||
|
||
diff --git a/src/camera/ImportPage.vala b/src/camera/ImportPage.vala | ||
index c424de88..f5e98955 100644 | ||
--- a/src/camera/ImportPage.vala | ||
+++ b/src/camera/ImportPage.vala | ||
@@ -1408,12 +1408,13 @@ public class ImportPage : CheckerboardPage { | ||
import_list.add(video_source); | ||
} else { | ||
// determine file format from type, and then from file extension | ||
- PhotoFileFormat file_format = PhotoFileFormat.from_gphoto_type(info.file.type); | ||
+ string file_type = (string)info.file.type; | ||
+ PhotoFileFormat file_format = PhotoFileFormat.from_gphoto_type(file_type); | ||
if (file_format == PhotoFileFormat.UNKNOWN) { | ||
file_format = PhotoFileFormat.get_by_basename_extension(filename); | ||
if (file_format == PhotoFileFormat.UNKNOWN) { | ||
message("Skipping %s/%s: Not a supported file extension (%s)", fulldir, | ||
- filename, info.file.type); | ||
+ filename, file_type); | ||
|
||
continue; | ||
} | ||
diff --git a/vapi/libraw.vapi b/vapi/libraw.vapi | ||
index b1b5875b..146f447e 100644 | ||
--- a/vapi/libraw.vapi | ||
+++ b/vapi/libraw.vapi | ||
@@ -248,7 +248,7 @@ public struct Thumbnail { | ||
public uint tlength; | ||
public int tcolors; | ||
[CCode (array_length_cname="tlength")] | ||
- public uint8[] thumb; | ||
+ public unowned uint8[] thumb; | ||
} | ||
|
||
[CCode (cname="enum LibRaw_thumbnail_formats", cprefix="LIBRAW_THUMBNAIL_")] | ||
-- | ||
2.31.1 | ||
|
||
From a035ff6ee39dc47c6051f7b29c7da83d3ecde52e Mon Sep 17 00:00:00 2001 | ||
From: Jens Georg <mail@jensge.org> | ||
Date: Sun, 14 Mar 2021 11:21:10 +0100 | ||
Subject: [PATCH 5/6] Fix compile error after GPhoto vapi change | ||
|
||
--- | ||
src/camera/ImportPage.vala | 2 +- | ||
1 file changed, 1 insertion(+), 1 deletion(-) | ||
|
||
diff --git a/src/camera/ImportPage.vala b/src/camera/ImportPage.vala | ||
index f5e98955..7dbe9d42 100644 | ||
--- a/src/camera/ImportPage.vala | ||
+++ b/src/camera/ImportPage.vala | ||
@@ -1333,7 +1333,7 @@ public class ImportPage : CheckerboardPage { | ||
if (fsid >= sifs.length) | ||
return null; | ||
|
||
- return (sifs[fsid].fields & GPhoto.CameraStorageInfoFields.BASE) != 0 ? sifs[fsid].basedir : "/"; | ||
+ return (GPhoto.CameraStorageInfoFields.BASE in sifs[fsid].fields) ? (string) sifs[fsid].basedir : "/"; | ||
} | ||
|
||
public static string? get_fulldir(GPhoto.Camera camera, string camera_name, int fsid, string folder) { | ||
-- | ||
2.31.1 | ||
|
||
From 44dae743da462742f1acdeb599f0a10afa43e629 Mon Sep 17 00:00:00 2001 | ||
From: Jens Georg <mail@jensge.org> | ||
Date: Sun, 14 Mar 2021 12:22:55 +0100 | ||
Subject: [PATCH 6/6] Fix and clarify the helper header for GPhoto | ||
|
||
--- | ||
vapi/libgphoto2.vapi | 8 ++++---- | ||
vapi/{gphoto.h => shotwell-gphoto-helper.h} | 0 | ||
2 files changed, 4 insertions(+), 4 deletions(-) | ||
rename vapi/{gphoto.h => shotwell-gphoto-helper.h} (100%) | ||
|
||
diff --git a/vapi/libgphoto2.vapi b/vapi/libgphoto2.vapi | ||
index adcef5c5..aeab7255 100644 | ||
--- a/vapi/libgphoto2.vapi | ||
+++ b/vapi/libgphoto2.vapi | ||
@@ -53,7 +53,7 @@ namespace GPhoto { | ||
ref_function="GPHOTO_REF_CAMERA", | ||
unref_function="gp_camera_unref", | ||
free_function="gp_camera_free", | ||
- cheader_filename="gphoto2/gphoto2-camera.h,gphoto2.h" | ||
+ cheader_filename="gphoto2/gphoto2-camera.h,shotwell-gphoto-helper.h" | ||
)] | ||
public class Camera { | ||
[CCode (cname="gp_camera_new")] | ||
@@ -99,7 +99,7 @@ namespace GPhoto { | ||
ref_function="GPHOTO_REF_FILE", | ||
unref_function="gp_file_unref", | ||
free_function="gp_file_free", | ||
- cheader_filename="gphoto2/gphoto2-file.h,gphoto2.h" | ||
+ cheader_filename="gphoto2/gphoto2-file.h,shotwell-gphoto-helper.h" | ||
)] | ||
public class CameraFile { | ||
[CCode (cname="gp_file_new")] | ||
@@ -252,7 +252,7 @@ namespace GPhoto { | ||
ref_function="GPHOTO_REF_LIST", | ||
unref_function="gp_list_unref", | ||
free_function="gp_list_free", | ||
- cheader_filename="gphoto2/gphoto2-list.h,gphoto2.h" | ||
+ cheader_filename="gphoto2/gphoto2-list.h,shotwell-gphoto-helper.h" | ||
)] | ||
public class CameraList { | ||
[CCode (cname="gp_list_new")] | ||
@@ -324,7 +324,7 @@ namespace GPhoto { | ||
[CCode ( | ||
ref_function="GPHOTO_REF_CONTEXT", | ||
unref_function="gp_context_unref", | ||
- cheader_filename="gphoto2/gphoto2-context.h,gphoto2.h" | ||
+ cheader_filename="gphoto2/gphoto2-context.h,shotwell-gphoto-helper.h" | ||
)] | ||
public class Context { | ||
[CCode (cname="gp_context_new")] | ||
diff --git a/vapi/gphoto.h b/vapi/shotwell-gphoto-helper.h | ||
similarity index 100% | ||
rename from vapi/gphoto.h | ||
rename to vapi/shotwell-gphoto-helper.h | ||
-- | ||
2.31.1 | ||
|