Commit Graph

3301 Commits

Author SHA1 Message Date
Colin Walters
73bcdb4a29 Remove most use of G_GNUC_INTERNAL
Now that we use an explicit list of symbols to export, the
G_GNUC_INTERNAL is redundant.

https://bugzilla.gnome.org/show_bug.cgi?id=688681
2012-11-30 14:34:24 -05:00
Colin Walters
5195ddefba Use -fvisibility=hidden by default on Unix
Now that we have all symbols annotated as GLIB_PUBLIC, we can switch
the build to default to hiding symbols.  The major advantage of this
is that it's much harder to accidentally leak symbols.

This patch only adds it to CFLAGS for the sublibraries; we don't want
to affect things like gio/fam, nor the executables.

However, this patch only changes Unix - on Windows, we keep the
.symbols file because we still ultimately need a .def file in order to
generate a .dll.

To unify both Unix and Windows again, we need to do what cairo does
and parse the headers at build time.

https://bugzilla.gnome.org/show_bug.cgi?id=688681
2012-11-30 14:32:57 -05:00
Ryan Lortie
0b2cafb2b0 Annotate all public API with _G*_API
This macro will be used to mark these symbols as public exports.

https://bugzilla.gnome.org/show_bug.cgi?id=688681
2012-11-30 12:14:34 -05:00
Colin Walters
b390e41325 buildsystem: Prepare _G*_API internal macros for symbol visibility
To switch GLib to have private-by-default symbols, we need to have a
macro which expands to G_PUBLIC_API only when compiling a particular
"sublibrary" in GLib (e.g. gmodule, gio).

This patch implements that with a two-level scheme.  First, each
sublibrary has its own preprocessor macro e.g. _GTHREAD_API.  Then,
the Makefiles are modified to define this to G_PUBLIC_API only when
building that library - so when building libgthread, _GMODULE_API is
left undefined.

Now, we could simply add _G*_API to every entry point, but because
we've already been annotating all the headers with
GLIB_AVAILABLE_IN_XX, let's modify those macros to automatically
depend on a new "_G_API".  Then the Makefiles further define _G_API to
the target such as _GTHREAD_API.  This indirection avoids a
(glib version)*(sublibrary) explosion of preprocessor definitions in
gversionmacros.h.

https://bugzilla.gnome.org/show_bug.cgi?id=688681
2012-11-30 12:14:34 -05:00
Colin Walters
a2a8127338 build: Make .symbols file canonical on all platforms
Previously:
* On Unix, an -export-symbol-regex (g_)|(glib_) was used, and the .symbols
  files were used in "make check"
* On Windows, the .symbols files are massaged into a format which MSVC
  expects as an export list

Now:

* On both Unix and Windows, the .symbols file is used as the list of
  symbols to export, and code to generate the exported list per
  platform is unified.  Even symbols starting with g_ are not exported
  unless they are in the file.  The abicheck.sh tools are deleted.

https://bugzilla.gnome.org/show_bug.cgi?id=688681
2012-11-30 12:10:51 -05:00
3e5214c15c Use a simple struct when reading and writing gdbus messages
GData*Streams incur significant overhead, and we do not need all of the
functionality that they provide, since we only ever read from/write to
memory when handling message blobs, so it is more performant to use a
simple structure.

https://bugzilla.gnome.org/show_bug.cgi?id=652650
2012-11-29 14:15:34 -06:00
Juan Pablo Ugarte
ccd1fb6820 Added G_IO_ERROR_BROKEN_PIPE 2012-11-29 16:29:47 -03:00
Ryan Lortie
52c608dd0d gio: GLIB_AVAILABLE_IN to more APIs
Useful on its own, but also for a future patch for symbol visibility.

https://bugzilla.gnome.org/show_bug.cgi?id=688681
2012-11-29 14:07:27 -05:00
Kalev Lember
ce586ba991 Unconditionally use g_content_type_get_symbolic_icon()
... and g_content_type_get_generic_icon_name(). The new functions are
implemented for Win32 since commit dace477c, so we no longer need to
guard them with G_OS_UNIX.
2012-11-28 23:25:52 +01:00
Sebastian Dröge
c9affa778e Revert "Fix compilation on Android with the bionic C library"
This reverts commit cb0ed84d40.

It wasn't meant to be pushed yet.
2012-11-28 16:55:12 +01:00
Sebastian Dröge
cb0ed84d40 Fix compilation on Android with the bionic C library 2012-11-28 16:32:48 +01:00
Matthias Clasen
65740f62bf Fix suprisingly hard-to-spot typo 2012-11-28 00:58:03 -05:00
Colin Walters
ed5c17e11f GMemoryOutputStream: Add new _resizable() constructor usable from bindings
Really, the memory output stream API is too warped around the model
where it's a fixed size buffer that you've already allocated.  Even in
C, I find myself always wanting to use it to just accumulate data into
an arbitrary-sized buffer it allocates.

Unfortunately, it's also not usable from bindings because it's not
common to bind g_free() and g_realloc(), but if you just pass NULL, you
get the default of a fixed size, which is useless as per above.

I am going to use this from a gjs test case, and the GSubprocess test
cases also will use it.

https://bugzilla.gnome.org/show_bug.cgi?id=688931
2012-11-27 20:45:21 -05:00
Bastien Nocera
7a5dd54f47 fileinfo: Add missing AVAILABLE macro
As forgotten in previous patch.
2012-11-27 17:23:08 +01:00
Bastien Nocera
f635f1fd16 fileinfo: Add _get_deletion_date() helper
For use in gnome-settings-daemon, so that callers don't have
to parse the deletion date by hand.
2012-11-27 16:59:28 +01:00
Ryan Lortie
3baf256a2c gio: New API for GFile from remote commandline arg
Add a pair of new APIs: one to GFile to create a new file from a
commandline arg relative to a given cwd and one to
GApplicationCommandLine to create a GFile from an arg, relative to the
cwd of the invoking commandline.

https://bugzilla.gnome.org/show_bug.cgi?id=689037
2012-11-27 10:10:37 -05:00
Paolo Borelli
ee8080cc0b Add GApplication local_command_line test
Assert that startup and shutdown are not called if we return TRUE from
local_command_line
2012-11-24 19:21:54 +01:00
Ryan Lortie
543bbd8752 GApplication: don't shutdown() on failure to start
If we fail to start (and don't register() or call startup()) then also
don't call shutdown().  This happens in the case of failing to parse
commandline arguments, for example.
2012-11-24 13:20:29 -05:00
Matthias Clasen
4ffa472438 Add a test for the GAppLaunchContext::launched signal 2012-11-21 21:20:25 -05:00
Matthias Clasen
bace1822d7 GAppLaunchContext: make it possible ot get the effective startup id
gnome-session needs to know the startup id that was given to
a started app; this was not available via GAppLaunchContext.
This commit adds a ::launched signal to get this information.
At the same time, turn the launch_failed vfunc into a signal
as well.

https://bugzilla.gnome.org/show_bug.cgi?id=688497
2012-11-21 21:20:25 -05:00
Matthias Clasen
7b0c93554b Add new api to exported symbols 2012-11-21 21:20:25 -05:00
Matthias Clasen
ace7b0fd86 Add a test for new GDesktopAppInfo getters 2012-11-21 21:13:01 -05:00
Matthias Clasen
4adbc7aa42 GDesktopAppInfo: add enough api to make autostart implementable
gnome-session still uses EggDesktopFile, since GDesktopAppInfo is
missing a handful of APIs that are needed to implement the
autostart spec. This patch adds the minimum that is required.

https://bugzilla.gnome.org/show_bug.cgi?id=688497
2012-11-21 21:12:45 -05:00
Debarshi Ray
51d0830102 file-info: Don't leak the filename if thumbnailing failed
Fixes: https://bugzilla.gnome.org/686895
2012-11-20 00:24:52 +01:00
Ryan Lortie
824bc48adb Remove two accidentally-exported symbols
This reverts commit 85976cf91d and
properly removes the offending symbols from gio.symbols.

These two private symbols were found to be exported during Colin's
recent work cleaning up function visibility (among other things).

They were never exposed in any header file and I am 100% certain that
they have never been used by anybody.  They were always private -- only
exposed on the library symbol list.

This change will cause ABI checking tools to complain that we have
removed functions, but the change is completely harmless for actual
applications.

https://bugzilla.gnome.org/show_bug.cgi?id=687441
2012-11-19 16:14:16 -05:00
Antoine Jacoutot
596f96b08d gio-kqueue: use O_EVTONLY on MacOS
MacOS provides the O_EVTONLY flag to open(2) which allow to open a file
for monitoring without preventing an unmount of the volume that contains
it.

https://bugzilla.gnome.org/show_bug.cgi?id=688518
2012-11-17 16:32:23 +01:00
Aleksander Morgado
8bf295bcd8 gdbus: improve documentation of the GDBusError section
https://bugzilla.gnome.org/show_bug.cgi?id=688370
2012-11-15 22:24:54 +01:00
Dan Winship
aa1418c427 win32: work around broken winsock prototypes
Re-#define a few socket functions to work around winsock's prototypes
having, eg, "int *" rather than "unsigned int *", or "char *" rather
than "void *".

(Also fix two places that mistakenly assumed guint==guint32.)

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:06 -05:00
Dan Winship
d9e8feae7c win32: make gio/tests/gdbus-proxy.c compile
win32 doesn't have kill(), so this won't even compile on Windows
unless that is ifdeffed out. The test probably still doesn't *work*,
but...

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:06 -05:00
Dan Winship
468a166711 GLocalFile: canonicalize the initial directory separator
GLocalFile was (in certain situations) translating a path like
"/foo/bar/baz" to "/foo\bar\baz" on win32. Fix it to make sure the
initial directory separator gets canonicalized too.

Fixes gio/tests/g-icon on win32.

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:06 -05:00
Dan Winship
b8c13a01b6 win32: misc warning fixes
https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:06 -05:00
Dan Winship
f248c86b0a win32: move some code into #ifdef G_OS_UNIX
Fix various bits of code/declarations that are only used by G_OS_UNIX
but were still visible to G_OS_WIN32.

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:05 -05:00
Dan Winship
731b469908 win32: define _WIN32_WINNT globally
Rather than defining _WIN32_WINNT only in a handful of files, define
it in config.h, like we do with _GNU_SOURCE.

(Also remove a "#define WIN32_LEAN_AND_MEAN" that isn't really all
that useful.)

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:05 -05:00
Dan Winship
3ac6cfaeaa win32: prototype _glib_get_dll_directory() and _glib_get_locale_dir()
Rather than using "extern" declarations of these win32 functions
everywhere they're needed, just prototype them in glib-private.h.
(Which also fixes the fact that they weren't prototyped in the files
where they're defined.)

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:05 -05:00
Wim Taymans
c2acbc0182 gsocket: fix joining/leaving multicast groups
Initialize the structure passed to setsockopt to 0 to avoid random
errors when joining or leaving a multicast group.

https://bugzilla.gnome.org/show_bug.cgi?id=688378
2012-11-15 11:09:00 -05:00
Michael Natterer
6dee874b68 Revert "gio: Add private API to create win32 streams from fds"
This reverts commit 292de8cc52.
2012-11-15 15:33:38 +01:00
Colin Walters
2aa97e2847 gdbus: Fix some compiler warnings
Code appears to have been copy/pasted from a bit which used _object,
but I think it's clearer to always use the "self" parameter anyways.
2012-11-15 08:42:36 -05:00
Antoine Jacoutot
a335fd1de8 GFileMonitor: Add kqueue(3) support to GIO
Written by Dmitry Matveev as part of GSoC 2011:
http://netbsd-soc.sourceforge.net/projects/kqueue4gio/

This brings native file monitoring support on systems supporting kqueue(3)
(all BSDs) and remove the need to rely on the unmaintained gamin software.
The backend adds GKqueueDirectoryMonitor and GKqueueFileMonitor.

Some parts rewritten by myself (to prevent needing a configuration file).
Helpful inputs from Colin Walters and Simon McVittie.

https://bugzilla.gnome.org/show_bug.cgi?id=679793
2012-11-15 08:13:30 +01:00
Colin Walters
292de8cc52 gio: Add private API to create win32 streams from fds
This will be used by GSubprocess.

https://bugzilla.gnome.org/show_bug.cgi?id=672102
2012-11-14 14:12:05 -05:00
Paul Menzel
606aa26acf gio/*: Fix spelling of determining
$ sed -i s,determing,determining,g gio/gdrive.c
$ sed -i s,determing,determining,g gio/gdbusprivate.c

http://www.merriam-webster.com/dictionary/determining

For some reason according to `git log --follow` the whole file was created during some translation update.

    commit c45b813504
    Author: Timo Jyrinki <timo@debian.org>
    Date:   Mon Mar 12 11:02:04 2012 +0200

        Finnish translation update from http://l10n.laxstrom.name/wiki/Gnome_3.4 translation sprint
2012-11-13 13:54:40 +00:00
Dan Winship
9fb3082070 Revert "Return correct value for g_socket_get_available_bytes() on Windows and OSX"
This neither compiles nor does what it's supposed to on Windows.

This reverts commit 1e598600a1.
2012-11-11 14:14:04 -05:00
Sebastian Dröge
2bba1da306 Add caching for the receiver addresses for g_socket_receive_from()
https://bugzilla.gnome.org/show_bug.cgi?id=668842
2012-11-11 17:32:38 +01:00
Matthias Clasen
8caf39b59b Add an option to make glib-compile-resources use G_GNUC_INTERNAL
https://bugzilla.gnome.org/show_bug.cgi?id=687742
2012-11-09 22:14:39 -05:00
Matthias Clasen
138f4c1e2f Remove trailing space from some translated strings
https://bugzilla.gnome.org/show_bug.cgi?id=687700
2012-11-09 22:12:57 -05:00
Sebastian Dröge
1e598600a1 Return correct value for g_socket_get_available_bytes() on Windows and OSX
https://bugzilla.gnome.org/show_bug.cgi?id=686786
2012-11-09 21:57:50 -05:00
John Ralls
b65dac802e Fix poll able streams for Darwin (and probably BSD)
Darwin's poll doesn't change revents if there are no available events, though it returns 0. Initialize the fd.revents to 0 so that the test passes.

That reveals a test failure, though, because with socket streams it takes time for an event to pass through the socket. Provide an 80-usec delay to allow time for the propagation.
2012-11-09 09:23:01 -08:00
John Ralls
5588d47985 Fix compile error about missing prototype
For g_nextstep_settings_backend_get_type()
2012-11-09 09:23:01 -08:00
Dan Winship
f1b34cab8a gthreadedresolver: fix a bug in the GTask porting of lookup_records
We were passing the wrong destroy notify when returning the list of
records, so it would crash if it got called (ie, if you didn't call
g_resolver_lookup_records_finish()).

(Also fix s/targets/records/ throughout the records functions.)
2012-11-09 11:41:01 -05:00
Timothy Arceri
edeffe0c87 Use url encoding for trash fileinfo path as per freedesktop trash specification
https://bugzilla.gnome.org/show_bug.cgi?id=687540
2012-11-09 08:40:43 -05:00
Colin Walters
753494a25e tests/buffered-input-stream: Fix size of parameter passed
buffer-size is guint, but the public API is gsize for some reason.

Tested-By: gustavold@linux.vnet.ibm.com

https://bugzilla.gnome.org/show_bug.cgi?id=687801
2012-11-07 09:51:20 -05:00