This fixes e.g. Windows EXE thumbnailing, which is supported by another
plugin on KDE, but not by rom-properties; however, rom-properties *does*
support EXE for properties functions. With both ThumbCreator and
KPropertiesDialog in one .desktop file, all MIME types were taken over
by rom-properties for ThumbCreator, even if those types weren't supported.
The JSON output code will be rewritten to use rapidjson, which will allow
us to add more stuff without having to worry if the resulting text has
the correct formatting.
This adds around 20 KB to the compiled binary.
I chose MiniLZO instead of regular LZO because we only need to be able to
decompress LZO1X blocks.
[libromdata] CisoPspReader: Don't call lzo_init() if this JISO isn't
actually using LZO. Otherwise, if the DLL is missing on Windows, the
program will crash.
- Renamed the gnome package to gtk3.
- gtk3-common is now part of gtk3.
- gtk3 now depends on thumbnailer-dbus.
- gtk3 has gnome in Conflicts/Replaces.
The XFCE (GTK+ 2.x) version is kept as-is.
Note that while the desktop-specific dev packages aren't needed anymore,
we're still listing them as build dependencies in order to ensure that
the extensions directory is correct.
Forgot to do this before merging the feature/combine-gnome3-plugins branch.
[gnome] CMakeLists.txt: Find LibNautilusExtension, LibCajaExtension,
and LibNemoExtension to install symlinks. If any of them aren't found,
a default value will be used.
- Check for both __SNR_* and __NR_*. libseccomp-2.4.2 added the __SNR_*
macros, but Ubuntu 19.10 has libseccomp-2.4.1. (Ubuntu 20.04 has
libseccomp-2.4.2.)
- #include <linux/unistd.h> to ensure the __NR_* macros are defined.
- debian/rules: Explicitly enable seccomp and disable seccomp debugging.
Needed for rp-download.
NOTE: Not rebuilding the Ubuntu 16.04 "Xenial Xerus" packages right now.
This is a minor issue and can be remedied by installing the
rom-properties-utils package manually.
(cherry picked from commit 8642c59004)
Since we can't get it working with 32-bit MinGW-w64, we'll just add our
own implementation that we'll use if timegm() and _mkgmtime() aren't
available.
TODO: Add a unit test to ensure that it's working correctly.
It's more efficient than loading the system MIME database, and it's more
accurate, since we already checked the ROM to determine what it is, and
the file extension might be incorrect and/or not specific enough.
Example: DSi-only ROM with a .nds extension.
[kde4] Removed MimeGlobsParser and config.kde4.h.in.
[debian] Removed the shared-mime-info dependency for the KDE4 UI frontend.
[doc] Removed the shared-mime-info mention for the KDE4 UI frontend.
No actual changes, but the license is now LGPL-2.1+ instead of GPL-3+.
The version in gettext seems to have always been LGPL, so I'm not sure
why mine was GPL.
[debian] copyright: Added gettext.h license information.
- s/poublisher/publisher/
- Use https for the GNU website.
- Added LGPL-2.1+.
- Updated LGPL-2.1 to refer to LGPL, not GPL.
This should have been done in commit b3f17f6318
([libi18n] gettext.h: Rebased to gettext-0.20.1's version.)
but it wasn't for some reason.
Using GCR_Cmake macros from: https://github.com/Makman2/GCR_CMake
Currently loading the full 16x16 sprite sheet as the icon for each
dropdown entry. This is obviously wrong, but it works as a basic
test for now.
PIMGTYPE.cpp: New function PIMGTYPE_load_png_from_gresource(). This
function loads a PNG image from the glibresources and returns it as
PIMGTYPE. This does *not* use rp_image at all; it uses Cairo's
built-in PNG loading functionality.
TODO: GdkPixbuf version.
Related bug report for LibreOffice:
https://bugs.documentfoundation.org/show_bug.cgi?id=125922
NOTE: dll-search.c still checks for "KDE5" for compatibility.
NOTE 2 We did NOT include "KDE5" in the forwarding plugins for
compatibility because they shouldn't be mixed-and-matched with
rom-properties versions.
The AppArmor profile has the following permissions, with everything else
denied:
- Allow TCP network access to download from online image databases.
- Allow read access to rom-properties.conf.
- Allow write access to .cache/rom-properties/.
[rp-download] Cache keys have the file extension, so we shouldn't add
it here. We *are* verifying that the file extension is supported, and
we have to remove it for amiibo.
CurlDownloader: Reduced the timeout to 10 seconds.
Install to the libexec directory.
[debian] Renamed rom-properties-stub to rom-properties-utils.
rp-download is now included as part of this package.
It seems that the R and B channels are backwards, so we'll need to fix
that next. Other than that, both 2bpp and 4bpp decoding seems to work.
(A lot better than my terrible attempt, at least.)
[cmake] options.cmake: Added an option for PVRTC. The code is licensed
under the MIT license, but we might as well provide an option for it
because it's third-party code instead of my own code.
TODO:
- Fix R/B channel ordering.
- PVRTC-II decoding?
- Add PVRTC decoding to KTX and DDS.
Moved it up from the gnome directory to the gtk3 directory.
NOTE: We can't add a MATE package right now because the earliest version
of Ubuntu I'm still supporting is 16.04, and that has MATE 1.12 (GTK2).
I'll add the MATE (and XFCE GTK3) packaging files in branches for the
appropriate Ubuntu verisons:
- Ubuntu 16.04 LTS: MATE 1.12.7 (GTK2), Thunar 1.6.11 (GTK2)
- Ubuntu 18.04 LTS: MATE 1.20.2 (GTK3), Thunar 1.6.15 (GTK2)
- Ubuntu 18.10: MATE 1.20.2 (GTK3), Thunar 1.8.1 (GTK3)
- Ubuntu 19.04: MATE 1.20.3 (GTK3), Thunar 1.8.4 (GTK3)
This is a stripped-down version of libmspack containing only the necessary
functionality for Xbox 360 executables.
Xenia commit: e706cf0d5413c31b7e80a50411cc88cc7c71af30
License: LGPLv2.1
config.h.in: Modified for cmake; removed unnecessary checks.
debian/copyright: Added copyright information.
cmake/options.cmake: Added an ENABLE_LIBMSPACK option. (default is ON)
Currently returns "security-medium" for all URLs.
TODO:
- The JSON file is not currently used. Should use kcoreaddons_add_plugin()
in CMake to make use of it.
- Consolidate common code in the plugin forwarders into a templated class.
(Or don't; it's not *that* much duplicated code...)
- Actually check the RomData subclass for overlay icons.
* GameCube: Fixed a crash when downloading external images for Disc 2
from multi-disc games. Thanks to @Nomelas for reporting this bug.
Conflicts:
CMakeLists.txt
NEWS.md
* Linux: Fixed a crash on GNOME and XFCE when using Ubuntu 16.04.
IFUNC was not being disabled on gcc5 in the GTK+ directory.
* XFCE: The Specialized Thumbnailer file has a MimeTypes key, not MimeType.
Conflicts:
CMakeLists.txt
NEWS.md
Note that Qt's plugin system only allows exporting a single plugin
interface per .so file. ThumbCreator doesn't use the Qt plugin system,
but KPropertiesDialogPlugin does. Hence, for KFileMetaData, we're using
a forwarder library that exports the plugin, then creates the actual
plugin by calling into rom-properties-kde5.
Currently, only ADX files ("audio/x-adx") are supported, and a fixed
value (1234 seconds; 20:34) is returned. The next step is adding metadata
functions to the RomData subclasses.
NOTE: On Dolphin 5.46.0, file metadata doesn't show up unless system-wide
indexing is disabled. I'm guessing that if indexing is enabled, it only
reads from the cache, and these values haven't been cached yet because
the plugin is new; whereas if it's disabled, it fetches the properties
immediately.
FIXME: Ubuntu 16.04 doesn't have the KDE4 version of KFileMetaData.
I'll need to install an older version in order to ensure the plugin
works there. KFileMetaData is disabled on KDE4 for now.
NOTE: The RpExtractorPlugin and RpExtractorPluginForwarder files are
located in kde5/. This is because Qt's moc doesn't supprt preprocessor
directives like `#ifdef`, so we'll need separate versions for each.
Preparations for Thunar 1.8.0, which was released today and uses GTK+ 3.x.
NOTE: The .thumbnailer file is common for both GTK+ 2.x and 3.x,
so it's installed as part of thumbnailer-dbus.
[debian] Added a new package, rom-properties-thumbnailer-dbus.
rom-properties-xfce and rom-properties-all now have dependencies on
this package.
cmake/options.cmake: Unset QT_SELECT initially.
Set QT_SELECT in each individual directory based on the required version.
For libunixcommon, set it, call the required program, then unset it.
This should fix all of the issues:
- Qt4: If set to 5, qmake would fail to detect Qt/X11.
- Qt5: If set to 4, the plugin path was wrong.
This is needed in order to build the KDE4 plugin on Xubuntu 18.04 when
using debuild. Exporting QT_SELECT before running debuild didn't seem
to work for me, though it does work on travis-ci (Ubuntu 14.04)...
The custom classes were borrowed from GCN MemCard Recover, which doesn't
use KDE libraries at all. Since rom-properties uses KDE, we should make
use of this for, among other things, better animation.
We're now using KMessageWidget::Information instead of Warning in cases
where no keys are loaded, since this means that while the keys file is
valid, it doesn't have any useful keys. (The keys might already be present
in keys.conf, or they might not be used by rom-properties.)
Added the required development packages to debian/control and
COMPILING.md.
The minimum KDE4 version is now 4.7.
source-is-missing: Several JavaScript files included with libjpeg-turbo's
HTML documentation are minimized. These files have been added to
debian/source/lintian-overrides.
debhelper-but-no-misc-depends rom-properties-all: Added ${misc:Depends}.
virtual-package-depends-without-real-package-depends: Added non-virtual
dependencies as alternatives to libcurl-dev.
syntax-error-in-dep5-copyright: Removed an extra space at the beginning
of the GPL-3 license.
TODO: Move gettext to Build-Depends-Indep for the translations
metapackage, since that will be an "All" architectures package.
[rp-stub] CMakeLists.txt: Install rp-stub.
rom-properties-stub.install: LIkewise.
[debian] rules: Remove rp-config and rp-thumbnail, and replace them
with symlinks. This should really be done in CMake, but that doesn't
seem to be working.
- Install rp-thumbnail and rp-config as copies of rp-stub, and don't
install rp-stub. The symlinking code I used didn't work properly
in Debian's fakeroot.
Debian packaging:
- rom-properties-gnome: Depend on rom-properties-stub.
- rom-properties-stub.install: Disable rp-stub.
changelog will be updated before release.
README.md: Added XFCE.
- Removed the "Icon" column, since it will probably only ever apply
to Windows.
doc/COMPILING.md: Added XFCE dependencies.
Partially based on dolphin-emu:
https://packages.debian.org/sid/games/dolphin-emu
CMake's debian package generator supports generating multiple DEB
packages by component, but doesn't easily allow installing common
files in each (e.g. document files). It turns out that writing
standard Debian package rules got a lot easier now than the last
time I tried (with gens), so we'll use standard Debian rules.
NOTE: Multi-arch is enabled on the KDE 5 plugin, but not the KDE 4
plugin, since the KDE 4 plugin is installed in /usr/lib/. This
shouldn't be an issue in most cases, since most 64-bit Linux systems
don't have many 32-bit KDE applications installed.
TODO: "rom-properties" might not be a valid name due to the hyphen.
I might have to either remove the '-', change it to an underscore,
or something else...