| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Evolution is still occasionally getting stuck on shutdown, and although
the evolution-shell log domain shows debug messages for activities that
are preventing shutdown, they frequently look like this:
(evolution:13534): evolution-shell-DEBUG: 5 active 'mail' activities:
(evolution:13534): evolution-shell-DEBUG: * (no description)
(evolution:13534): evolution-shell-DEBUG: * (no description)
(evolution:13534): evolution-shell-DEBUG: * (no description)
(evolution:13534): evolution-shell-DEBUG: * (no description)
(evolution:13534): evolution-shell-DEBUG: * (no description)
I think the lack of descriptions is from CamelOperations popping all
their pushed messages, which is correct behavior but doesn't help us
debug the problem.
e_activity_get_last_known_text() returns the most recent _non-empty_
text value set on the EActivity. So our debug message can fall back
to that if the EActivity has no description at shutdown:
(evolution:13534): evolution-shell-DEBUG: * (was "blah, blah, blah")
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes a bug in the old implementation where the application could
crash after a second shell window was created and destroyed, because a
signal handler with the destroyed shell window as the closure was left
connected.
But moreover this simplifies the implementation by using a property
binding plus transform function instead of juggling signal handlers,
and also adds code comments where things get a little tricky.
Removed (now unused) functions:
e_shell_window_get_toolbar_new_prefer_item
e_shell_window_set_toolbar_new_prefer_item
|
|
|
|
| |
Convenience function cancels the activity's GCancellable.
|
|
|
|
|
|
|
| |
Log debug messages for outstanding activities during shutdown to
help investigate stuck shutdown issues.
Enable this feature with: G_MESSAGES_DEBUG=evolution-shell
|
|
|
|
|
|
|
| |
Use g_signal_connect_data() to automatically release the EActivity when
the signal handler is disconnected, and keep the handler ID internally.
This is cleaner than using g_signal_handlers_disconnect_by_func().
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Evolution consists of entirely too many small utility libraries, which
increases linking and loading time, places a burden on higher layers of
the application (e.g. modules) which has to remember to link to all the
small in-tree utility libraries, and makes it difficult to generate API
documentation for these utility libraries in one Gtk-Doc module.
Merge the following utility libraries under the umbrella of libeutil,
and enforce a single-include policy on libeutil so we can reorganize
the files as desired without disrupting its pseudo-public API.
libemail-utils/libemail-utils.la
libevolution-utils/libevolution-utils.la
filter/libfilter.la
widgets/e-timezone-dialog/libetimezonedialog.la
widgets/menus/libmenus.la
widgets/misc/libemiscwidgets.la
widgets/table/libetable.la
widgets/text/libetext.la
This also merges libedataserverui from the Evolution-Data-Server module,
since Evolution is its only consumer nowadays, and I'd like to make some
improvements to those APIs without concern for backward-compatibility.
And finally, start a Gtk-Doc module for libeutil. It's going to be a
project just getting all the symbols _listed_ much less _documented_.
But the skeletal structure is in place and I'm off to a good start.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
With unintrusive error dialogs gone, we can cut some unnecessary bits
out of EActivity.
I'm also adding a new enum property called "state", which is one of:
E_ACTIVITY_RUNNING
E_ACTIVITY_WAITING
E_ACTIVITY_CANCELLED
E_ACTIVITY_COMPLETED
The state of an activity must be explicitly changed. In particular,
when the user cancels an activity the state should be set only after
confirming the operation has been cancelled and not when cancellation
is requested (e.g. after receiving a G_IO_ERROR_CANCELLED, not when
the GCancellable emits "cancelled"). EActivityBar and EActivityProxy
widgets have been updated to make this distinction clearer in the UI.
E_ACTIVITY_WAITING will be used when activities have to be queued and
dispatched in sequence, which I haven't written yet.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Listen for "prepare-for-quit" signals from the shell and inhibit
shutdown until all the activities we're tracking are finalized.
Also, add a couple supporting functions:
gboolean e_shell_backend_is_busy (EShellBackend *shell_backend);
void e_shell_backend_cancel_all (EShellBackend *shell_backend);
These will eventually replace mail_msg_active() and mail_cancel_all().
|
| |
|
|
|
|
|
|
|
|
|
| |
EShellBackend now keeps an internal queue of live EActivity objects
passed to it via e_shell_backend_add_activity(). This will eventually
replace "mail_msg_active_table" in mail-mt.c and be used to coordinate
shutdown for all shell backends.
But first I have to eliminate mail_msg_wait().
|
|
|
|
|
| |
Migration runs just before the main loop starts.
It's just a sequence of local directory and file renames.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce e_extensible_list_extensions(), which provides extensible
objects access to their own extensions, or a subset of them.
Convert EShellBackend to an abstract EExtension subtype. EShell will
load its extensions with e_extensible_load_extensions(), and then obtain
a list of EShellBackend extensions as follows:
shell_backends = e_extensible_list_extensions (
E_EXTENSIBLE (shell), E_TYPE_SHELL_BACKEND);
Because EShellBackend is abstract, its GType is skipped while traversing
the GType hierarchy to find EShell extensions.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
This allows modules to specify their own data dir in a flexible way without
having them hard-coded to the backend class name. For example, the data dir for
the mail backend should be specified by the mail session (eventually as an eds
daemon) and the vfunc will allow the shell to query that in a generic way.
|
| |
|
|
|
|
|
| |
The shutdown protocol is modelled after online/offline preparation.
Session management code is copied from libegg. Not yet used.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Conflicts:
a11y/widgets/ea-combo-button.c
a11y/widgets/ea-combo-button.h
addressbook/gui/component/addressbook-component.c
addressbook/gui/component/addressbook-component.h
addressbook/gui/component/addressbook-view.c
addressbook/gui/component/addressbook-view.h
addressbook/gui/component/component-factory.c
addressbook/gui/widgets/e-addressbook-view.c
addressbook/gui/widgets/eab-contact-display.c
addressbook/gui/widgets/eab-gui-util.h
addressbook/gui/widgets/eab-menu.c
addressbook/gui/widgets/eab-menu.h
addressbook/gui/widgets/eab-popup-control.c
addressbook/gui/widgets/eab-popup-control.h
addressbook/gui/widgets/eab-popup.c
addressbook/gui/widgets/eab-popup.h
calendar/gui/cal-search-bar.c
calendar/gui/calendar-commands.c
calendar/gui/calendar-component.c
calendar/gui/comp-editor-factory.c
calendar/gui/comp-editor-factory.h
calendar/gui/control-factory.c
calendar/gui/dialogs/comp-editor.c
calendar/gui/e-cal-component-memo-preview.c
calendar/gui/e-cal-component-memo-preview.h
calendar/gui/e-calendar-table.c
calendar/gui/e-memo-table.c
calendar/gui/e-memos.c
calendar/gui/e-tasks.c
calendar/gui/gnome-cal.c
calendar/gui/gnome-cal.h
calendar/gui/itip-bonobo-control.c
calendar/gui/itip-bonobo-control.h
calendar/gui/main.c
calendar/gui/memos-component.c
calendar/gui/memos-control.c
calendar/gui/memos-control.h
calendar/gui/migration.c
calendar/gui/migration.h
calendar/gui/tasks-component.c
calendar/gui/tasks-control.c
calendar/importers/main.c
composer/Makefile.am
composer/e-composer-header-table.c
composer/e-composer-header.c
composer/e-composer-header.h
composer/e-composer-name-header.c
composer/e-composer-private.c
composer/e-composer-text-header.c
composer/e-msg-composer.c
composer/e-msg-composer.h
e-util/e-corba-utils.h
e-util/e-logger.c
e-util/e-logger.h
e-util/e-util-labels.c
e-util/e-util-labels.h
em-format/em-format.c
mail/Makefile.am
mail/e-mail-shell-migrate.c
mail/em-account-editor.c
mail/em-account-editor.h
mail/em-composer-prefs.c
mail/em-composer-utils.c
mail/em-composer-utils.h
mail/em-folder-browser.c
mail/em-folder-tree-model.c
mail/em-folder-tree.c
mail/em-folder-tree.h
mail/em-folder-utils.c
mail/em-folder-utils.h
mail/em-folder-view.c
mail/em-format-html-display.c
mail/em-format-html.c
mail/em-mailer-prefs.c
mail/em-mailer-prefs.h
mail/em-message-browser.c
mail/em-message-browser.h
mail/em-network-prefs.h
mail/em-popup.c
mail/em-utils.c
mail/importers/Makefile.am
mail/mail-component-factory.c
mail/mail-component.c
mail/mail-config-factory.c
mail/mail-config-factory.h
mail/mail-config.c
mail/mail-dialogs.glade
mail/mail-types.h
plugins/calendar-weather/calendar-weather.c
plugins/mail-account-disable/mail-account-disable.c
plugins/select-one-source/select-one-source.c
po/POTFILES.in
shell/e-component-registry.c
shell/e-component-registry.h
shell/e-component-view.c
shell/e-component-view.h
shell/e-corba-config-page.c
shell/e-corba-config-page.h
shell/e-shell-constants.h
shell/e-shell-settings-dialog.c
shell/e-shell-settings-dialog.h
shell/e-shell-window-commands.c
shell/e-shell-window.c
shell/e-shell.h
shell/e-sidebar.c
shell/e-sidebar.h
shell/e-user-creatable-items-handler.c
shell/e-user-creatable-items-handler.h
shell/es-menu.c
shell/es-menu.h
shell/evolution-component.h
shell/evolution-config-control.c
shell/evolution-config-control.h
shell/evolution-listener.c
shell/evolution-listener.h
shell/evolution-shell-component-utils.c
shell/evolution-shell-component-utils.h
shell/importer/evolution-importer-client.c
shell/importer/evolution-importer-client.h
shell/importer/evolution-importer-listener.c
shell/importer/evolution-importer-listener.h
shell/importer/evolution-importer.c
shell/importer/evolution-importer.h
shell/importer/evolution-intelligent-importer.c
shell/importer/evolution-intelligent-importer.h
shell/importer/intelligent.c
shell/main.c
shell/test/evolution-test-component.c
shell/test/evolution-test-component.h
widgets/menus/gal-view-instance.c
widgets/menus/gal-view-menus.c
widgets/menus/gal-view-menus.h
widgets/misc/Makefile.am
widgets/misc/e-activity-handler.c
widgets/misc/e-activity-handler.h
widgets/misc/e-charset-picker.c
widgets/misc/e-combo-button.c
widgets/misc/e-combo-button.h
widgets/misc/e-config-page.h
widgets/misc/e-dropdown-button.c
widgets/misc/e-dropdown-button.h
widgets/misc/e-filter-bar.c
widgets/misc/e-info-label.c
widgets/misc/e-info-label.h
widgets/misc/e-multi-config-dialog.c
widgets/misc/e-multi-config-dialog.h
widgets/misc/e-search-bar.c
widgets/misc/e-search-bar.h
widgets/misc/e-task-bar.c
widgets/misc/e-task-bar.h
widgets/misc/e-task-widget.c
widgets/misc/e-task-widget.h
widgets/misc/test-dropdown-button.c
widgets/misc/test-error.c
widgets/misc/test-info-label.c
widgets/table/e-table-example-1.c
|
| |
|
|
Split the GTypeModule loader out of EShellModule as EModule, and rename
EShellModule to EShellBackend. Backends (formerly modules) should now
subclass EShellBackend.
This commit converts EShell but breaks all the shell backends.
|