For two axes [a, b] and [x, y] (inclusive), the formula to scale point P(ab)
to (x,y) is:
(P - a)/(b - a) * (y - x) + x
And the whole end result rounded of course to get the integer we need.
It's not especially obvious, and unpleasantly overloaded for the Xnest
case. Typically this gives you a server that looks for its auth data in
the authority file you were using for the running X session, which
generally doesn't have an entry for the display you just started.
All the major dm's, and startx, pass -auth explicitly, so this shouldn't
cause too much upheaval.
Fix the usage of the NSString cStringUsingEncoding: - it doesn't NUL
terminate the string, which lead to a bus error. So, we use
lengthOfBytesUsingEncoding: to get the length in bytes instead of
strlen().
(cherry picked from commit 6333d619e7)
2 of the paths leaked, when INCR transfers were done. Now we
are leak free according to the leaks program for all transfers
I have tried so far.
(cherry picked from commit aa98db576b)
NSAutoreleasePool. Now the usage is consistent. In x_input_run()
we create a pool, and release it after processing the XEvents.
Add some getpid() output to main for debugging. It needs a bit more
testing before the next release.
Don't retain the NSPasteboard as the old code did. That may have
contributed to the leak, and it made it so that we needed the
NSAutoreleasePool created in main().
Remove the _known_types, and _pasteboard instance variables from
the x_selection class. They aren't needed anymore.
The leaks program now indicates 0 leaks after some usage. I want
to test further, but this seems much better, and my memory usage
graph indicates it's not growing.
(cherry picked from commit b245d84a72)
macro causes a leak (according to the leaks program).
Attempt to fix several other leaks with release method calls.
For some reason the process still grows more than it should...
I will need to use some better methods than leaks, and malloc_history
I suspect. Whatever is leaking, it's hard to find. I need to isolate
the cases more.
Add a missing image/jpeg branch.
Remove read_prop_32 - it's not used.
(cherry picked from commit 63a680354d)
A property can only be deleted if any of the following is true:
- if a property is deletable and all handlers return Success.
- if a property is non-deleteable and the all handlers return Success AND the
delete request does not come from a client (i.e. driver or the server).
A client can never delete a non-deletable property.
AllocARGBCursor realizes the cursor but can only do so if we have devices
there already. If we don't - then the cursor needs to be realized elsewhere.
This is usually done in InitializeSprite, but since xfixes just hard-swaps the
(realized) cursor to the InvisibleCursor, we need to manually realize it
before trying to display it.
If we update key types from core, and groups 2 - n have a canonical type but
the same symbols as the explicit type of group 1, assume that it was a core
sym duplication according to Section 12.4 of the XKB Protocol Spec.
Ignore the canonical types and pretend there's only one group for the key -
with the explicit key type.
The protocol spec does not cover this case, so we have to guess here.
According to Section 12.4 of the XKB Protocol Spec, if a key only has a single
group but the keyboard has multiple groups defined, the core description of
the key is a duplication of the single group across all symbols. i.e.
G1L1 G1L2 G1L1 G1L2 G1L3 G1L4 G1L3 G1L4
The previous code generated G1L1 G1L2 G1L3 G1L4 G1L3 G1L4, leading to
"invented" groups when the process is reversed.
Note that this creates wrong key types on reconstruction from core to xkb,
i.e. any single-group key with a key type that is not one of the canonical
four (Sec 12.2.3), will get the assigned type on group 1, and a canonical type
for the other gruops.
X.Org Bug 14373 <http://bugs.freedesktop.org/show_bug.cgi?id=14373>
The intended behaviour was "show as soon as someone calls
XDefineCursor". What you actually got was, uh, slightly less well
defined, since the screen's ChangeWindowAttributes hook would run after
DIX handled the cursor change. Oops.
The trivial way to turn the cursor on is:
% xsetroot -cursor_name gumby
Refer to /usr/include/X11/cursorfont.h for cursor names.
Thanks to anholt for catching this.
Now that the code has been fixed so that Unmap means unmap and not "don't
remap", 'remap' was confusing to have in the function names/parameters, so
change it to simple 'map'.
Signed-off-by: Keith Packard <keithp@keithp.com>
According to the press release:
Previous SGI contributions to the free and open source community
are now available under the new license. These contributions
include the SGI® OpenGL® Sample Implementation, the GLX™ API and
other GLX extensions.
[...]
"SGI has been one of the most ardent commercial supporters of free
and open source software, so it was important to us that we continue
to support the free software development community by releasing our
earlier OpenGL-related contributions under this new license," said
Steve Neuner, director of Linux, SGI. "This license ensures that all
existing user communities will benefit, and their work can proceed
unimpeded. Both Mesa and the X.org Project can continue to utilize
this code in free software distributions of GNU/Linux. Now more than
ever, software previously released by SGI under earlier GLX and SGI
Free Software License B is free."
"The GLX API" is here read to include the original GLX source release
from:
http://www.sgi.com/products/software/opensource/glx/download.html
ftp://ftp.sgi.com/sgi/opengl/glx/glx1_2.1.tgz
which includes glxext.c as included in XFree86, from which our copies
in glx/ and hw/dmx/glxProxy/ are derived.
Since ReparentWindow() does a unmap/map pair for windows that are already
mapped, for saveset windows with SaveSetUnmap, we must unmap the window
before calling ReparentWindow() to avoid the generation of MapRequest
events, and so forth.
Move the struct atom_list into the x-selection class, so that it's
no longer a global variable named atoms. This may ease pthread
integration and reduce the chances of symbols conflicting.
(cherry picked from commit c1403c713c)
We may need another branch to convert a PICT to a PNG or JPEG. For now
TIFF works well in all of the test image copying apps when converted to
PNG or JPEG with an NSBitmapImageRep class.
(cherry picked from commit adf339d8f9)
INCR transfers mixed with a CLIPBOARD change.
Fix a bug with some UTF-8 transfers. I can only guess that my UTF-8
tests before were inadequate. I can now copy/paste any characters between
uxterm and Textedit.app.
(cherry picked from commit 7ca1532e8e)
to verify that the behavior didn't change.
main.m: XInternAtom compound_text, and atom_pair.
pbproxy.h: Add compound_text and atom_pair to the struct atom_list.
x-selection.m: Add an #include of Xutil.h. Refactor the reply struct
initialization to be done in a common place. Add send_reply: to simplify
the code a bit more. Add send_compound_text: which handles the
COMPOUND_TEXT type. Add the beginnings of a send_multiple:. Change
handle_image:extension: to handle_image:. The extension: message isn't
needed anymore.
(cherry picked from commit 1e9460abdf)
We can now copy and paste images to and from X11. Text copying and
pasting works as well.
The NSPasteboard can contain TIFF or PICT images, and pbproxy will
translate to an image/png or image/jpeg request, and list those in the
TARGETS.
I added a description of the basic design at the top of x-selection.m.
I removed the request_data x_selection class struct. It's not needed.
(cherry picked from commit 4a8daf8846)