NameDateSize

..16-Mar-201612 KiB

.gitignore29-Dec-2012913

acinclude.m429-Dec-20125.7 KiB

AUTHORS29-Dec-2012648

autogen.sh29-Dec-20127.3 KiB

build/14-Feb-20124 KiB

cairo/29-Dec-20124 KiB

cairo-patches/29-Dec-20124 KiB

ChangeLog29-Dec-201253.6 KiB

class/29-Dec-20124 KiB

configure.ac29-Dec-201211.2 KiB

COPYING29-Dec-201233

curl/29-Dec-20124 KiB

data/29-Dec-20124 KiB

demo-status.sh29-Dec-201220.2 KiB

demo-status.txt29-Dec-201211.3 KiB

examples/29-Dec-20124 KiB

gallium/29-Dec-20124 KiB

generators/29-Dec-20124 KiB

gtk/29-Dec-20124 KiB

icons/29-Dec-20124 KiB

INSTALL29-Dec-20129.3 KiB

LICENSE29-Dec-20123.1 KiB

m4/29-Dec-20124 KiB

Makefile.am29-Dec-20122.8 KiB

man/29-Dec-20124 KiB

moon.mds29-Dec-20126.4 KiB

moon.pc.in29-Dec-2012257

moonlight.spec.in29-Dec-201210.1 KiB

NEWS29-Dec-20121.5 KiB

perf/29-Dec-20124 KiB

pixman/29-Dec-20124 KiB

plugin/29-Dec-20124 KiB

README29-Dec-20129.7 KiB

README.darwin29-Dec-2012534

runtime/29-Dec-20124 KiB

scripts/29-Dec-20124 KiB

sdk/29-Dec-20124 KiB

src/29-Dec-201212 KiB

test/29-Dec-20124 KiB

TODO29-Dec-20122.2 KiB

tools/29-Dec-20124 KiB

wishlist29-Dec-2012173

README

1	
2This is Moonlight, an open source implementation of Silverlight 1.0, 2.0, 
33.0 and 4.0 for Unix systems.   
4
5See http://www.mono-project.com/Moonlight for more information. 
6
7Installation
8============
9
10	For standard Unix configuration/installation instructions, see the INSTALL file.
11
12Requirements
13============
14
15	At this time, Moonlight trunk (this release) requires you to use
16	trunk to get the required dependency (e.g. latest Mono.Cecil) and
17	compilers (e.g. the new 'mcs' compiler). To build mono, do like this:
18
19		git clone git://github.com/mono/mono.git system-mono
20		cd system-mono && ./autogen.sh && make && sudo make install
21		
22	Note that here we checkout mono to a different directory than below.
23
24	To build Moonlight, you'll also need to get the source code for mono
25	and mono-basic repositories from a specific revision from trunk.
26
27	Do this like this:
28            git clone git://github.com/mono/moon.git moon
29            git clone git://github.com/mono/mono.git mono
30            cd mono && git reset --hard f41f710 && cd ..
31            git clone git://github.com/mono/mono-basic.git mono-basic
32            cd mono-basic && git reset --hard 4ef1fbe && cd ..
33
34	To build pixel shader support, you need to get a specific
35	revision of the mesa repository.
36
37	Do this like this:
38            git clone git://anongit.freedesktop.org/mesa/mesa
39            cd mesa && git reset --hard 3ed0a099c && cd ..
40
41	The revision the codecs currently are at is: 15e2b1b2 (only applicable to buildbots
42	and developers on the Moonlight team). For SVN users, the revision is: 10364
43
44	The package wnck-sharp is also required, it can be found in the gnome-desktop-sharp
45	repository on github:
46		https://github.com/mono/gnome-desktop-sharp
47	Alternatively, on ubuntu/debian, the gnome-desktop-sharp2 package provides it.
48
49Compiling Mono for Moonlight
50============================
51
52	Automatic Mode (recommended)
53	===========================
54
55	This is recommended if you haven't built Mono before. This is also recommended if you
56	have clean mono and mcs checkouts that you are going to use just for Moonlight.
57
58	In this mode, you don't have to build Mono before building Moonlight, so you just do
59
60                cd moon
61                ./autogen.sh
62                make && make install
63
64
65	This will configure your Mono source tree with the minimum options required
66	to build it for Moonlight. At the moment, these are:
67
68		--with-moonlight=only --with-profile4=no --enable-minimal=aot,interpreter
69		--with-ikvm-native=no --with-mcs-docs=no --disable-nls --disable-mono-debugger
70		--with-sgen=no
71
72	This Mono configuration will not be suitable for anything except Moonlight.
73
74	If you want to use SGen with Moonlight, you'll need use the following option when
75	running autogen.sh:
76
77		--with-sgen=yes
78
79	Warning: Moonlight+Sgen has not been fully tested yet, and is likely unstable.
80	*Enable this at your own risk*
81
82	Build only Mode (advanced)
83	==========================
84
85	This is recommended if you have built Mono before and you would like Moonlight to use
86	your existing Mono source tree. This is for advanced users only - make sure you know
87	what you're doing.
88
89	In this mode, Moonlight will not touch your existing Mono configuration, it will build
90	the parts it needs. Since it doesn't do a full build of mono+mcs, it's faster than a
91	normal mono+mcs build.
92
93	Before building moon, you need to make sure your mono configuration includes the
94	following options:
95
96		--with-moonlight=yes
97	
98	And you need to configure mono-basic like this:
99	
100		--with-moonlight-yes --moonlight-sdk-path=<mono checkout>/mcs/class/lib/moonlight_raw
101
102	To build moon in this mode, configure it with the following options:
103
104		--with-manual-mono=build
105
106	If you want to use SGen with Moonlight, you'll need to use the following option:
107
108		--with-sgen=yes --with-moon-gc=sgen
109
110	Warning: Moonlight+SGen has not been fully tested yet, and is likely unstable.
111	*Enable this at your own risk*
112
113
114	Manual Mode (really advanced)
115	=============================
116
117	On this mode, moon will not configure or build mono, you have to do it yourself.
118	To activate this mode, configure moon with --with-manual-mono=yes
119
120
121
122Configuration options
123=====================
124
125	If your mono/mcs checkout is not in the same place where you have your moon
126	source, you can configure moon with:
127
128		--with-mcs-path=/path/to/mcs
129
130
131	If you want to use ffmpeg with Moonlight, you need at least r20911 of ffmpeg and r30099 of libswscale:
132
133		svn co -r 20911 svn://svn.mplayerhq.hu/ffmpeg/trunk && cd trunk/libswscale && svn up -r 30099
134
135Installing and Testing
136======================
137
138	If you want to test your newly installed Moonlight, do this:
139
140		make test-plugin
141
142	This will install it into your ~/.mozilla/plugins which will let
143	both Firefox and Chrome pick it.
144
145
146Profiling
147=========
148
149	A custom profiler is available which allows you to track which objects
150	are being kept alive by strong GCHandles and also see the stacktrace
151	for every gchandle that was not freed.
152
153	This profiler is only built if you pass --with-object-tracking=yes to
154	autogen and then subsequently be enabled as follows:
155
156	export MOON_PROFILER=gchandle
157
158	On application shutdown, right before the appdomain is freed, a GCHandle
159	'leak' report will be printed. This will show all the objects being
160	retained in memory because they have a strong gchandle attached to them.
161	If you want to see where the gchandles were allocated you just have to
162	export the following variable. This example will print the stacktraces of
163	all the unfreed strong gchandles for the Uri type:
164
165	export GCHANDLES_FOR_TYPE=Uri
166
167	If multiple strong handles are targetting the same CLR object, these
168	will be grouped together. This makes it easy to see if 10,000 handles
169	are targetting the same object or if its 10,000 different objects.
170
171
172Runtime Options
173===============
174
175	There are a couple of runtime-parameters that affect Moonlight behavior
176	and turn on/off certain features. Those options are specified through
177	the MOONLIGHT_OVERRIDES env variable. The more interesting ones are:
178
179	* shapecache=yes/no 
180
181		Use some extra memory for caching shapes.  Increases
182		memory usage but helps with performance (off by
183		default). The shape cache size is 6MB max.
184
185	* render=ftb/btf
186
187		Use front-to-back or back-to-front rendering (ftb is
188 		the default).
189
190	* cache=show/hide 
191
192		Show the (shape) cache usage statistics. In plugin
193		mode they're available through the right-click popup
194		menu (hide by default). 
195
196	* converter=yuv/ffmpeg 
197
198		Use native mmx/sse2 conversion code or ffmpeg to do
199		the yuv -> rgb colorspace conversion (by default we
200		use the native yuv code).
201
202	To launch Firefox with shape caching and ffmpeg converters use:
203
204		$> MOONLIGHT_OVERRIDES="shapecache=yes,converter=ffmpeg" firefox
205
206
207	Other options include:
208
209	* ms-codecs=yes/no
210	* ffmpeg-codecs=yes/no
211
212		Controls which sets of codecs to use, the Microsoft
213		ones or the ffmpeg ones.
214
215	* timesource=manual/system
216
217		Defaults to `system'.   
218
219
220	Also if --with-debug=yes option was provided to configure script, the
221	MOONLIGHT_DEBUG env variable controls which debug output is printed
222	on the console. Valid values are: 
223
224        	alsa, alsa-ex, audio, audio-ex, pulse, pulse-ex, httpstreaming, 
225        	markers, markers-ex, mms, mediaplayer, mediaplayer-ex, pipeline, 
226        	pipeline-error, framereaderloop, ui, ffmpeg, codecs, dependencyobject, 
227        	downloader, font, layout, media, mediaelement, mediaelement-ex, 
228        	buffering, asf, playlist, playlist-warn, text, xaml
229
230
231	Moonlight currently contains two ASX parsers. The default
232	parser is a custom parser that accounts for some of ASX's
233	oddities such as quotes in attribute strings and non case
234	sensitive element names (ie <foo></FOO>). The older parser
235	uses a true xml parser, so will not handle these oddities
236	well, however it has been more heavily tested. To use the
237	older expat based playlist parser set the env variable
238	MOONLIGHT_USE_EXPAT_ASXPARSER=1.
239
240	There are two XAML parsers available in Moonlight. An
241	unmanaged one that is used for Silverlight 1, 2 and 3
242	applications and a managed one that is used for silverlight 4
243	(and above) applications.  The parser is determined at runtime
244	after the app manifest is read.  The unmanaged parser is
245	always used to parse the app manifest.  After that the correct
246	parser is determined based on Deployment::RuntimeVersion.
247
248	You can force moonlight to use the managed parser on all sites
249	by setting the MOON_USE_MANAGED_XAML_PARSER environment
250	variable.
251
252	You can force moonlight to use the unmanaged parser on all
253	sites by setting the MOON_DONT_USE_MANAGED_XAML_PARSER
254	environment variable.
255
256
257Licensing
258=========
259
260	The C and C++ code that makes up the engine is dual-licensed
261	under the LGPL v2 license and is also available commercially
262	for developers interested in using Moonlight on embedded
263	systems or other systems where the end-user can not upgrade
264	the LGPL code on his own.
265
266	The C# tests in test/2.0/Microsoft.Silverlight.Testing are
267	copyrighted by Microsoft and released by them under the 
268	open source MS-PL license.
269	
270	The C# controls in class/Microsoft.SilverlightControls/ and
271	class/WPF.Toolkit are copyrighted by Microsoft and released by
272	them under the open source MS-PL license.
273
274
275Technical Details
276=================
277
278	For implementation details and notes, see the NOTES file.
279
280
281Test Suite
282==========
283
284	To run the test suite, make sure that the output from
285	configure indicates that the tests will be run.  Once this is
286	done, you can run the tests like this:
287
288	To run the Moonlight Unit Tests:
289
290		cd moon/test/2.0/moon-unit
291		make test
292		
293
294Firefox 3
295=========
296
297	The original Silverlight.js shipped by Microsoft was incompatible
298	with Firefox 3.  We have released a greasemonkey script 
299	(data/silverlight-ff3-quirks.user.js) that will patch this behaviour
300	for some sites.
301
302

README.darwin

1TODO: 
2	1> Subclass NSWindow to properly deliver window realized, resize, et all events
3	2> Figure out why Invalidate is upside down on the MoonNSView
4	3> Figure out a proper idle loop
5	4> Implement mouse events
6	5> Implement keyboard events
7	6> Add AppKit and iconv linkage
8	7> Figure out how [DllImport ("moon")] when running in lunarlauncher doesn't load both shared libs
9	8> Where or where have my debug syms gone?
10
11LONG TERM TODO:
12	1> Figure out a proper API for public consumption in monomac
13	2> Native font backend
14	3> Plugin?
15