Due to various reasons I'm now using Cygwin/X Emacs, and for this emacs, (gui-get-selection) method is kind of slow (about 0.2) seconds.
While this is not a big deal usually, (org-get-x-clipboard) calls (gui-get-selection) 4 times with different formats (utf8, text, compound-text and string).
On top of that, (org-capture-fill-template) calls (org-get-x-clipboard) 3 times with PRIMARY, CLIPBOARD and SECONDARY, and then calls it again to make values for the ^%C expansion.
In addition it also calls (current-kill 0), which in itself calls (gui-selection-value), which also may call (gui-get-selection up to 4 times), and has a side effect of clearing the clipboard if select-use-clipboard is true.
All of the above calls are made even if template parameters don't have any expansions that reference selection.
This results in org-capture having about 16 second hang for me on Cygwin/X when clipboard and selection are completely empty.
Attached patch changes it so that we only call (org-get-x-clipboard) and (current-kill 0) lazily. The logic had not changed, we just don't pre-cache values that we don't need.