Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
10
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Apps
xfce4-screensaver
Commits
711cd10e
Commit
711cd10e
authored
Sep 30, 2018
by
Sean Davis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add RANDER support, drop unused definitions
parent
2958215a
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
79 additions
and
282 deletions
+79
-282
.gitignore
.gitignore
+59
-0
configure.ac
configure.ac
+20
-1
src/xfce-desktop-thumbnail.c
src/xfce-desktop-thumbnail.c
+0
-281
No files found.
.gitignore
View file @
711cd10e
...
...
@@ -27,3 +27,62 @@ po/Makefile.in.in
savers/Makefile.in
src/.deps/
src/Makefile.in
Makefile
config.h
config.log
config.status
data/Makefile
data/images/Makefile
data/images/cosmos/Makefile
data/images/cosmos/background-1.xml
data/images/cosmos/cosmos.xml
data/images/cosmos/cosmos.xml.in
data/org.mate.ScreenSaver.service
data/org.mate.screensaver.gschema.valid
data/org.mate.screensaver.gschema.xml
data/xfce4-screensaver-preferences.desktop
data/xfce4-screensaver.directory
data/xfce4-screensaver.pc
data/xfce4-screensavers.menu
doc/Makefile
doc/xfce4-screensaver.xml
libtool
po/.intltool-merge-cache
po/Makefile
po/POTFILES
po/stamp-it
*.gmo
savers/.deps/
savers/Makefile
savers/cosmos-slideshow.desktop
savers/cosmos-slideshow.desktop.in
savers/floaters
savers/footlogo-floaters.desktop
savers/footlogo-floaters.desktop.in
savers/gnomelogo-floaters.desktop
savers/gnomelogo-floaters.desktop.in
savers/gs-theme-engine-marshal.c
savers/gs-theme-engine-marshal.h
savers/libgs-theme-engine.a
savers/personal-slideshow.desktop
savers/personal-slideshow.desktop.in
savers/popsquares
savers/popsquares.desktop
savers/popsquares.desktop.in
savers/slideshow
src/Makefile
src/gs-marshal.c
src/gs-marshal.h
src/test-fade
src/test-passwd
src/test-watcher
src/test-window
src/xfce4-screensaver
src/xfce4-screensaver-command
src/xfce4-screensaver-dialog
src/xfce4-screensaver-gl-helper
src/xfce4-screensaver-preferences
src/xfce4-screensaver.desktop
src/xfce4-screensaver.desktop.in
src/xfcekbd-indicator-marshal.h
stamp-h1
configure.ac
View file @
711cd10e
...
...
@@ -48,6 +48,7 @@ GLIB_REQUIRED_VERSION=2.50.0
GTK_REQUIRED_VERSION=3.22.0
X11_REQUIRED_VERSION=1.0
LIBXKLAVIER_REQUIRED=5.2
XRANDR_REQUIRED=1.3
AC_CHECK_HEADERS(unistd.h)
AC_CHECK_HEADERS(crypt.h sys/select.h)
...
...
@@ -56,6 +57,23 @@ AC_CHECK_FUNCS(sigaction syslog realpath setrlimit)
AC_CHECK_FUNCS(getresuid)
AC_TYPE_UID_T
dnl Checks for X is RANDR extension
AC_MSG_CHECKING(for xrandr)
if $PKG_CONFIG --atleast-version $XRANDR_REQUIRED xrandr; then
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_RANDR, 1,
[Define if the xrandr-$XRANDR_REQUIRED library is present])
have_randr=yes
RANDR_PACKAGE=xrandr
else
AC_MSG_RESULT(no)
have_randr=no
RANDR_PACKAGE=
fi
AC_SUBST(RANDR_PACKAGE)
AC_CHECK_FUNCS([setresuid setenv unsetenv clearenv])
PKG_CHECK_MODULES(MATE_SCREENSAVER,
x11 >= $X11_REQUIRED_VERSION
...
...
@@ -63,7 +81,8 @@ PKG_CHECK_MODULES(MATE_SCREENSAVER,
gtk+-3.0 >= $GTK_REQUIRED_VERSION
dbus-glib-1 >= $DBUS_REQUIRED_VERSION
gio-2.0 >= $GLIB_REQUIRED_VERSION
libxklavier >= $LIBXKLAVIER_REQUIRED)
libxklavier >= $LIBXKLAVIER_REQUIRED
$RANDR_PACKAGE)
AC_SUBST(MATE_SCREENSAVER_CFLAGS)
AC_SUBST(MATE_SCREENSAVER_LIBS)
...
...
src/xfce-desktop-thumbnail.c
View file @
711cd10e
...
...
@@ -253,218 +253,6 @@ get_thumbnailers_dirs (void)
return
g_once
(
&
once_init
,
init_thumbnailers_dirs
,
NULL
);
}
static
void
size_prepared_cb
(
GdkPixbufLoader
*
loader
,
int
width
,
int
height
,
gpointer
data
)
{
SizePrepareContext
*
info
=
data
;
g_return_if_fail
(
width
>
0
&&
height
>
0
);
info
->
input_width
=
width
;
info
->
input_height
=
height
;
if
(
width
<
info
->
width
&&
height
<
info
->
height
)
return
;
if
(
info
->
preserve_aspect_ratio
&&
(
info
->
width
>
0
||
info
->
height
>
0
))
{
if
(
info
->
width
<
0
)
{
width
=
width
*
(
double
)
info
->
height
/
(
double
)
height
;
height
=
info
->
height
;
}
else
if
(
info
->
height
<
0
)
{
height
=
height
*
(
double
)
info
->
width
/
(
double
)
width
;
width
=
info
->
width
;
}
else
if
((
double
)
height
*
(
double
)
info
->
width
>
(
double
)
width
*
(
double
)
info
->
height
)
{
width
=
0
.
5
+
(
double
)
width
*
(
double
)
info
->
height
/
(
double
)
height
;
height
=
info
->
height
;
}
else
{
height
=
0
.
5
+
(
double
)
height
*
(
double
)
info
->
width
/
(
double
)
width
;
width
=
info
->
width
;
}
}
else
{
if
(
info
->
width
>
0
)
width
=
info
->
width
;
if
(
info
->
height
>
0
)
height
=
info
->
height
;
}
gdk_pixbuf_loader_set_size
(
loader
,
width
,
height
);
}
static
GdkPixbufLoader
*
create_loader
(
GFile
*
file
,
const
guchar
*
data
,
gsize
size
)
{
GdkPixbufLoader
*
loader
=
NULL
;
GError
*
error
=
NULL
;
char
*
mime_type
;
char
*
filename
;
/* need to specify the type here because the gdk_pixbuf_loader_write
doesn't have access to the filename in order to correct detect
the image type. */
filename
=
g_file_get_basename
(
file
);
mime_type
=
g_content_type_guess
(
filename
,
data
,
size
,
NULL
);
g_free
(
filename
);
if
(
mime_type
!=
NULL
)
{
loader
=
gdk_pixbuf_loader_new_with_mime_type
(
mime_type
,
&
error
);
}
if
(
loader
==
NULL
&&
error
!=
NULL
)
{
g_warning
(
"Unable to create loader for mime type %s: %s"
,
mime_type
,
error
->
message
);
g_clear_error
(
&
error
);
loader
=
gdk_pixbuf_loader_new
();
}
g_free
(
mime_type
);
return
loader
;
}
static
GdkPixbuf
*
_gdk_pixbuf_new_from_uri_at_scale
(
const
char
*
uri
,
gint
width
,
gint
height
,
gboolean
preserve_aspect_ratio
)
{
gboolean
result
;
guchar
buffer
[
LOAD_BUFFER_SIZE
];
gsize
bytes_read
;
GdkPixbufLoader
*
loader
=
NULL
;
GdkPixbuf
*
pixbuf
;
GdkPixbufAnimation
*
animation
;
GdkPixbufAnimationIter
*
iter
;
gboolean
has_frame
;
SizePrepareContext
info
;
GFile
*
file
;
GFileInfo
*
file_info
;
GInputStream
*
input_stream
;
GError
*
error
=
NULL
;
g_return_val_if_fail
(
uri
!=
NULL
,
NULL
);
input_stream
=
NULL
;
file
=
g_file_new_for_uri
(
uri
);
/* First see if we can get an input stream via preview::icon */
file_info
=
g_file_query_info
(
file
,
G_FILE_ATTRIBUTE_PREVIEW_ICON
,
G_FILE_QUERY_INFO_NONE
,
NULL
,
/* GCancellable */
NULL
);
/* return location for GError */
if
(
file_info
!=
NULL
)
{
GObject
*
object
;
object
=
g_file_info_get_attribute_object
(
file_info
,
G_FILE_ATTRIBUTE_PREVIEW_ICON
);
if
(
object
!=
NULL
&&
G_IS_LOADABLE_ICON
(
object
))
{
input_stream
=
g_loadable_icon_load
(
G_LOADABLE_ICON
(
object
),
0
,
/* size */
NULL
,
/* return location for type */
NULL
,
/* GCancellable */
NULL
);
/* return location for GError */
}
g_object_unref
(
file_info
);
}
if
(
input_stream
==
NULL
)
{
input_stream
=
G_INPUT_STREAM
(
g_file_read
(
file
,
NULL
,
NULL
));
if
(
input_stream
==
NULL
)
{
g_object_unref
(
file
);
return
NULL
;
}
}
has_frame
=
FALSE
;
result
=
FALSE
;
while
(
!
has_frame
)
{
bytes_read
=
g_input_stream_read
(
input_stream
,
buffer
,
sizeof
(
buffer
),
NULL
,
&
error
);
if
(
error
!=
NULL
)
{
g_warning
(
"Error reading from %s: %s"
,
uri
,
error
->
message
);
g_clear_error
(
&
error
);
}
if
(
bytes_read
==
-
1
)
{
break
;
}
result
=
TRUE
;
if
(
bytes_read
==
0
)
{
break
;
}
if
(
loader
==
NULL
)
{
loader
=
create_loader
(
file
,
buffer
,
bytes_read
);
if
(
1
<=
width
||
1
<=
height
)
{
info
.
width
=
width
;
info
.
height
=
height
;
info
.
input_width
=
info
.
input_height
=
0
;
info
.
preserve_aspect_ratio
=
preserve_aspect_ratio
;
g_signal_connect
(
loader
,
"size-prepared"
,
G_CALLBACK
(
size_prepared_cb
),
&
info
);
}
g_assert
(
loader
!=
NULL
);
}
if
(
!
gdk_pixbuf_loader_write
(
loader
,
(
unsigned
char
*
)
buffer
,
bytes_read
,
&
error
))
{
g_warning
(
"Error creating thumbnail for %s: %s"
,
uri
,
error
->
message
);
g_clear_error
(
&
error
);
result
=
FALSE
;
break
;
}
animation
=
gdk_pixbuf_loader_get_animation
(
loader
);
if
(
animation
)
{
iter
=
gdk_pixbuf_animation_get_iter
(
animation
,
NULL
);
if
(
!
gdk_pixbuf_animation_iter_on_currently_loading_frame
(
iter
))
{
has_frame
=
TRUE
;
}
g_object_unref
(
iter
);
}
}
gdk_pixbuf_loader_close
(
loader
,
NULL
);
if
(
!
result
)
{
g_object_unref
(
G_OBJECT
(
loader
));
g_input_stream_close
(
input_stream
,
NULL
,
NULL
);
g_object_unref
(
input_stream
);
g_object_unref
(
file
);
return
NULL
;
}
g_input_stream_close
(
input_stream
,
NULL
,
NULL
);
g_object_unref
(
input_stream
);
g_object_unref
(
file
);
pixbuf
=
gdk_pixbuf_loader_get_pixbuf
(
loader
);
if
(
pixbuf
!=
NULL
)
{
g_object_ref
(
G_OBJECT
(
pixbuf
));
g_object_set_data
(
G_OBJECT
(
pixbuf
),
"mate-original-width"
,
GINT_TO_POINTER
(
info
.
input_width
));
g_object_set_data
(
G_OBJECT
(
pixbuf
),
"mate-original-height"
,
GINT_TO_POINTER
(
info
.
input_height
));
}
g_object_unref
(
G_OBJECT
(
loader
));
return
pixbuf
;
}
static
void
xfce_desktop_thumbnail_factory_finalize
(
GObject
*
object
)
{
...
...
@@ -1089,75 +877,6 @@ xfce_desktop_thumbnail_factory_can_thumbnail (XfceDesktopThumbnailFactory *facto
return
FALSE
;
}
static
char
*
expand_thumbnailing_script
(
const
char
*
script
,
const
int
size
,
const
char
*
inuri
,
const
char
*
outfile
)
{
GString
*
str
;
const
char
*
p
,
*
last
;
char
*
localfile
,
*
quoted
;
gboolean
got_in
;
str
=
g_string_new
(
NULL
);
got_in
=
FALSE
;
last
=
script
;
while
((
p
=
strchr
(
last
,
'%'
))
!=
NULL
)
{
g_string_append_len
(
str
,
last
,
p
-
last
);
p
++
;
switch
(
*
p
)
{
case
'u'
:
quoted
=
g_shell_quote
(
inuri
);
g_string_append
(
str
,
quoted
);
g_free
(
quoted
);
got_in
=
TRUE
;
p
++
;
break
;
case
'i'
:
localfile
=
g_filename_from_uri
(
inuri
,
NULL
,
NULL
);
if
(
localfile
)
{
quoted
=
g_shell_quote
(
localfile
);
g_string_append
(
str
,
quoted
);
got_in
=
TRUE
;
g_free
(
quoted
);
g_free
(
localfile
);
}
p
++
;
break
;
case
'o'
:
quoted
=
g_shell_quote
(
outfile
);
g_string_append
(
str
,
quoted
);
g_free
(
quoted
);
p
++
;
break
;
case
's'
:
g_string_append_printf
(
str
,
"%d"
,
size
);
p
++
;
break
;
case
'%'
:
g_string_append_c
(
str
,
'%'
);
p
++
;
break
;
case
0
:
default:
break
;
}
last
=
p
;
}
g_string_append
(
str
,
last
);
if
(
got_in
)
return
g_string_free
(
str
,
FALSE
);
g_string_free
(
str
,
TRUE
);
return
NULL
;
}
static
gboolean
make_thumbnail_dirs
(
XfceDesktopThumbnailFactory
*
factory
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment