Commit Graph

24 Commits

Author SHA1 Message Date
Jehan de6e37ebb5 app: use gimp_is_restored() rather than object variables.
Since commit 4473951d4b, the function check for both initialized and
restored variables. So let's use this.
2022-03-12 18:59:36 +01:00
Jehan b2649daf11 app: improve opening images through the DBus service.
- Set the software as `initialized` later, and in particular after all
  recovered images (from crash) then all command line images were
  opened. The reason is that the DBus calls have necessarily been made
  after GIMP was started (typically could be images double-clicked
  through GUI). We don't want them to appear before the images given in
  command line (or worse, some before and some after).
- Process DBus service's data queue as a FIFO. The image requested first
  will be loaded first.
- When a DBus call happens while GIMP is not initialized or restored,
  switch to a timeout handler. The problem with idle handlers is that
  they would be attempted too often (probably even more during startup
  when no user event happens). This is good for actions we want to
  happen reasonably quickly (like would be normally DBus calls), but not
  when we are unsure of program availability schedule (i.e. at startup).
  Here not only the handler would run a lot uselessly but it would
  likely even slow the startup down by doing so. So while GIMP is not
  initialized, switch to half-a-second timeout handler, then only switch
  back to idle handler when we are properly initialized and GIMP is
  ready to answer calls in a timely manner.
2020-11-10 22:33:25 +01:00
Jehan a86ed68870 app: wait for the software to be fully initialized before processing…
… DBus calls.
In particular, Aryeom would start GIMP and directly double click some
image to be loaded in GIMP in the very short while when splash is
visible. Previous code would wait for the `restored` flag to be TRUE.
This was nearly it as we can actually start loading images as soon as
the 'restore' signal has passed. Yet the flag is set in the main
handler, but we actually also need the <Image> UI manager to exist,
which is created in gui_restore_after_callback() (so also a 'restore'
handler, yet after the main signal handler, i.e. after `restored` is set
to TRUE). Without this, gui_display_create() would fail with a CRITICAL,
hence file_open_with_proc_and_display() as well.

I could have tried to set the `restored` flag later, maybe with some
clever signal handling trick (and handle both the GUI and non-GUI cases,
i.e. I cannot set the flag inside gui_restore_after_callback() as it
would break the non-GUI cases). Instead I go for a simpler logics with a
new `initialized` flag which is only meant to be set once, once
everything has been loaded, i.e. once you can consider GIMP to be fully
running hence ready to process any common runtime command.
2020-11-10 21:51:57 +01:00
Michael Natterer 5f700549e7 Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
Michael Natterer 5ece7a8d1f Port a lot of stuff from GdkScreen/monitor_number to GdkMonitor
including some fixes for getting pointer coords, and needed
API changes in libgimpwidgets.
2018-05-20 21:06:30 +02:00
Jehan 3fa016fb4b app: clean out tab indentations. 2016-12-21 04:05:32 +01:00
Michael Natterer cb8e16aae8 app: move app/batch.[ch] to app/core/gimp-batch.[ch]
There is no reason batch processing should be considered "glue code".
2015-09-30 01:57:33 +02:00
Jehan cd2b395194 app: batch commands won't run on existing instance. 2015-09-28 22:31:21 +02:00
Michael Natterer a6aa35df57 app: port file_open_from_command_line() to GFile
Use g_file_new_for_commandline_arg() and remove
file_utils_any_to_file().
2014-07-07 23:58:11 +02:00
Michael Natterer 0f8d84d5e9 app: port all file_open() and file_save() functions to GFile 2014-07-07 23:58:11 +02:00
Michael Natterer 7f23fbec34 app: add screen and monitor to all display and image window constructors
so they appear on the proper monitor as well.
2014-05-02 20:21:41 +02:00
Michael Natterer c4460e846b Bug 622934 - Migrate from dbus-glib to glib's GDBus
Drop the glib-dbus dependency and port stuff to GDBus. Use it
unconditionally if not on Windows or OSX. It seels to work just like
before but I have no idea if everything is really correct.
2013-05-24 23:25:47 +02:00
Michael Natterer 774b6e3c16 app: return a format, not image type from file_open_thumbnail()
create a dummy indexed format if neccessary, which can only be used
for checking with babl_format_is_palette(). Port the rest of
GimpImageFile from GimpImageType to Babl*.
2012-05-02 17:51:03 +02:00
Michael Natterer ac98c2c234 Use gimp_display_get_shell() instead of directly accessing it 2009-10-04 19:56:39 +02:00
Michael Natterer 31a41c2b3d Use gimp_display_shell_present() instead of gtk_window_present() 2009-10-04 19:27:58 +02:00
Michael Natterer 27994481c9 (gimp_dbus_service_activate): present the toplevel not the shell 2009-10-04 15:50:28 +02:00
Michael Natterer d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
2009-01-17  Michael Natterer  <mitch@gimp.org>

	* all files with a GPL header and all COPYING files:

	Change licence to GPLv3 (and to LGPLv3 for libgimp).

	Cleaned up some copyright headers and regenerated the parsers in
	the ImageMap plugin.


svn path=/trunk/; revision=27913
2009-01-17 22:28:01 +00:00
Sven Neumann 8f425553a7 added signal Gimp::image-opened to announce that an image has been loaded
2008-10-17  Sven Neumann  <sven@sven>

	* app/core/gimp.[ch]: added signal Gimp::image-opened to 
announce
	that an image has been loaded and a display was created for it.

	* app/file/file-open.c (file_open_with_proc_and_display): call
	gimp_opened() to emit the new signal.

	* app/gui/dbus-service.xml
	* app/gui/gimpdbusservice.[ch]: propagate the 'opened' signal to
	listeners of the "org.gimp.GIMP.UI" DBus service.

	* app/gui/gui-unique.c: formatting.


svn path=/trunk/; revision=27297
2008-10-17 12:03:08 +00:00
Sven Neumann 95cd081d13 added a 'restored' flag to the Gimp object and set it in
2008-09-25  Sven Neumann  <sven@gimp.org>

	* app/core/gimp.[ch]: added a 'restored' flag to the Gimp object
	and set it in gimp_real_restore(). Added method 
gimp_is_restored().

	* app/gui/gui.c: call gui_unique_init() in gui_init() instead of
	that later in gui_restore_after_callback(). By doing so we start
	our DBus service (or message proxy window on Win32) much earlier
	in the start process, thus reducing the time frame where two
	instances of gimp can be launched.

	* app/gui/gui-unique.c
	* app/gui/gimpdbusservice.c: wait handling the queued file-open
	requests until gimp is fully restored.

	* app/gui/splash.c (splash_update): only run one iteration of 
the
	main loop. Doing it in a while loop can cause us to get stuck if
	the gimp-unique service already added an idle handler.


svn path=/trunk/; revision=27049
2008-09-25 08:56:58 +00:00
Sven Neumann 597dc249cf minor cleanups.
2008-08-06  Sven Neumann  <sven@gimp.org>

	* app/gui/gimpdbusservice.c: minor cleanups.


svn path=/trunk/; revision=26398
2008-08-06 08:15:36 +00:00
Sven Neumann c12b5e932b changed refcounting and fixed a bug that I had introduced with the latest
2008-08-05  Sven Neumann  <sven@gimp.org>

	* app/gui/gimpdbusservice.[ch]: changed refcounting and fixed a
	bug that I had introduced with the latest changes.


svn path=/trunk/; revision=26391
2008-08-05 17:29:19 +00:00
Sven Neumann 38df72dcbd keep a queue of D-Bus requests and work on them one after another instead
2008-08-05  Sven Neumann  <sven@gimp.org>

	* app/gui/gimpdbusservice.[ch]: keep a queue of D-Bus requests 
and
	work on them one after another instead of handling them all in
	parallel. Complements the fix for bug #546426.


svn path=/trunk/; revision=26386
2008-08-05 16:09:29 +00:00
Sven Neumann 8cf6197552 open the files from an idle handler. Opening a file may take a while (in
2008-08-05  Sven Neumann  <sven@gimp.org>

	* app/gui/gimpdbusservice.c: open the files from an idle 
handler.
	Opening a file may take a while (in particular if it involves
	asking the user for input) and we need to respond to the D-Bus
	call before it times out.


svn path=/trunk/; revision=26370
2008-08-05 09:02:04 +00:00
Sven Neumann f56bc8493f app/widgets/Makefile.am app/widgets/gimpdbusservice.[ch] removed here ...
2008-07-13  Sven Neumann  <sven@gimp.org>

	* app/widgets/Makefile.am
	* app/widgets/gimpdbusservice.[ch]
	* app/widgets/dbus-service.xml: removed here ...

	* app/gui/Makefile.am
	* app/gui/gimpdbusservice.[ch]
	* app/gui/dbus-service.xml: ... and moved here.
	(gimp_dbus_service_activate): raise the first display instead of
	the toolbox.

	* app/gui/gui-unique.c (gui_unique_win32_idle_open): same change
	here, raise the display instead of the toolbox.

	* app/unique.c: changed accordingly.


svn path=/trunk/; revision=26184
2008-07-13 19:49:32 +00:00