Commit Graph

1133 Commits

Author SHA1 Message Date
gbeauche
1470a8af13 NQD dirty boxes, SDL backend.
This reduces the number of Screen_fault_handler() calls by 80%. i.e. VOSF
is now viable on this turtle MacOS X. Besides, since there is no buffer
comparison, idle sleep can really be effective. SheepShaver in idle mode
on my PBG4 now goes below 8% of CPU resources instead of 70-80% with
bounding boxes based video refreshes.

Caveat: if your program doesn't use standard MacOS routines that call NQD,
then you can expect slower (visual) performance. However, I do think the
new default behavior (VOSF+NQD) is the most common.
2006-05-13 16:58:44 +00:00
gbeauche
e4015e069f Use NQD dirty boxes, VOSF backend
+ make video_vosf_profitable() NQD accel aware
+ call vm_protect() only if PFLAG_CLEAR(page)
2006-05-13 16:48:47 +00:00
gbeauche
3b07ba27e4 Introduce a new video refresh function that uses smaller bounding boxes.
This does not improve graphics performance but helps CPU because it reduces
the number of bytes transfered to actual screen. I saw an improvement by up
to 26% in frameskip 4 800x600x16 but also a hit by 3% with frameskip 0.

The next step is to use NQD bounding boxes to help detecting dirty areas.

So far, this is the best I can do without VOSF working (MacOS X performance
bugs -- pitifully slow Mach syscalls)
2006-05-11 07:51:32 +00:00
gbeauche
5019174a22 SDL Video updates:
- Properly handle migration from "screenmodes" and "windowmodes" to "screen"
- Fix has_mode() logic to really test for actual mode availability. i.e.
  no longer start in large screen mode if user specified a max size.
2006-05-09 21:41:02 +00:00
gbeauche
4c225b2705 MacOS X exception handling updates:
- Call user handler for KERN_INVALID_ADDRESS too (SIGBUS)
- Check for VALID_THREAD_STATE_FLAVOR in forward_exception()
- Return KERN_FAILURE if forward_exception() got an unknown behavior code
2006-05-09 06:24:05 +00:00
gbeauche
24af8d27c3 Fix for LAZY_FLUSH_ICACHE_RANGE. Blocks are indexed by native addresses. 2006-05-08 16:56:07 +00:00
gbeauche
ecdc036c69 Adapt for new functions (DarwinSysInit() & DarwinSysExit()) 2006-05-08 15:22:56 +00:00
gbeauche
61a2e86594 Rewrite MacOS X CD-ROM support.
Other bugs fixed:
- CD-ROM media are polled and now can be changed without rebooting
- Buffer overflow, memory leak and extra wait in CD-ROM ejection code
2006-05-08 12:15:58 +00:00
gbeauche
ff950c35e6 fix underquoted definition warning 2006-05-05 07:37:14 +00:00
gbeauche
5d3f53943d Add another NULL pointer check 2006-05-05 06:00:17 +00:00
gbeauche
1314f09a68 remove 2006-05-05 05:56:52 +00:00
gbeauche
2bff888cee updates 2006-05-05 05:56:20 +00:00
gbeauche
828b53b990 fix rev 1.22 commit for windows (extraneous return -1 left) 2006-05-02 19:49:25 +00:00
gbeauche
51a5e4c0da Don't build a built-in GUI if --enable-standalone-gui was requested.
The following configurations were tested:
./configure --without-mon --with-gtk=gtk1 --enable-jit-compiler	  [B.GTK1]
./configure --without-mon					  [B.GTK2]
./configure --without-mon --enable-standalone-gui --without-gtk	  [no GUI]
./configure --without-mon --enable-standalone-gui --with-gtk=gtk1 [S.GTK1]
./configure --enable-jit-compiler --enable-standalone-gui	  [S.GTK2]
2006-05-02 05:36:42 +00:00
gbeauche
62389bb3c0 Add my local changes to GTK+OSX 0.7 -- it's only correct for Basilisk II
and SheepShaver purposes. i.e. it's not fully suitable as a generic
g_main_run() replacement.
2006-05-01 23:09:12 +00:00
gbeauche
daa0af4da6 improve locks 2006-05-01 13:13:18 +00:00
gbeauche
f853ce6c5b Handle compatibility with older preferences files.
- routerenabled true
- ether GUID
both have priority over regular options.
2006-05-01 10:42:00 +00:00
gbeauche
c9c21cf70d Add ether "tap" support to the GUI. Also fix "slirp" callback. 2006-05-01 10:27:17 +00:00
gbeauche
11ff11d205 Add experimental TAP-Win32 support. It looks rather sluggish to me, something
is probably wrong somewhere...
2006-05-01 10:23:47 +00:00
gbeauche
6590198dd8 aha, quick fix ;-) 2006-05-01 06:14:08 +00:00
gbeauche
5fed65456b Implement better Windows suspend/resume routines so that we don't oversleep.
i.e. really wake up the thread on next TriggerInterrupt().
2006-05-01 06:12:50 +00:00
gbeauche
2e6ae14c4c Note new "idlewait" feature 2006-04-30 21:49:50 +00:00
gbeauche
8ccf336660 Add "idlewait" to Basilisk II for Windows 2006-04-30 21:46:31 +00:00
gbeauche
5aa8c9f86f Tentative fixes to BeOS idle suspend/resume routines. Well, I have no-op'ed
them. So, if someone has BeOS and wants to give it a try, please change and
test this new code. Corner case could be a resume_thread() when emul_thread
is not suspended.

Fixlet to powerrom_cpu: call idle_resume() from TriggerInterrupt().
2006-04-30 21:26:21 +00:00
gbeauche
4f07113555 Patch SynchIdleTime() to implement new "idlewait" prefs item. 2006-04-30 21:16:48 +00:00
gbeauche
52ff4b209b Implement dummy idle suspend/resume routines for AmigOS 2006-04-30 21:13:21 +00:00
gbeauche
8fa12f4819 Fix PutScrap() patch with Mac Classic ROMs. Untested but it should work
again provided you build with --enable-addressing=banks
2006-04-30 17:27:55 +00:00
gbeauche
c9ae122d1b handle creation time on MacOS X 2006-04-30 15:46:55 +00:00
gbeauche
5c9e121b7d Workaround finderFlags problem on folders in MacOS X 10.4.
TODO: implement the same ".finf/" trickery as for Unix versions.
2006-04-30 14:46:15 +00:00
gbeauche
6a035aa279 update GUI with ether "slirp" on win32 2006-04-29 14:15:01 +00:00
gbeauche
08a6e383e8 slirp now works on windows 2006-04-29 10:57:56 +00:00
gbeauche
08b783d52b slight updates for win32... 2006-04-29 10:54:12 +00:00
gbeauche
f0d77218c8 fix build on win32 2006-04-29 10:41:25 +00:00
gbeauche
8ca74c4eac FAST_TIMO is 2 ms not 2 usec. Noticed on Windows but this obviously can't
fix my problem with slirp_select_fill() there as it still doesn't fill in
any socket descriptor. :-/ I think I won't bother much for Windows...
2006-04-26 06:26:14 +00:00
gbeauche
f56f28b813 updates 2006-04-23 15:44:44 +00:00
gbeauche
02c1747d34 Update the GUI with the new ethernet configuration changes. Handle migrations
from the GUI. Also move from a combo to a fixed popdown menu with pretty
printed ethernet interfaces.
2006-04-23 15:40:23 +00:00
gbeauche
732109eff2 Some clean-ups. Rewrite ethernet config interpreter. This implies some
prefs items changes but it should now be simpler to add other ethernet
emulation means (slirp, tap-win32).

# Basilisk II driver mode
	ether {guid}
becomes
	ether b2ether
	etherguid {guid}

# Basilisk II Router mode
	routerenabled true
becomes
	ether router
2006-04-23 15:36:51 +00:00
gbeauche
9232fbe4df Avoid the use of min(). Add helpers to access the network control panel
registry -- aka get pretty printed names from GUID ethernet devices.
2006-04-23 15:20:31 +00:00
gbeauche
2d5c088601 Make it possible to build Basilisk II for Windows with SDL libraries
statically linked in.
2006-04-20 22:36:26 +00:00
gbeauche
fb332c4e38 Add mkstandalone -- make a standalone bundle with GTK runtime 2006-04-19 22:51:27 +00:00
gbeauche
6d15429156 Always build the STANDALONE_GUI hooks into Basilisk II. 2006-04-19 06:55:54 +00:00
gbeauche
180f3edafd Enable build of RPC code without pthreads (for Basilisk II and SheepShaver)
since we use our own custom message dispatch loop
2006-04-19 06:47:15 +00:00
gbeauche
622eca9068 Handle MacOS X bundles, search order: BasiliskII.app in the same directory
as BasiliskIIGUI.app, or /Applications/BasiliskII.app if none was found.

Also make yet another arrangement for MacOS X "difference". This scenario
was not working: WarningAlert -> ErrorAlert, the latter was not performed
because the exit status was not properly filled in sip->si_status...
2006-04-18 22:17:31 +00:00
gbeauche
d2e672c38f Fix NO_B2_EXE_FOUND (again) -- catch it very early, hence the SIGCHLD. Use
new rpc_wait_dispatch() function and gracefully get out of the main loop
when the child returns, though this is caught but the sigchld_handler().
2006-04-18 21:29:01 +00:00
gbeauche
758050ac73 Implement rpc_wait_dispatch() 2006-04-18 21:24:12 +00:00
gbeauche
3fda1a3af7 - Only start the emulator if requested (click on the "Start" button)
- Rewrote dispatch loop to accomodate GTK+1.2 for MacOS X (which doesn't
  like threads nor forks(!)). The latter also requires an additional patch
  to the version 0.7 available on SourceForge
- Run-time detect JIT capability so that we could hopefully use the ppc GUI
  on intel based Macs (check!)
2006-04-17 21:22:01 +00:00
gbeauche
02c24ed6c2 Create MacOS X bundle for BasiliskIIGUI.app. Also make sure to only link in
necessary GUI_LIBS and not all of the LIBS.
2006-04-17 15:32:37 +00:00
gbeauche
a295eea890 Fixes for GTK+1.2 GUI on MacOS X 2006-04-17 14:25:57 +00:00
gbeauche
5b1977b9f2 Fixes for MacOS X (10.2 has no <sys/poll.h> and 10.4 version is broken). 2006-04-17 09:06:32 +00:00
gbeauche
252f396ff3 Make Basilisk II main application not use GTK libraries when compiling with
STANDALONE_GUI. This is the second step towards a more interesting GUI alike
to VMware. Communication from/to the GUI is held by some lightweight RPC.

Note: The step should be enough to provide a tiny GTK GUI for MacOS X.
2006-04-16 21:25:41 +00:00