- factor out native_byte_order determination - fix ExpandMap[] when client X image byte order is different than host's e.g. { mips, ppc } -> x86 in 8 bpp mode
%Ld is for long double, not long long (%lld)
Much improved responsiveness on NetBSD systems. On those systems, it's really hard to get high resolution timings and the system oftens fails to honour a timeout in less than 20 ms. The idea here is to have an average m68k instruction count (countdown quantum) that triggers real interrupt checks. The quantum is calibrated every 10 ticks and has a 1000 Hz resolution on average.
Fix DGA when visible screen is smaller than virtual display, aka fix fullscreen mode when VidMode extension is enabled. Also fix SDL fullscreen to really update the screen as this is necessary by default on Linux since simple windowed is used (and not DGA for fullscreen). Always prefer the 64 pixel chunks update code. Rearrange B2 video_x.cpp to match video_vosf.h updates
Enable multiple depths in fullscreen DGA modes, i.e. add 1-bit to 16/32-bit blitters, rewrite update_display_dga_vosf() to actually work with sub byte pixels. Factor out update_display_window_vosf() since it's long time that it is no longer checking for first column and last column that have changed.
Avoid use of pthread_cancel() for redraw thread cancellation. Use an extra variable to acknowledge cancellation. This avoids Xserver events queue corruption when clipboard is in use. Concretely, this fixes following errors: Xlib: unexpected async reply (sequence 0xHEX)!
Happy New Year!
Force use of MacX mappings with Apple's X server
lock X11 display better around update_display_window_vosf()
Backport copy-paste of 'TEXT' from SheepShaver
Enable 33-bit memory addressing on 64-bit JIT capable platforms (e.g. x86-64). This is useful to get rid of address offset sign extensions. It uses POSIX shared memory to create aliased regions, fallback to usual sign-extension way if shm_open et al. don't work (e.g. no /dev/shm mounted)
Initial SDL/video support. Fix VOSF code could lead to a crash on run-time resolution/depth switching. Rearrange blitter lookup code, aka make it cleaner.
Happy New Year! :)
Rearrange video_vosf.h to accomodate both SheepShaver and BasiliskII video infrastructure. Make video_blit.cpp a little more emulator independent.
- Let fullscreen DGA mode work again, even with a DirectColor visual. In that case, we do need add it when creating the window otherwise we result int a nice BadMatch for X_CreateWindow request. FIXME? - Fix typo and do enable VOSF in DGA mode, if necessary.
fixed compilation problem in fbdev code
- added infrastructure for multi-monitor support; only video_x.cpp is converted for the new scheme; not actually tested with a mult-monitor setup yet but at least single-monitor display doesn't seem to be broken (UAE banked addressing would definitely require some extensions to handle multiple frame buffers) - struct video_mode has an extra field that is free for use by platform- specific code
added missing return values
cleaned up pthread attributes [Brian Johnson]
- documentation updates - 2001 -> 2002 - version 0.9 -> 1.0
- video_x.cpp: the_buffer shall always be mapped through vm_alloc() so that it can be vm_protect()'ed at will afterwards - video_x.cpp: let driver_base free() the_buffer_copy and the_host_buffer, if necessary - video_vosf.h: reverted to use malloc() for mainBuffer.dirtyPages and mainBuffer.pageInfo - vm_alloc.cpp: small cleanups - fixed typos
- 1-bit mode under X11 always uses default visual - fixed possible crash in driver_window dtor (image data would be freed twice, once by XDestroyImage() and once in driver_base dtor) - fixed compilation problems with banked memory - fixed typos
fixed a couple of compiler warnings
- find_visual_for_depth() did not return true on success
- background_pixel, border_pixel and colormap attributes of window are now always set as this seems to be required for non-default visuals
- ADB has its own interrupt flag, INTFLAG_ADB - ADBMouseMoved(), ADBMouseDown/Up() and ADBKeyDown/Up() trigger the ADB interrupt - ADB mutex is only used for mouse movement (the only input state where it matters) - adb.cpp: toggling relative mouse mode resets mouse_x/y - PrimeTime(0) schedules a timer task with 0 delay time; this is still not the correct implementation, but it makes MacSyndicate work... - Unix: pthreads are preferred to POSIX.4 timers for 60Hz ticks because the timers drift badly under Linux and the thread can compensate for drifting well enough - Unix: moved GetTicks_usec() and Delay_usec() to timer_unix.cpp - video_x.cpp: X mouse acceleration is disabled in relative mouse mode because MacOS does its own acceleration - video_x.cpp: palette[].pixel and palette[].flags are always preset - video_x.cpp: decoupled X event handling from 60Hz video refresh cycle by using select() with a timeout on the X fd
- added video_vosf_init()/video_vosf_exit() for initialization and destruction of the internal structures used for the VOSF system - use vm_acquire()/vm_release() for VOSF buffers and hope the_buffer is allocated above RAM address space (temporary workaround for 64-bit addressing systems) - don't free() screen buffers in driver_base dtor - don't free() memory mapped buffers in driver_base dtor
fixed memory leaks in video mode switching
added support for 2/4-bit modes on 8-bit visuals
- an appropriate visual is selected for the requested Mac color depth - the list of supported Mac color depths is constructed from the list of depth and visuals supported by the X server
- improved compatibility of multiple depth/resolution handling with versions of MacOS before 7.6: - Apple mode IDs are now allocated contiguously from 0x80 (the video_*.cpp module must call video_init_depth_list() after adding all modes) - if the video driver didn't receive a GetVideoParameters call, it patches ScrnBase and the main GDevice upon a video mode switch (otherwise MacOS will continue to use the old frame buffer base) - the rowBytes values in the video parameters slot resources are correct for all bit depths
- added support for platform-independant mutexes, currently only properly implemented under Unix - adb.cpp uses mutexes for thread-safe mouse handling - video_x.cpp: pressing Ctrl-F5 in windowed mode switches to a "grabbed" relative mouse mode, useful for some games - video_x.cpp: fixed some bugs relating to the hotkeys (key releases are no longer treated as hotkeys)
- video_set_palette() gets passed the number of used palette entries - video_x.cpp supports 2- and 4-bit modes on truecolor screens
added support for 8-bit windowed modes on 16 and 32-bit screens (for the games, man, the games! :-)
- sony.cpp/disk.cpp/cdrom.cpp use vector<> of drive_info objects instead of linked list - color depth switching updates slot ROM - video_x.cpp always supports 1-bit window modes - timer_create()/clock_gettime() are pulled from librt if present
- added some documentation - VidLocal.sp -> VidLocal.slot_param - X11 color map is loaded with ramp upon startup to avoid the annoying black screen during initialization
gamma tables work with X11
- fixed compilation problems in fbdev DGA code - nicer "about" dialog in GTK prefs editor - display refresh is inhibited during mode switch if !HAVE_PTHREADS
- experimental gamma table support - restructured video_x.cpp: uses classes for display types
zero_fd is not longer used since vm_alloc.cpp should handle that correctly. However, vm_init() and vm_exit() are called in main_unix.cpp to ensure proper initialization of the internal zero_fd descriptor, if needed. i.e. no anonymous mapping for mmap()-based memory allocation.
video_x.cpp supports resolution switching in windowed mode: the available resolutions are 512x384, 640x480, 800x600, 1024x768 and 1280x1024 (the prefs editor has to be updated to reflect this). The resolution selected in the prefs editor is used as the default, but it can be changed in the Monitors control panel. So far only tested with direct addressing.
depth/resolution switching infrastructure should be complete now; slot ROM contains all supported depths, default mode is stored in XPRAM upon startup, and added video_switch_to_mode() call (currently unimplemented in all drivers)
added infrastructure for resolution/depth switching (currently, all video drivers only support one mode, the one selected by the user)
- added SIGSEGV support for Linux/Alpha (to be checked), Darwin/PPC - added uniform virtual memory allocation (supports mmap(), vm_allocate(), or fallbacks to malloc()/free()) - cleaned up memory allocation in main_unix.cpp
- new and updated SIGSEGV support functions: + configure script cleanups + possible support for Direct Addressing / VOSF on other platforms
added patches from Brian J. Johnson (better VOSF performance and responsiveness)
Mainly changes to the VOSF code: - improved blitters selection - improved blitters performance if UNALIGNED_PROFITABLE is set - cleaned up 8 bpp blitters
- Cleaned up some comments again - The dirtyPages[] array overrun conditions should be really safe now
- Cleaned up the process for determining the ranges of pages touched that have to be blitted onto the screen (find_next_page_set() and find_next_page_clear() functions) - Cleaned up some comments Changes from Brian J. Johnson - Fixed mainBuffer.dirtyPages[] array overrun in VOSF code - Fixed calculation of the frames-per-second value
XFree() doesn't need casting
- removed the INT16 prefs item type; use INT32 instead - AmigaOS/Unix: it's now possible to specify preferences items on the command line - Unix: command line options now take "--"-prefix, e.g. "--rominfo"
fixed fbcopy_16_obo on big-endian systems
window close widget now maps to Mac "power" key
- clicking on the "close" widget of the MacOS display window rings the bell but doesn't actually close the window to prevent Basilisk II from being accidentally killed without a proper shutdown of MacOS - replaced many #ifdef HAVE_PTHREADS constructs with LOCK/UNLOCK macros - minor cleanups
removed unnecessary window attributes
- added audio support for IRIX [Brian J. Johnson] - improved Delay_usec() under FreeBSD and IRIX - fixed typo ("HAVE_PTHREDS") in video_x.cpp
video_x.cpp: window asks for input focus with XSetWMHints()
- replaced floating-point page shift calculation by integer routine, fixing the VOSF problems under NetBSD/m68k - fixed off-by-7 error in 1-bit window update routines
- added a few more emulated privileged instructions to NetBSD/m68k - tried to make VOSF run under NetBSD/m68k, little success (shows stripes and sometimes crashes)
works again under NetBSD/m68k
added SA_SIGINFO to sa_flags when sa_sigaction is used
- fixed a bug in the previous patch that would fail to redraw the screen if dynamic refresh is used. - cleaned up resume_emul() in DGA mode with VOSF.
- cleaned up Expose event handling with VOSF
- added direct and real addressing modes support - added Video on SEGV signals support
- improved timing of periodic threads
- new FOURCC() macro in macos_util.h
- DGA and SHM are only tried on local X11 displays - re-integrated old window update method (better performance over a networked display connection), frameskip=0 selects new method, other values select old method - fixed compilation errors
- first version to run natively on NetBSD/m68k
- updated copyright info: 1999->2000
- new window refresh code from Samuel Lander
*** empty log message ***
- imported UAE CPU 0.8.10 changes - new utility functions Mac_memset, Mac2Host_memcpy, Host2Mac_memcpu and Mac2Mac_memcpy - extfs.cpp: fixed bug in fs_rename() and fs_cat_move() (auxiliary IOParam block was not in Mac address space) - some provisions for using UAE CPU compiler (doesn't work yet)
- added mouse wheel support
- small fixes to fbdev DGA code
- added fbdev DGA preferences to GTK prefs editor
- added fbdev video code and SPARC assembly optimizations
- disabled X backing store
- fixed some compiler warnings - video_x.cpp: now checks whether the X server has the XFree86DGA extension
- improved configuration and installation
- screen prefs "dga" changed to "dga/<width>/<height>", with zero width/height meaning "maximum" (also for window mode) - Caps Lock now behaves as expected
- renamed basilisk_ii_keycodes to keycodes - default location of keycodes file is now $(sharedir)/keycodes (depends on install prefix) - improved the install target
Initial revision
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.