A fork of Gnome-control-center with some tweaks
Find a file
Debarshi Ray 5579314a38 online-accounts: Track the lifecycle of CcGoaPanel across async calls
Due to an API bug in GNOME Online Accounts, the asynchronous
goa_provider_get_all method doesn't accept a GCancellable argument.
This makes it difficult to cancel an ongoing call when the CcGoaPanel
gets destroyed.

Prior to commit c26f8ae018, this was hacked around by taking a
reference on the panel for the duration of the call. Instead of
cancelling a pending call on destruction, it would keep the panel alive
until the call was over. However, that was lost during commit
c26f8ae018.

One thing to bear in mind is that GtkWidgets, CcGoaPanel is one, can
be destroyed by a gtk_widget_destroy call, which is subtly different
than a simple sequence of g_object_unref calls. When gtk_widget_destroy
is used, it invokes the GObject::dispose virtual method of the widget.
It is expected this will cause anything holding a reference to this
widget to drop their references, leading to GObject::finalize being
called. However, there is no guarantee that this will happen in the
same iteration of the GMainLoop. Therefore, it is possible that when
the goa_provider_get_all call finishes, the CcGoaPanel might be in a
disposed, but not yet finalized state.

When a GObject is in a disposed-but-not-finalized state, only a very
limited number of operations can be performed on it. Its reference
count can be altered, the memory used by the instance struct can be
accessed, but none of the member GObjects can be assumed to be valid.
eg., it's definitely illegal to add new rows to the member GtkListBox.
Hence a boolean flag is used to mark the destroyed state of the panel.

This second part is a small improvement over the earlier hack.

https://gitlab.gnome.org/GNOME/gnome-control-center/issues/208
2018-10-05 11:20:37 +02:00
.gitlab/issue_templates project: Add issue templates 2018-05-02 21:02:13 -03:00
build-aux flatpak: disable mobile-broadband-provider-info 2018-09-19 14:11:11 +00:00
data/icons icon: update icon assets for Initiative: https://gitlab.gnome.org/GNOME/Initiatives/issues/2 2018-09-12 21:30:52 +00:00
docs project: Document maintainers and workflow 2018-07-16 20:50:12 -03:00
gettext/its build: Fix translation context missing from keyboard entries 2018-01-24 20:43:34 +01:00
man project: Update meson files 2018-05-03 00:45:29 -03:00
panels online-accounts: Track the lifecycle of CcGoaPanel across async calls 2018-10-05 11:20:37 +02:00
po Updated Czech translation 2018-10-01 17:24:16 +02:00
search-provider project: Update meson files 2018-05-03 00:45:29 -03:00
shell object-cache: Fix function documentation name 2018-09-25 21:02:11 -03:00
subprojects build: Drop libgd 2018-03-16 15:55:10 -03:00
tests tests: Temporarily disable Python tests 2018-08-27 21:42:03 -03:00
.gitignore project: Update gitignore 2018-05-12 20:56:04 -03:00
.gitlab-ci.yml ci: Make armv8 and ppc64le manual jobs 2018-09-10 11:35:59 -03:00
.gitmodules Update submodule URL to current GitLab URL 2018-08-24 14:06:00 +00:00
COPYING build: Update COPYING with new mailing address 2012-08-22 15:33:18 +01:00
gnome-control-center.doap project: Add Benjamin as the maintainer of Display 2018-10-04 11:12:02 -03:00
meson.build Bump version to 3.31.0 2018-09-07 22:52:55 -03:00
meson_options.txt window: Warn about development builds 2018-05-14 18:24:03 -03:00
NEWS 3.30.0 2018-09-03 12:20:08 -03:00
README.md docs: add the coverage badge 2018-07-05 23:25:23 +00:00

Build Status Coverage report License

GNOME Settings

GNOME Settings is GNOME's main interface for configuration of various aspects of your desktop.

Contributing

See docs/CONTRIBUTING.md for details on the contribution process, and docs/HACKING.md for the coding style guidelines.

Testing Unstable Settings

It is quite easy to test and give feedback about the development version of GNOME Settings. Just access https://gitlab.gnome.org/GNOME/gnome-control-center/environments, get the latest version, download it, double-click the file, install and run.

Note that GNOME Settings Flatpak will only work if you are running the latest GNOME version in your host system.

Reporting Bugs

Bugs should be reported to the GNOME bug tracking system under the product gnome-control-center. It is available at GitLab Issues.

In the report please include the following information -

Operating system and version
For Linux, version of the C library
How to reproduce the bug if possible
If the bug was a crash, include the exact text that was printed out
A stacktrace where possible [see below]

How to get a stack trace

If the crash is reproducible, it is possible to get a stack trace and attach it to the bug report. The following steps are used to obtain a stack trace -

Run the program in gdb [the GNU debugger] or any other debugger
	ie. gdb gnome-keyboard-properties
Start the program
	ie. (gdb) run
Reproduce the crash and the program will exit to the gdb prompt
Get the back trace
	ie. (gdb) bt full

Once you have the backtrace, copy and paste this either into the 'Comments' field or attach a file with it included.