~ubuntu-branches/ubuntu/karmic/moon/karmic

« back to all changes in this revision

Viewing changes to src/ChangeLog

  • Committer: Bazaar Package Importer
  • Author(s): Jo Shields
  • Date: 2009-02-14 12:01:08 UTC
  • Revision ID: james.westby@ubuntu.com-20090214120108-06539vb25vhbd8bn
Tags: upstream-1.0
ImportĀ upstreamĀ versionĀ 1.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
2009-01-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
2
 
 
3
        * media.h:
 
4
        * media.cpp: MediaElement/MediaBase: when SetSource (dl) is called, we
 
5
        need to set the source to the dl's uri. Fixes #464723
 
6
 
 
7
        r: kangaroo
 
8
 
 
9
2009-01-07  Geoff Norton  <gnorton at novell.com>
 
10
 
 
11
        * xaml.cpp, file-downloader.cpp: TextStream::Open has been renamed
 
12
        to TextStream::OpenFile
 
13
        * utils.h|cpp: Refactor TextStream to read in-memory and file buffers
 
14
        * downloader.cpp: GetResponseText needs to ensure it returns data in
 
15
        UTF-8, and doesn't handle zip files.
 
16
 
 
17
        r: fejj
 
18
 
 
19
2009-01-07  Geoff Norton  <gnorton@novell.com>
 
20
 
 
21
        * downloader.h|cpp: Work around mozilla bug #444160 by keeping an in
 
22
        memory cache of all downloads <= 64KB that are streamed in 1 shot.
 
23
 
 
24
        r: toshok
 
25
 
 
26
2008-12-24  Aaron Bockover  <abockover@novell.com>
 
27
 
 
28
        * downloader.cpp (validate_policy): Allow full rights to download if the 
 
29
        target (XAML) URI protocol is chrome; chrome sources (e.g. extensions)
 
30
        are fully trusted in the browser
 
31
 
 
32
        r: kangaroo
 
33
 
 
34
2008-12-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
35
 
 
36
        [Backports of r121143, 121228 and 121230]
 
37
 
 
38
        * audio-pulse.cpp, audio-pulse.h: Improve locking while waiting for
 
39
          pulseaudio to initialize - keep waiting if we get spurious wakeups.
 
40
 
 
41
          r: kangaroo
 
42
 
 
43
2008-12-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
44
 
 
45
        * pipeline.cpp: IMediaDemuxer::GetBufferedSize: Only calculate buffered
 
46
          size using video and audio streams. Fixes #456154. 
 
47
          [Backport of r120687]
 
48
          
 
49
          r: kangaroo
 
50
 
 
51
2008-12-05  Geoff Norton  <gnorton@novell.com>
 
52
 
 
53
        * audio-pulse.cpp: PulseAudio sometimes gives us errors sync, 
 
54
        and sometimes async.  Lets ensure we can actually connect before
 
55
        continuing on.
 
56
 
 
57
        r: toshok
 
58
 
 
59
2008-12-03  Geoff Norton  <gnorton@novell.com>
 
60
 
 
61
        * media.cpp: Ensure we null our reference to the image loader in 
 
62
        all the failure cases to avoid a possible double free/unref.
 
63
 
 
64
        r: toshok
 
65
 
 
66
2008-12-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
67
        * pipeline.cpp: IMediaStream::Dispose: delete our queue of frames.
 
68
          Plugs a memory leak. [Backport of r118496]
 
69
        * pipeline.cpp, pipeline.h: Plug a memory leak. [Backport of r118491].
 
70
 
 
71
        r: kangaroo
 
72
 
 
73
2008-12-01  Geoff Norton  <gnorton@novell.com>
 
74
 
 
75
        * runtime.cpp:  Remove a comment around a debug guard that should
 
76
        have never been here in the first place.  Fixes #449524
 
77
 
 
78
        r: lewing
 
79
 
 
80
2008-12-01  Geoff Norton  <gnorton@novell.com>
 
81
 
 
82
        * audio.cpp: Fix a logic bug making it impossible to use Alsa
 
83
        support
 
84
 
 
85
        r: toshok
 
86
 
 
87
2008-11-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
88
 
 
89
        * audio.cpp: Remove a print_stack_trace. Backport of r120211.
 
90
 
 
91
        r: sde
 
92
 
 
93
2008-11-24  Larry Ewing  <lewing@novell.com>
 
94
 
 
95
        * media.cpp (MediaBase::SetSource): only queue a tick if we need
 
96
        to, fixes regression on mediaelement downloaders.
 
97
 
 
98
        r:toshok
 
99
        
 
100
2008-11-24  Geoff Norton  <gnorton at novell.com>
 
101
 
 
102
        * media.cpp: If we do a SetSource on a image element with a
 
103
        completed downloader, short circuit the async call, as the downloader
 
104
        theoretically can be immediately reused in javascript after the call.
 
105
        Also remove the internal completed event after its been fired, for the
 
106
        same reason (downloader reuse).  Fixes halo3
 
107
 
 
108
        r: lewing
 
109
 
 
110
2008-11-21  Larry Ewing  <lewing@novell.com>
 
111
 
 
112
        * brush.cpp (VideoBrush::SetupBrush): make sure we use the fast
 
113
        filter in videobrush when scaling.
 
114
 
 
115
        r: kangaroo
 
116
 
 
117
2008-11-19  Geoff Norton  <gnorton@novell.com>
 
118
 
 
119
        * audio.cpp: If we fail to initialize pulseaudio, lets try alsa before
 
120
        giving up on media entirely.
 
121
 
 
122
        r: toshok
 
123
 
 
124
2008-11-14  Geoff Norton  <gnorton@novell.com>
 
125
 
 
126
        * pipeline-ui.cpp:
 
127
        * codec-url.h:  Update to the final URLs for beta 1
 
128
 
 
129
        r: miguel
 
130
 
 
131
2008-11-14  Geoff Norton  <gnorton@novell.com>
 
132
 
 
133
        * pipeline-ui.(cpp|h): Rework the pipeline for codec installation to 
 
134
        handle the pango markup we're using.
 
135
 
 
136
        r: miguel
 
137
 
 
138
2008-11-13  Sebastien Pouliot <sebastien@ximian.com>
 
139
 
 
140
        * runtime.cpp (running_on_nvidia): Fix leak of Display
 
141
        r: kangaroo
 
142
 
 
143
2008-11-11  Sebastien Pouliot <sebastien@ximian.com>
 
144
 
 
145
        * pipeline-asp.cpp: Fix case where get_audio_data returns NULL
 
146
        r: fer
 
147
 
 
148
2008-11-11  Geoff Norton  <gnorton@novell.com>
 
149
 
 
150
        * Makefile.am: Only build the appropriate pipeline-ui based on wether
 
151
        we're building on a os/arch combo that supports the SMP.
 
152
        * codec-url.h: Set the appropriate CODEC_URL for our target platform
 
153
        * pipline-nocodec-ui.(cpp|h): New UI for unsupported OS/Arch targets
 
154
        of the codec install pipeline.
 
155
 
 
156
2008-11-11  Geoff Norton  <gnorton@novell.com>
 
157
 
 
158
        * debug.h: Its unlikely that debug flags will be set.
 
159
 
 
160
        r: spouliot
 
161
 
 
162
2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
163
 
 
164
        * mediaelement.cpp, mediaplayer.cpp, pipeline.cpp, playlist.cpp,
 
165
          playlist.h: Instead of calling Media::Dispose in MediaElement, move
 
166
          that to Playlist(Entry) and Dispose of the playlist instead. This
 
167
          makes re-playing already played content in playlists work again.
 
168
          Backport of r118391 and r118493.
 
169
        
 
170
        r: Fernando.
 
171
 
 
172
2008-11-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
173
 
 
174
        * audio.cpp, mediaplayer.cpp, audio.h, mediaelement.cpp, mediaplayer.h:
 
175
          Implement MediaElement.AudioStreamIndex. Backport of r118367.
 
176
          
 
177
        r: kangaroo.
 
178
 
 
179
2008-11-10  Chris Toshok  <toshok@ximian.com>
 
180
 
 
181
        * runtime.cpp (get_flags): output the flags env var (both name and
 
182
        value) if it's set.  r: kangaroo.
 
183
 
 
184
2008-11-10  Geoff Norton  <gnorton@novell.com>
 
185
 
 
186
        * runtime.cpp: Do not enable debug features by default, and remove a 
 
187
        superflous warning.
 
188
        r: toshok
 
189
 
 
190
2008-11-10  Geoff Norton  <gnorton@novell.com>
 
191
 
 
192
        * runtime.cpp: Force NVIDIA binary driver to go to the image backend
 
193
        to work around serious performance problems when we use accelerated
 
194
        rendering with it.
 
195
        r: toshok
 
196
 
 
197
2008-11-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
198
 
 
199
        * pipeline-ffmpeg.cpp: FfmpegDecoder::DecodeFrame: for audio packets we
 
200
          need to keep decoding until the entire input has been consumed.
 
201
 
 
202
        r: Fernando.
 
203
 
 
204
2008-11-06  Stephane Delcroix  <sdelcroix@novell.com>
 
205
 
 
206
        * downloader.h: change the signature of downloaderRequestFinishedHandler
 
207
        to pass the resulting uri.
 
208
 
 
209
        * downloader.cpp: validate the returned uri against redirection policies
 
210
 
 
211
        r:gnorton
 
212
 
 
213
2008-11-06  Geoff Norton  <gnorton@novell.com>
 
214
 
 
215
        * pipline(-ui).cpp: Move the codec location on more time.
 
216
        r: miguel
 
217
 
 
218
2008-11-05  Jeffrey Stedfast  <fejj@novell.com>
 
219
 
 
220
        Patches by Argiris Kirtzidis to fix bug #441687
 
221
 
 
222
        * audio.cpp: Use g_alloca() to create dynamically sized arrays on
 
223
        the stack rather than relying on g++ features.
 
224
 
 
225
        * clock.cpp: Applied MSVC portability patch which implements
 
226
        gettimeofday().
 
227
 
 
228
2008-11-03  Jeffrey Stedfast  <fejj@novell.com>
 
229
 
 
230
        See tests/xaml/test-textblock-actualheight.html and
 
231
        test-textblock-hittest.html as compared with Microsoft
 
232
        Silverlight.
 
233
 
 
234
        * layout.cpp (TextLayout::Layout*): trailing LineBreak elements
 
235
        actually do count toward ActualHeight metrics.
 
236
 
 
237
2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
238
 
 
239
        * audio-pulse.cpp: OnContextStateChanged: always print an error message
 
240
          if we fail to connect to pa daemon.
 
241
 
 
242
2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
243
 
 
244
        * mediaelement.h, mediaelement.cpp: Add a MissingCodecs flag and don't
 
245
          invalidate when that flag is set.
 
246
 
 
247
2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
248
 
 
249
        * runtime.cpp: get_flags: take the default flags as an argument, this
 
250
          way the environment variables can disable flags which are enabled
 
251
          by default.
 
252
 
 
253
2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
254
 
 
255
        * pipeline-ui.cpp, runtime.h, runtime.cpp, pipeline.cpp: Only enable ms
 
256
          codecs by default for browsers.
 
257
 
 
258
2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
259
 
 
260
        * mediaplayer.cpp: FrameCallback: If the frame couldn't be retrieved
 
261
          because of a buffer underflow and we're waiting for the initial
 
262
          frame, enqueue a request for another frame. Fixes #440317.
 
263
 
 
264
2008-11-03  Larry Ewing  <lewing@novell.com>
 
265
 
 
266
        * rect.h (struct Rect): clamp the intersection w/h to 0 fixes some
 
267
        extreme exposure issues in popfly.
 
268
 
 
269
2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
270
 
 
271
        * runtime.h: Remove #include <config.h> from headers
 
272
 
 
273
2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
274
 
 
275
        * mp3.h, mp3.cpp: Mp3FrameReader::TryReadFrame: if we don't succeed in
 
276
          reading a header, try to sync to one. FindMpegHeader: Return proper
 
277
          error code (MEDIA_NO_MORE_DATA) if we can't read more data. Fixes
 
278
          #426440 (slideshow doesn't go beyond the first slide).
 
279
 
 
280
2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
281
 
 
282
        * mediaelement.h, mediaelement.cpp: When a AutoPlay=False media is
 
283
          opened, the final state is Stopped, not Paused. When media finish,
 
284
          the final state is Paused, not Stopped. Fixes #365827.
 
285
 
 
286
2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
287
 
 
288
        * audio-alsa.cpp: Add another dlopened symbol, fixes an unresolved
 
289
          external reference.
 
290
 
 
291
2008-11-03  Fernando Herrera  <fherrera@novell.com>
 
292
 
 
293
        * audio-alsa.cpp:
 
294
        * audio-pulse.cpp:
 
295
        * audio.cpp:
 
296
        * audio.h:
 
297
        * debug.cpp:
 
298
        * debug.h:
 
299
        * dependencyobject.cpp:
 
300
        * downloader.cpp:
 
301
        * font.cpp:
 
302
        * http-streaming.cpp:
 
303
        * layout.cpp:
 
304
        * media.cpp:
 
305
        * mediaelement.cpp:
 
306
        * mediaplayer.cpp:
 
307
        * mms-downloader.cpp:
 
308
        * pipeline-asf.cpp:
 
309
        * pipeline-ffmpeg.cpp:
 
310
        * pipeline-ui.cpp:
 
311
        * pipeline.cpp:
 
312
        * playlist.cpp:
 
313
        * runtime.cpp:
 
314
        * runtime.h:
 
315
        * text.cpp:
 
316
        * textbox.cpp:
 
317
        * xaml.cpp:
 
318
        * yuv-converter.cpp: Change debug macros to runtime conditionals based
 
319
          on MOONLIGHT_DEBUG env variable of compile time. Checks are only
 
320
          enabled if configured with --with-debug=yes option.
 
321
 
 
322
2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
323
 
 
324
        * debug.cpp: Don't dlopen mono, just link with it if -with-debug is
 
325
          specified.
 
326
 
 
327
2008-11-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
328
 
 
329
        * pipeline-ffmpeg.cpp: Revert r117547 and related.
 
330
 
 
331
2008-11-02  Chris Toshok  <toshok@ximian.com>
 
332
 
 
333
        * text.cpp (TextBlock::InsideObject): textblocks are hit only in
 
334
        their ActualWidth/ActualHeight, not in the full bounding
 
335
        rectangle.  Fixes bug #434258.
 
336
 
 
337
2008-10-31  Chris Toshok  <toshok@ximian.com>
 
338
 
 
339
        * runtime.h, runtime.cpp: remove transparency from properties of
 
340
        the surface
 
341
        (Surface::PaintToDrawable): add a @transparent argument to this
 
342
        method.
 
343
 
 
344
        * window-gtk.cpp (MoonWindowGtk::expose_event): pass the window's
 
345
        transparency to Surface::PaintToDrawable.
 
346
 
 
347
        * window.h: move the idea of transparency here from Surface.
 
348
 
 
349
2008-10-31  Jeffrey Stedfast  <fejj@novell.com>
 
350
 
 
351
        Portability patch by Argiris Kirtzidis.
 
352
 
 
353
        * *.cpp: s/#if false/#if 0/g and s/#if true/#if 1/g
 
354
 
 
355
        * xaml.cpp (start_element): strchr() returns const.
 
356
        (repeat_behavior_from_str): Same.
 
357
 
 
358
2008-10-31  Larry Ewing  <lewing@novell.com>
 
359
 
 
360
        * runtime.cpp (Surface::PaintToDrawable): instead of the content
 
361
        type check if active_window is fullscreen. This is uglier but the
 
362
        mozilla hands us rgb drawables not rgba drawables so until we have
 
363
        a better plan this will solve the problem.
 
364
 
 
365
2008-10-31  Larry Ewing  <lewing@novell.com>
 
366
 
 
367
        * runtime.cpp (Surface::PaintToDrawable): only follow the
 
368
        transparent path if our target supports it.
 
369
 
 
370
2008-10-31  Sebastien Pouliot  <sebastien@ximian.com>
 
371
 
 
372
        * pipeline-asp.cpp (ASFDemuxer::ReadHeader): Fix logic when skipping
 
373
        a bad stream so we dont include NULL holes streams[]
 
374
 
 
375
2008-10-31  Michael Dominic K.  <mdk@mdk.am>
 
376
 
 
377
        * runtime.cpp: Reverting for now the recent crossing events 
 
378
        changes -- causes issues with Ink Journal.
 
379
 
 
380
2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
381
 
 
382
        * pipeline.h, pipeline.cpp: Added IMediaStream::GetMediaTypeName.
 
383
        * mediaplayer.cpp: Use IMediaStream::GetMediaTypeName instead of
 
384
          complex ifs on the GetType return value.
 
385
 
 
386
2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
387
 
 
388
        * debug.cpp: dlopen libmono too for our stack walking methods.
 
389
 
 
390
2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
391
 
 
392
        * pipeline-ffmpeg.cpp: Don't use ffmpeg version defines which aren't
 
393
          present in older ffmpeg version (r10885).
 
394
 
 
395
2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
396
 
 
397
        * pipeline-ffmpeg.cpp: DecodeFrame: free the frame after error
 
398
          conditions.
 
399
 
 
400
2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
401
 
 
402
        * pipeline-ffmpeg.cpp: dlopen ffmpeg.
 
403
 
 
404
2008-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
405
 
 
406
        * pipeline.cpp: Fix warning (variable might be used uninitialized).
 
407
 
 
408
2008-10-30  Jeffrey Stedfast  <fejj@novell.com>
 
409
 
 
410
        Fix for bug #435815.
 
411
 
 
412
        * stylus.cpp (StrokeCollection::AddedToCollection): Override so
 
413
        that we can avoid aborting if a stroke already has a logical
 
414
        parent (not an error for strokes).
 
415
 
 
416
        * error.h (MoonError::Clear): New convenience method.
 
417
 
 
418
2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
419
 
 
420
        * libmoon.h: Fix build.
 
421
 
 
422
2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
423
 
 
424
        * audio.cpp, brush.cpp, cbinding.h, dependencyproperty.g.cpp,
 
425
          Makefile.am, media.cpp, media.h, mediaelement.cpp, mediaelement.h,
 
426
          mediaplayer.cpp, mediaplayer.h, pipeline.cpp, type-generated.cpp,
 
427
          src.mdp, playlist.cpp: Split MediaElement out from media.[cpp|h]
 
428
          into its own mediaelement.[cpp|h].
 
429
 
 
430
2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
431
 
 
432
        * type-generated.cpp, Makefile.am, media.h, mediaplayer.cpp,
 
433
          mediaplayer.h, mplayer.cpp, mplayer.h, src.mdp: Rename
 
434
          mplayer.[cpp|h] -> mediaplayer.[cpp|h].
 
435
 
 
436
2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
437
 
 
438
        * cbinding.cpp, cbinding.h: Regenerated.
 
439
 
 
440
2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
441
 
 
442
        * audio.cpp, audio-pulse.cpp, media.cpp, mms-downloader.h, mp3.cpp,
 
443
          mplayer.h, pipeline.cpp, pipeline.h, pipeline-asf.cpp,
 
444
          pipeline-asf.h, src.mdp, xaml.cpp: Move asf related bits from
 
445
          pipeline.[h|cpp] to pipeline-asf.[h|cpp].
 
446
 
 
447
2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
448
 
 
449
        * pipeline.h: IMediaDemuxer: Add Source getter.
 
450
        * pipeline.cpp: IMediaDemuxer::GetLastAvailablePts: don't take into
 
451
          account streams which aren't selected. IMediaStream::AppendFrame:
 
452
          update last available pts with the frame's pts.
 
453
        * media.cpp: MediaElement::CalculateBufferingProgress: never use last
 
454
          available pts to calculate buffering progress for streams which can
 
455
          seek to directly to the requested pts. Fix math to check for
 
456
          negative values to avoid weird results.
 
457
 
 
458
2008-10-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
459
 
 
460
        * media.cpp, media.h: MediaElement: fix buffering progress after
 
461
          seeking regression - don't only use the buffer level in the
 
462
          pipeline to report buffering progress, but take into accout the
 
463
          point from where we seek.
 
464
        * mp3.h, mp3.cpp: Store the AudioStream in the frame reader and update
 
465
          the stream's LatestAvailablePts field whenever we read a frame.
 
466
          Also rename the previous 'stream' (IMediaSource*) field to 'source'
 
467
          to avoid confusion with AudioStream.
 
468
        * pipeline.cpp, pipeline.h: Add a last_available_pts field to
 
469
          IMediaStream and the corresponding GetLastAvailablePts to
 
470
          IMediaDemuxer, enabling the calculation of correct buffering
 
471
          progress after a seek. This also requires a codec abi version bump.
 
472
 
 
473
2008-10-29  Sebastien Pouliot  <sebastien@ximian.com>
 
474
 
 
475
        * clock.h: Change MilliSeconds_[From|To]Pts to use the new
 
476
        PTS_PER_MILLISECOND define.
 
477
        * mplayer.cpp: Rework fix on GetTimeoutInterval to avoid a division
 
478
        resulting in zero (and the endless loop of #439631).
 
479
 
 
480
2008-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
481
 
 
482
        * mplayer.cpp: GetTimeoutInterval: Calculate timeout correctly. Fixes
 
483
          #439631.
 
484
 
 
485
2008-10-28  Jeffrey Stedfast  <fejj@novell.com>
 
486
 
 
487
        * downloader.cpp (scheme_is): Check protocol non-null.
 
488
        (same_scheme): Same.
 
489
 
 
490
        * uri.cpp (Uri::Parse): If no protocol is found, init to NULL
 
491
        instead of file. Also make sure to parse the path in all valid
 
492
        cases.
 
493
 
 
494
2008-10-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
495
 
 
496
        * mplayer.cpp: LoadVideoFrame: if target_pts is invalid, set 0 as
 
497
          target_pts.
 
498
        * media.cpp: AdvanceFrame: handle cases where position = -1 and don't
 
499
          do anything.
 
500
 
 
501
2008-10-27  Jeffrey Stedfast  <fejj@novell.com>
 
502
 
 
503
        * uri.cpp (Uri::Parse): Do a bit better than just strchr() for ':'
 
504
        to parse out the uri scheme.
 
505
 
 
506
2008-10-27  Jeffrey Stedfast  <fejj@novell.com>
 
507
 
 
508
        Performance optimization patch for bug #409793
 
509
 
 
510
        * stylus.cpp (Stroke::AddStylusPointToBounds): Modified to take a
 
511
        Rect bounds argument so that we can update a bounds of our
 
512
        choosing.
 
513
        (Stroke::ComputeBounds): Updated.
 
514
        (Stroke::OnCollectionChanged): Update our new 'dirty' bounds.
 
515
        (Stroke::OnCollectionItemChanged): Same.
 
516
        (InkPresenter::PostRender): Reset stroke dirty regions.
 
517
        (InkPresenter::OnCollectionItemChanged): Invalidate only the
 
518
        stroke's dirty region.
 
519
 
 
520
2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
521
 
 
522
        * media.cpp: TryOpen: Don't try to open anything if downloaded_file is
 
523
          null.
 
524
 
 
525
2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
526
 
 
527
        * mplayer.cpp: LoadVideoFrame: Don't check if buflen = 0, makes things
 
528
          work with ffmpeg.
 
529
        * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h: CleanState: Properly clean
 
530
          up/reset codec. DecodeFrame: ffmpeg might delay output one frame,
 
531
          i.e. the decoder output is the input of the previous time we called
 
532
          avcodec_decode_video, so keep track of pts from previous frame and
 
533
          properly set pts of the decoded frame.
 
534
 
 
535
2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
536
 
 
537
        * mplayer.cpp: LoadVideoFrame: show the frame if the end pts of the
 
538
          frame is above the target pts (previously we only showed the frame
 
539
          if the start pts was above the target pts, causing us to show one
 
540
          frame too late). Fixes test-asf-demuxer-shuffled-payloads.html.
 
541
 
 
542
2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
543
 
 
544
        * media.cpp: MediaElement::Play: Call Play when in Opening state too.
 
545
 
 
546
2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
547
 
 
548
        * mplayer.cpp: AdvanceFrame/GetCurrentPts: if the audio isn't playing
 
549
          we should just work as if there's no audio at all. The video might
 
550
          play after the audio has stopped if the a/v streams have different
 
551
          length.
 
552
 
 
553
2008-10-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
554
 
 
555
        * pipeline.cpp: Media::ClearQueue: delete the list nodes with the
 
556
          queue_mutex unlocked, since the node dtor may cause unrefs, causing
 
557
          other dtors to be called, and it may all end up in Media::Dispose
 
558
          which will then try to lock the mutex again (and deadlock).
 
559
 
 
560
2008-10-24  Jeffrey Stedfast  <fejj@novell.com>
 
561
 
 
562
        * font.cpp (style_info_parse): Tokenize the style string so that
 
563
        the individual sub-parsers can be a bit smarter than than
 
564
        strstr().
 
565
        (style_width_parse): Made smarter - now handles lwsp between
 
566
        multi-word width specifiers (or no lwsp at all).
 
567
        (style_weight_parse): Same.
 
568
 
 
569
2008-10-23  Larry Ewing  <lewing@novell.com>
 
570
 
 
571
        * media.cpp: remove compute bounds since it mirrors
 
572
        FrameworkElement now.
 
573
 
 
574
2008-10-23  Larry Ewing  <lewing@novell.com>
 
575
 
 
576
        * shape.cpp, shape.h: remove origin fixup GetOriginPoint and
 
577
        GetSizeForBrush.
 
578
 
 
579
2008-10-23  Jeffrey Stedfast  <fejj@novell.com>
 
580
 
 
581
        * textbox.cpp (TextBox::Paint): Updated.
 
582
 
 
583
        * text.cpp (TextBlock::Paint): Updated.
 
584
 
 
585
        * layout.cpp (TextLayout::Render): Swapped origin & offset
 
586
        arguments which feels more natural to me.
 
587
 
 
588
2008-10-23  Sebastien Pouliot  <sebastien@ximian.com>
 
589
 
 
590
        * pipeline.cpp: (ASFDemuxer::ReadHeader): Don't allow video height or
 
591
        width over 2048 pixels since this is likely to be corrupted values.
 
592
        * pipeline.h: Define MAX_VIDEO_[HEIGHT|WIDTH] to 2048 (I'm sure that
 
593
        someday people will laugh at me for proposing such a small value)
 
594
 
 
595
2008-10-23  Larry Ewing  <lewing@novell.com>
 
596
 
 
597
        * layout.cpp, layout.h: Change the Render api to drop the uielement argument. 
 
598
 
 
599
        * textbox.cpp:
 
600
        * text.cpp: call layout with the new arguments.
 
601
        
 
602
2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
603
 
 
604
        * mplayer.cpp: Pause: Don't set the SeekSynched flag. This would cause
 
605
          fast-forwarding video when seeking to a position which hadn't been
 
606
          downloaded (since we automatically pause the video then). Fixes
 
607
          #435908.
 
608
 
 
609
2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
610
 
 
611
        * mplayer.h, mplayer.cpp: Implement RenderedFramesPerSecond and
 
612
          DroppedFramesPerSecond. Only in SL 2.0, but very useful for
 
613
          debugging 1.0 too.
 
614
 
 
615
2008-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
616
 
 
617
        * pipeline.h, pipeline.cpp: Increase codec ABI version (IMediaStream
 
618
          changed size). IMediaStream: Remove msec_per_frame, it's already in
 
619
          VideoStream. VideoStream: make msec_per_frame be pts_per_frame to
 
620
          loose less precision.
 
621
        * mplayer.cpp: Calculate advance frame timeout based on video fps.
 
622
 
 
623
2008-10-22  Chris Toshok  <toshok@ximian.com>
 
624
 
 
625
        * runtime.cpp (Surface::HandleUICrossing): disable the crossing
 
626
        check from r116528 in the case of a windowless plugin (where
 
627
        event->window == NULL).  Also, active_window->GetGdkWindow should
 
628
        never be trusted to return the actual window - it's use is
 
629
        strictly to find the screen/monitor for full-screening.  In the
 
630
        windowless case it returns the toplevel netscape window.
 
631
 
 
632
2008-10-22  Larry Ewing  <lewing@novell.com>
 
633
 
 
634
        * brush.cpp, brush.h: remove the uielement references from the api
 
635
        pass the required information as a rect to SetupBrush instead.
 
636
 
 
637
        * shape.cpp, shape.h:
 
638
        * panel.cpp:
 
639
        * layout.cpp:
 
640
        * text.cpp:
 
641
        * uielement.cpp:
 
642
        * control.cpp:
 
643
        * broder.cpp: update SetupBrush callers for the new signature.
 
644
 
 
645
2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
646
 
 
647
        * audio.h, audio.cpp: AudioSource: Initialize last_write_pts and
 
648
          last_current_pts to their max value, to detect when they haven't
 
649
          been set yet. Properly reinitialize these variables (to their max
 
650
          values) in Stop, and make GetCurrentPts return G_MAXUINT64 for this
 
651
          case.
 
652
        * mplayer.cpp: AdvanceFrame: the audio might return G_MAXUINT64 for
 
653
          current pts, handle this. Fixes fast-forwarding issue in #435908.
 
654
 
 
655
2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
656
 
 
657
        * mp3.cpp: Mp3Demuxer::SeekInternal: Initialize result so that we don't
 
658
          use random memory if we don't have a reader.
 
659
 
 
660
2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
661
 
 
662
        * mms-downloader.cpp: Add logging methods.
 
663
 
 
664
2008-10-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
665
 
 
666
        * media.cpp: Sprinkle Dispose calls to plug leaks.
 
667
 
 
668
2008-10-20  Chris Toshok  <toshok@ximian.com>
 
669
 
 
670
        * pipeline.cpp (Media::RegisterMSCodecs): free libmscodecs_path
 
671
        before reassigning (and reallocating memory for) it.
 
672
 
 
673
        * dependencyobject.h, dependencyobject.cpp: add an optional
 
674
        argument to all the EventObject::AddHandler* overloads, called
 
675
        data_dtor, which is invoked just before the EventClosure is
 
676
        destroyed so that the data can be freed.
 
677
 
 
678
2008-10-20  Chris Toshok  <toshok@ximian.com>
 
679
 
 
680
        * window-gtk.h, window-gtk.cpp: move the Surface conversion from
 
681
        MouseCursor -> GtkCursor here.
 
682
 
 
683
        * runtime.h, runtime.cpp: surface only deals with MouseCursors
 
684
        anymore.  the gtk support is in window-gtk now.
 
685
        
 
686
        * window.h: remove SetCursor (GdkCursor) and add
 
687
        SetCursor (MouseCursor), so subclasses of MoonWindow can do their
 
688
        own thing.
 
689
 
 
690
2008-10-20  Jeffrey Stedfast  <fejj@novell.com>
 
691
 
 
692
        * media.cpp (MediaElement::MediaOpened): If the stream decoder is
 
693
        null, use null for the decoder_name. Fixes a segfault.
 
694
 
 
695
2008-10-20  Sebastien Pouliot  <sebastien@ximian.com>
 
696
 
 
697
        * pipeline.cpp (ASFDemuxer::ReadHeader): Don't count invalid streams
 
698
        since a lot of loops don't handle NULL values.
 
699
 
 
700
2008-10-20  Michael Dominic K.  <mdk@mdk.am>
 
701
 
 
702
        * runtime.cpp: More fixes to crossing events: when entering fullscreen
 
703
        ignore the crossing events coming from previous window. Otherwise we get
 
704
        double enter/leave pair.
 
705
 
 
706
2008-10-20  Michael Dominic K.  <mdk@mdk.am>
 
707
 
 
708
        * window-gtk.cpp: GetGdkWindow () - handle the fullscreen window case 
 
709
        correctly (no parent window).
 
710
 
 
711
2008-10-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
712
 
 
713
        * debug.h, pipeline.cpp, audio.cpp: #define print_stack_trace to
 
714
          nothing if not DEBUG is set, removing the need for surrounding all
 
715
          print_stack_trace calls with #if DEBUG.
 
716
 
 
717
2008-10-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
718
 
 
719
        * pipeline.cpp: Remove debugging code.
 
720
 
 
721
2008-10-17  Michael Dominic K.  <mdk@mdk.am>
 
722
 
 
723
        * animation.cpp:
 
724
        * animation.h:
 
725
        * applier.h: Fixing one more osbcure case of Storyboard transitions where
 
726
        stopping a prev sboard makes the next one starting from bad base value.
 
727
 
 
728
2008-10-17  Michael Dominic K.  <mdk@mdk.am>
 
729
 
 
730
        * runtime.cpp: Make sure we get the new pointer motion notify when 
 
731
        entering/leaving fullscreen. This fixes the fullscreen-enter-leave test 
 
732
        but interestingly doesn't fix the original problem of #434267.
 
733
 
 
734
2008-10-17  Sebastien Pouliot  <sebastien@ximian.com>
 
735
 
 
736
        * runtime.cpp (Surface::PaintToDrawable): Don't leak cairo context
 
737
        when using "backend=image".
 
738
 
 
739
2008-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
740
 
 
741
        * pipeline.cpp: NullDecoder::OpenVideo: Fix comment (logo is centered
 
742
          now, not tiled), and fix inner loop, we were including one pixel
 
743
          too many for width and height.
 
744
 
 
745
2008-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
746
 
 
747
        * pipeline.cpp: RegisterMSCodecs: if there's no codec in
 
748
          ~/.mozilla/plugins, use just the filename of the codec library and
 
749
          make dlopen search for it. This makes it easier to run parallell
 
750
          tests from different revisions without having the codecs from each
 
751
          revision overwrite eachother in user's home.
 
752
 
 
753
2008-10-16  Geoff Norton  <gnorton@novell.com>
 
754
 
 
755
        * pipeline.cpp: Dont tile our logo, it looks like ass.  Lets
 
756
        center it in the available window instead.
 
757
 
 
758
2008-10-16  Geoff Norton  <gnorton@novell.com>
 
759
 
 
760
        * pipeline-ui.cpp: Avoid a resize when realizing which causes an
 
761
        annoying flicker in the codec window.
 
762
 
 
763
2008-10-16  Geoff Norton  <gnorton@novell.com>
 
764
 
 
765
        * pipeline.cpp: Unbreak the world.
 
766
 
 
767
2008-10-16  Geoff Norton  <gnorton@novell.com>
 
768
 
 
769
        * pipeline(-ui).cpp: Use the updated mscodec name and location.
 
770
 
 
771
2008-10-16  Fernando Herrera  <fherrera@novell.com>
 
772
 
 
773
        * playlist.cpp: Fix a segfault parsing ASX3 malformed files.
 
774
 
 
775
2008-10-16  Sebastien Pouliot  <sebastien@ximian.com> 
 
776
 
 
777
        * text.cpp (TextBlock::Layout): Delay allocation of List so that we
 
778
        don't leak when TextBlock::TextProperty is NULL.
 
779
 
 
780
2008-10-16  Sebastien Pouliot  <sebastien@ximian.com>
 
781
 
 
782
        * runtime.cpp (Surface::SetCursor): Unref cursors once they are set
 
783
        on the window. Fix one more leak.
 
784
 
 
785
2008-10-16  Jb Evain  <jbevain@novell.com>
 
786
 
 
787
        * collection.cpp: TriggerCollection, UIElementCollection, InlineCollection:
 
788
        mark managed constructor internal.
 
789
 
 
790
2008-10-16  Jb Evain  <jbevain@novell.com>
 
791
 
 
792
        * collection.cpp (RemoveAtWithError): throw an ArgumentOutOfRangeException
 
793
        instead of an ArgumentException when providing an out of range index.
 
794
 
 
795
2008-10-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
796
 
 
797
        * window-gtk.cpp, window.h: Add file header and fix copy-paste error.
 
798
 
 
799
2008-10-15  Chris Toshok  <toshok@ximian.com>
 
800
 
 
801
        * runtime.cpp (Surface::HandleUIKeyPress): check to see if the key
 
802
        is already down, and if so, don't emit another event.  (really?
 
803
        there's a test for this?  ugh.).  also, let Keyboard know the key
 
804
        is down.
 
805
        (Surface::HandleUIKeyRelease): let Keyboard know the key is up.
 
806
 
 
807
        * eventargs.h, eventargs.cpp (class Keyboard): augment Keyboard
 
808
        quite a bit -- it might soon deserve its own file.  It now
 
809
        maintains a static hashtable of keys that are pressed/released
 
810
        inside the moonlight plugin, and has logic to map a gdk keyval to
 
811
        Key, and query if a particular key is pressed.
 
812
 
 
813
2008-10-15  Larry Ewing  <lewing@novell.com>
 
814
 
 
815
        * uielement.cpp: fix the transform ordering.
 
816
 
 
817
        * canvas.cpp, canvas.h: handle the toplevel canvas correctly.
 
818
 
 
819
2008-10-15  Larry Ewing  <lewing@novell.com>
 
820
 
 
821
        * uielement.cpp, uielement.h: remove UpdatePosition and
 
822
        ComputePosition, all transform changes are handled in
 
823
        ComputeTransform now.
 
824
 
 
825
        * shape.cpp, shape.h: update for the new transform api.
 
826
        
 
827
        * dirty.cpp, dirty.h: remove DirtyPostion is it no longer needed.
 
828
        
 
829
        * canvas.cpp: Use UpdateTransform. 
 
830
 
 
831
        * point.h: add a (lame) == operator.
 
832
        
 
833
2008-10-15  Larry Ewing  <lewing@novell.com>
 
834
 
 
835
        * geometry.cpp, geometry.h: add shape bounds caching to all
 
836
        geometry classes apply the transform when retrieving the bounds.
 
837
        Make GetBounds the public bounds interface and make the
 
838
        computation interface protected.
 
839
 
 
840
        * shape.cpp, uielement.cpp: call use GetBounds not ComputeBounds.
 
841
 
 
842
2008-10-14  Larry Ewing  <lewing@novell.com>
 
843
 
 
844
        * geometry.cpp, geometry.h: remove unused arguments to
 
845
        ComputeBounds remove caching from PathGeometry.
 
846
 
 
847
        * uielement.cpp, shape.cpp: call with correct arguments.
 
848
 
 
849
2008-10-14  Larry Ewing  <lewing@novell.com>
 
850
 
 
851
        * uielement.cpp, uielement.h: make ComputeTransform virtual and
 
852
        have it return a bool.
 
853
 
 
854
        * shape.cpp, shape.h: override ComputeTransform and optimize the
 
855
        bounds computations.  Use a general ComputeShapeBounds for actual
 
856
        drawn bounds compuations for now.
 
857
        
 
858
        * dirty.cpp (Surface::ProcessDownDirtyElements): add a short
 
859
        circuit path to DirtyTransform for elements that can recompute
 
860
        without updating bounds.
 
861
 
 
862
2008-10-13  Larry Ewing  <lewing@novell.com>
 
863
 
 
864
        * geometry.cpp, geometry.h: remove unused arguments from function
 
865
        prototypes.
 
866
        
 
867
        * uielement.cpp, shape.cpp: update calls.
 
868
        
 
869
2008-10-15  Jeffrey Stedfast  <fejj@novell.com>
 
870
 
 
871
        Fix for bug #435798
 
872
 
 
873
        * text.cpp (TextBlock::TextBlock): Let OnPropertyChanged() know
 
874
        that we are setting the default brush/inlines.
 
875
        (TextBlock::Layout): If no Text value has yet been set, use 0.0 as
 
876
        the actualHeight.
 
877
 
 
878
2008-10-14  Chris Toshok  <toshok@ximian.com>
 
879
 
 
880
        * window-gtk.h, window-gtk.cpp (MoonWindowGtk::GetGdkWindow): ref
 
881
        the return value.
 
882
        (MoonWindowGtk::InitializeFullScreen): unref the return value of
 
883
        GetGdkWindow.
 
884
 
 
885
        * cbinding.h, cbinding.cpp: regen so we don't have to use void*
 
886
        for the parent parameter to MoonWindowGtk.
 
887
 
 
888
2008-10-14  Sebastien Pouliot  <sebastien@ximian.com>
 
889
 
 
890
        * applier.cpp|h: Add a readonly flag to ensure nothing gets added in
 
891
        the hashtable while we're flushing it on shutdown. Add a few more
 
892
        checks and avoid re-creating the hashtable on flush.
 
893
 
 
894
2008-10-14  Geoff Norton  <gnorton@novell.com>
 
895
 
 
896
        * pipeline-ffmpeg.cpp:  FFMpeg changed the API with version #52, no
 
897
        longer requiring the bits_per_pixel.
 
898
 
 
899
2008-10-14  Stephane Delcroix  <sdelcroix@novell.com>
 
900
 
 
901
        * window.h: GetGdkWindow () method
 
902
 
 
903
        * window-gtk.h|.cpp: implement GetGdkWindow, new ctor signature
 
904
        taking the parent window reference. Only go fullscreen on the monitor
 
905
        moonlight is running on.
 
906
 
 
907
        * runtime.cpp: call the new MoonWindowGtk ctor
 
908
 
 
909
2008-10-14  Fernando Herrera  <fherrera@novell.com>
 
910
 
 
911
        * pipeline-ui.cpp: Override codecs download URL with
 
912
        MOONLIGHT_CODEC_URL env variable if present.
 
913
 
 
914
2008-10-13  Jeffrey Stedfast  <fejj@novell.com>
 
915
 
 
916
        * xaml.cpp (XamlLoader::CreateFromFile): Since we use the nread
 
917
        variable expecting it to be the value returned from read(), don't
 
918
        modify it inside the loop, use another variable for that. Before
 
919
        eating leading whitespace, make sure we have data.
 
920
 
 
921
2008-10-13  Fernando Herrera  <fherrera@novell.com>
 
922
 
 
923
        * audio.cpp: Fix AudioSources::GetNext iteration for next playing
 
924
        source logic. Fixes bug #433267
 
925
 
 
926
2008-10-13  Jeffrey Stedfast  <fejj@novell.com>
 
927
 
 
928
        * media.cpp (MediaElement::Play): Don't add a TickCall to start
 
929
        playing if we haven't even opened the media yet. Fixes bug
 
930
        #434462.
 
931
 
 
932
2008-10-13  Michael Dominic K.  <mdk@mdk.am>
 
933
 
 
934
        * dependencyproperty.cpp: Fixing a mem leak.
 
935
 
 
936
2008-10-13  Michael Dominic K.  <mdk@mdk.am>
 
937
 
 
938
        * animation.cpp: Reverting the whole attaching-to-prev storage in Begin. 
 
939
        This fixes some recent problems in PopFly.
 
940
 
 
941
2008-10-10  Jeffrey Stedfast  <fejj@novell.com>
 
942
 
 
943
        * downloader.cpp (validate_policy): Made static so we don't export
 
944
        this symbol.
 
945
 
 
946
2008-10-10  Sebastien Pouliot  <sebastien@ximian.com>
 
947
 
 
948
        * dependencyproperty.cpp (detach_target_func): Fix bad function 
 
949
        signature for GHFunc.
 
950
        * dependencyobject.cpp (unref_object): Fix bad function signature
 
951
        for GFunc.
 
952
 
 
953
2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
954
 
 
955
        * pipeline.h, pipeline.cpp: Media: Add a BufferingEnabled flag, don't
 
956
          start buffering until this is set to true (starts out as false).
 
957
        * media.cpp: Only enable buffering on the media after reading the
 
958
          markers, otherwise we may loose markers in the beginning of the
 
959
          media. Fixes test-asf-demuxer-big-markers.html. Also don't add a
 
960
          tick call to notify the MediaElement that a marker has been added,
 
961
          always check in AdvanceFrame.
 
962
        * mplayer.cpp: Add a null check in a printf.
 
963
 
 
964
2008-10-10  Larry Ewing  <lewing@novell.com>
 
965
 
 
966
        * media.cpp (Image::DownloaderComplete): handle the case where the
 
967
        sureface uri and the new uri are the same.
 
968
 
 
969
2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
970
 
 
971
        * pipeline-logo.cpp: New logo.
 
972
 
 
973
2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
974
 
 
975
        * media.cpp: MediaElement::Reinitialize: Dispose the media to break
 
976
          cyclic refs.
 
977
        * mplayer.cpp: AdvanceFrame: don't decode here anymore, we shouldn't
 
978
          get non-decoded frames anymore. Open: Handle null demuxers,
 
979
          shouldn't happen, but at least we won't crash if it happens.
 
980
        * pipeline.cpp, pipeline.h: Media::~Media: move cleanup to Dispose.
 
981
          Media::Open: unref the decoder after giving it to the stream, the
 
982
          stream now take a ref on the decoder. Media::EnqueueWork:
 
983
          queued_requests might be nothing if we're disposed. IMediaStream:
 
984
          move cleanup to dispose and take a ref on the decoder. Add decoder
 
985
          getter/setters, and update code to use them.
 
986
 
 
987
2008-10-10  Sebastien Pouliot  <sebastien@ximian.com>
 
988
 
 
989
        * applier.cpp: Fix another bad function signatures for GFunc.
 
990
 
 
991
2008-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
992
 
 
993
        * audio.cpp, pipeline-ffmpeg.cpp, pipeline.h, mplayer.cpp: Remove
 
994
          FRAME_COPY_DECODED_DATA and always copy decoded data. Fixes video
 
995
          stuttering when using ffmpeg.
 
996
 
 
997
2008-10-09  Jackson Harper  <jackson@ximian.com>
 
998
 
 
999
        * runtime.cpp: The resize event is only emitted when switching
 
1000
        from fullscreen to non fullscreen.
 
1001
 
 
1002
2008-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1003
 
 
1004
        * pipeline.cpp, pipeline.h: Properly ref/unref MediaMarkers instead of
 
1005
          deleting them.
 
1006
 
 
1007
2008-10-09  Jackson Harper  <jackson@ximian.com>
 
1008
 
 
1009
        * runtime.cpp: When we change to/from fullscreen there should be a
 
1010
        resize event.
 
1011
 
 
1012
2008-10-09  Sebastien Pouliot  <sebastien@ximian.com>
 
1013
 
 
1014
        * media.cpp (Image::CreateSurface): Protect against a NULL
 
1015
        filename (valid value). This will avoid crash like bug #433810
 
1016
        even if, in this case, the problem lies elsewhere (bad downloader
 
1017
        which looks related to #433814).
 
1018
 
 
1019
2008-10-09  Jeffrey Stedfast  <fejj@novell.com>
 
1020
 
 
1021
        * font.cpp (FontFace::LoadDefaultFace): Pass the families to
 
1022
        LoadDefaultFont() for font name comparison, we need to match the
 
1023
        font names exactly or fall back to the next font.
 
1024
 
 
1025
2008-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1026
 
 
1027
        * audio.cpp: Add a nullcheck.
 
1028
 
 
1029
2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
 
1030
 
 
1031
        * media.cpp (Image::IsSurfaceCached): Don't leak (actually 
 
1032
        don't dupe) uri.
 
1033
 
 
1034
2008-10-08  Jeffrey Stedfast  <fejj@novell.com>
 
1035
 
 
1036
        * font.cpp: Add fallback for Liberation fonts.
 
1037
 
 
1038
        * pipeline.cpp (Media::Warning): Replacement for both
 
1039
        Media::AddMessage() methods.
 
1040
 
 
1041
2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
 
1042
 
 
1043
        * applier.cpp: Fix function signatures for GFunc and GHFunc.
 
1044
        Fix random crash when closing silverlight world #433461
 
1045
 
 
1046
2008-10-08  Larry Ewing  <lewing@novell.com>
 
1047
        * window-gtk.cpp (MoonWindowGtk::realized): make sure we remove
 
1048
        any existing render_cb attachments before adding new ones in case
 
1049
        our realize wordering is out of sync.
 
1050
 
 
1051
        Fixes the rest of b.n.c #432975
 
1052
 
 
1053
2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1054
 
 
1055
        * mp3.cpp: Fix boolean->MediaResult logic.
 
1056
 
 
1057
2008-10-08  Jackson Harper  <jackson@ximian.com>
 
1058
 
 
1059
        * playlist.cpp|h: When we encounter invalid characters in an
 
1060
        attribute try to patch them and reparse the document.
 
1061
 
 
1062
2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1063
 
 
1064
        * mp3.h, mp3.cpp: Fix mpeg_frame_duration to use the static array of
 
1065
          block sizes instead of hard-coded almost-matching values. Make
 
1066
          mpeg_frame_length return a floating point value, and in ReadHeader
 
1067
          calculate total duration using floating point. Fixes
 
1068
          test-mp3-media-properties.html
 
1069
 
 
1070
2008-10-08  Stephane Delcroix  <stephane@delcroix.org>
 
1071
 
 
1072
        * runtime.cpp: CAIRO_VERSION_XXX symbols no longer available in cairo
 
1073
        1.8.0, changing the error msg.
 
1074
 
 
1075
2008-10-08  Sebastien Pouliot  <sebastien@ximian.com>
 
1076
 
 
1077
        * xaml.cpp (XamlElementInstanceNative::SetProperty): Avoid SIGSEGV
 
1078
        on bad XAML input when no (NULL) dependecy property is returned.
 
1079
 
 
1080
2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1081
 
 
1082
        * pipeline.h, pipeline.cpp: Add a marker field to MediaFrame and make
 
1083
          MediaMarker refcounted. Fix a couple of crashing leakfixes, and
 
1084
          simplify cleanup code a tiny bit.
 
1085
 
 
1086
2008-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1087
 
 
1088
        * audio-pulse.h: Remove unused method definition.
 
1089
 
 
1090
2008-10-07  Jeffrey Stedfast  <fejj@novell.com>
 
1091
 
 
1092
        * animation.cpp (AnimationStorage::AttachToPrevStorage): Delete
 
1093
        the old baseValue before allocating a new one.
 
1094
 
 
1095
        * mms-downloader.cpp (MmsDownloader::ProcessHeaderPacket): Need to
 
1096
        delete dx_info when we're done with it. Also get rid of the
 
1097
        unneeded parser pointer since we're just using this->parser
 
1098
        anyway.
 
1099
 
 
1100
2008-10-07  Sebastien Pouliot  <sebastien@ximian.com>
 
1101
 
 
1102
        * runtime.cpp (Surface::SetCursor): Don't create the GdkPixmap and
 
1103
        GdkColor unless we need them. Unref the pixmap after the call to
 
1104
        gdk_cursor_new_from_pixmap.
 
1105
 
 
1106
2008-10-06  Jeffrey Stedfast  <fejj@novell.com>
 
1107
 
 
1108
        * pipeline.h (IMediaStream::dtor): Delete the frame. This prevents
 
1109
        a MediaFrame leak-per-node whenever the queue is cleared.
 
1110
 
 
1111
        * pipeline.cpp (ASFMarkerDecoder::DecodeFrame): Free the
 
1112
        frame->bufefr before updating it to point to a new malloc'd
 
1113
        buffer.
 
1114
        (ASFDemuxer::TryReadFrame): Delete the frame on error.
 
1115
        (IMediaStream::PopFrame): After getting the node's frame, set the
 
1116
        node->frame to NULL.
 
1117
 
 
1118
2008-10-06  Larry Ewing  <lewing@novell.com>
 
1119
 
 
1120
        * media.cpp, media.h: rework image code to skip using a downloader
 
1121
        when a cached image surface is available.  Fix a crash where
 
1122
        multiple loading errors occur for a single image.  Rewrite
 
1123
        existing SetSourceAsync ticks when the source changes again before
 
1124
        the initial tick was processed.  
 
1125
 
 
1126
        The goal here is to greatly reduce the work we do in cases where
 
1127
        existing sources are moved between images. Future work should
 
1128
        consist of moving things to the ImageSource model internally.
 
1129
 
 
1130
2008-10-06  Sebastien Pouliot  <sebastien@ximian.com> 
 
1131
 
 
1132
        * text.cpp (Glyphs::Layout): Handle NULL values coming from 
 
1133
        GetGlyphInfo. Avoid crash in DRT #177 (not sure why it did 
 
1134
        not come up before today or why it now fails anyway).
 
1135
 
 
1136
2008-10-06  Jeffrey Stedfast  <fejj@novell.com>
 
1137
 
 
1138
        * brush.cpp (ImageBrush::TargetLoaded): Don't bother with g_atomic
 
1139
        stuff, it's too expensive for what we need.
 
1140
        (ImageBrush::TargetUnloaded): Same.
 
1141
 
 
1142
2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1143
 
 
1144
        * dependencyobject.h, dependencyobject.cpp: Fix SLED10.
 
1145
 
 
1146
2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1147
 
 
1148
        * pipeline.cpp: Reorganize some code.
 
1149
 
 
1150
2008-10-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1151
 
 
1152
        * audio.cpp, audio.h: Access the Media directly to enqueue frames,
 
1153
          avoiding the need for a tick call on the main thread. If audio
 
1154
          underflowed and we don't have more data available, set buffer
 
1155
          underflow flag on the media player.
 
1156
        * playlist.cpp, playlist.h: Playlist::Parse: until the source has all
 
1157
          the data available, return MEDIA_NOT_ENOUGH_DATA.
 
1158
        * downloader.cpp, downloader.h: Remove RequestPosition methods, no
 
1159
          longer needed.
 
1160
        * mms-downloader.h, mms-downloader.cpp: Added Set|GetRequestedPts, and
 
1161
          use that value to determine if we should seek or not.
 
1162
        * mplayer.cpp, mplayer.h: Add a BufferUnderflow flag, set when
 
1163
          audio/video needs more data, but the buffer is empty.
 
1164
        * pipeline.cpp, pipeline.h: Media: Change how buffering works: we now
 
1165
          have an in-memory buffer of demuxed frames (one queue for frames
 
1166
          for each stream), and calculate buffer size from that.
 
1167
          ProgressiveSource: open an additional file descriptor for writing,
 
1168
          makes locking unnecessary. Change al io to return failure if there
 
1169
          is not enough data, this allows us to remove all the
 
1170
          blocking/waiting logic. MemoryQueueSource: push seeks to
 
1171
          MmsDownloader, instead of waiting for MmsDownloader to check for
 
1172
          pending seeks. FileSource: don't reinvent the wheel and use stdio
 
1173
          to get buffered io instead of having buffering logic ourselves.
 
1174
        * mp3.h, mp3.cpp: Implemented non-blocking reading to support buffer
 
1175
          underruns correctly.
 
1176
        * media.cpp: MediaElement: Retrieve buffer size from the demuxer
 
1177
          instead of calculating it. Handle MEDIA_NOT_ENOUGH_DATA errors when
 
1178
          trying to open media and retry later on.
 
1179
 
 
1180
2008-10-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1181
 
 
1182
        * src.mdp: Updated.
 
1183
 
 
1184
2008-10-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1185
 
 
1186
        * dependencyobject.cpp: Use atomic operations with
 
1187
          objects_created|destroyed.
 
1188
 
 
1189
2008-10-02  Chris Toshok  <toshok@ximian.com>
 
1190
 
 
1191
        * resources.cpp (glib_is_stupid): we need to cast value in order
 
1192
        to delete it.
 
1193
 
 
1194
2008-10-02  Geoff Norton  <gnorton@novell.com>
 
1195
 
 
1196
        * media.cpp,pipeline-ffmpeg.cpp,yuv-converter.cpp,mplayer.cpp:
 
1197
        Add some headers needed to compile when #undef DEBUG
 
1198
 
 
1199
2008-10-02  Sebastien Pouliot  <sebastien@ximian.com> 
 
1200
 
 
1201
        * xaml.cpp:  Fix mixup between delete and g_free
 
1202
 
 
1203
2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
 
1204
 
 
1205
        * value.cpp: Fix == for KeyTime (padding too). Add comments and
 
1206
        indent method correctly.
 
1207
 
 
1208
2008-10-02  Jeffrey Stedfast  <fejj@novell.com>
 
1209
 
 
1210
        * xaml.cpp: Move the definition of XamlElementInfo to the top so
 
1211
        that g++ doesn't complain about deleting an incomplete type inside
 
1212
        the XamlElementInstance dtor. Also gets rid of other g++ compiler
 
1213
        warnings.
 
1214
 
 
1215
        * list.cpp (List::InsertAfter): New convenience function to sort
 
1216
        of balance the API.
 
1217
 
 
1218
        * font.cpp (FontFace::Load): Don't ref the default face, it is
 
1219
        returned to us with a ref already.
 
1220
 
 
1221
2008-10-02  Jackson Harper  <jackson@ximian.com>
 
1222
 
 
1223
        * xaml.cpp: Now that Info's aren't shared, Instance's can free
 
1224
        them.  Also properties need to free their name.
 
1225
 
 
1226
2008-10-02  Larry Ewing  <lewing@novell.com>
 
1227
 
 
1228
        * geometry.cpp (Geometry::OnSubPropertyChanged): move
 
1229
        OnSubPropertChanged to Geometry to pick up transform changes until
 
1230
        a better solution is devised.  Fixes updated
 
1231
        test-clip-invalid-update.htm.
 
1232
 
 
1233
2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
 
1234
 
 
1235
        * value.cpp: Fix == for Duration and RepeatBehavior. We can't
 
1236
        use memcmp to compare them since they include (unassigned)
 
1237
        padding. Both structs overrides their == operator so we use that.
 
1238
 
 
1239
2008-10-02  Sebastien Pouliot  <sebastien@ximian.com> 
 
1240
 
 
1241
        * resources.cpp: Free the values (not only their content) when
 
1242
        the hash table is destroyed. Correctly (delete) free the value
 
1243
        when compiled against glib < 2.12 (e.g. SLED10).
 
1244
 
 
1245
2008-10-02  Sebastien Pouliot  <sebastien@ximian.com>
 
1246
 
 
1247
        * geometry.cpp: Remove last patch to GeometryGroup::Draw as this
 
1248
        mess clipping. Add similar fill rule setting code in Geometry::Draw
 
1249
        because Shape::Fill is not called for clipping (but the fill rule
 
1250
        still applies). Comment both so I don't mess with them again :)
 
1251
 
 
1252
2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
 
1253
 
 
1254
        * font.cpp (FontFace::LoadGlyph): We need to force the font size
 
1255
        if we don't own it, since we don't know what the current size is
 
1256
        set to.
 
1257
        (FontFace::Kerning): Same.
 
1258
        (FontFace::GetExtents): Here too.
 
1259
 
 
1260
2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
 
1261
 
 
1262
        Attempt #2 at fixing bug #430766.
 
1263
 
 
1264
        * font.cpp (FontFace::LoadFontFace): Don't load non-scalable fonts
 
1265
        - this helps us do better fallback for bug #430766.
 
1266
        (FontFace::LoadDefaultFace): Do manual fallback of fonts. First
 
1267
        try to use the Microsoft Lucida Sans font if available. If not,
 
1268
        fall back to GNOME's Bitstream Vera Sans font. Then fallback to
 
1269
        DejaVu Sans and finally to X.Org's Luxi Sans font (which doesn't
 
1270
        render many of the glyphs in bug #430766, hence why it is last
 
1271
        choice). If the user doesn't have the X.Org fonts, he's SOL.
 
1272
 
 
1273
2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
 
1274
 
 
1275
        * value.h[.in],value.cpp: Fix operator == to work for non-DO and
 
1276
        non-string values. This fix the issue of removing stuff from a
 
1277
        ResourceDictionary (while a copy still exists in the underlying
 
1278
        Collection).
 
1279
 
 
1280
2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
 
1281
 
 
1282
        Attempt #1 at fixing bug #430766.
 
1283
 
 
1284
        * font.cpp (FontFace::LoadDefaultFace): Pass NULL as the families
 
1285
        argument to LoadFontFace() so that we don't fail when matching the
 
1286
        loaded family name.
 
1287
 
 
1288
2008-10-01  Jeffrey Stedfast  <fejj@novell.com>
 
1289
 
 
1290
        * font.cpp (FontFace::OpenFontDirectory): Now a static class
 
1291
        method.
 
1292
        (FontFace::LoadFontFace): New static method which tries to load an
 
1293
        FT_Face given an FcPattern and a list of families.
 
1294
        (FontFace::FontFace): No longer tries to load an FT_Face, instead
 
1295
        we have it passed to us as an argument.
 
1296
        (FontFace::LoadDefaultFace): New static method to load a global
 
1297
        FT_Face representing the default system font.
 
1298
        (FontFace::GetDefault): Instantiates a new FontFace using the
 
1299
        global system default FT_Face.
 
1300
        (FontFace::Load): Now takes only a TextFontDescription (much
 
1301
        cleaner/simpler). If we are loading the default system font or if
 
1302
        loading the requested font fails, simply return a new FontFace
 
1303
        based on the global system default FT_Face.
 
1304
        (TextFont::TextFont): Now takes fewer arguments (cleaner API,
 
1305
        yay!).
 
1306
        (TextFont::Load): Now only takes a TextFontDescription argument to
 
1307
        make the API simpler/cleaner.
 
1308
        (TextFontDescription::CreatePattern): Now public and takes a
 
1309
        'sized' argument specifying whether or not the created pattern
 
1310
        should include the size field. This is needed because TextFont
 
1311
        caches based on all attributes while FontFace caches on everything
 
1312
        but size. Also, don't include weight, width, or slant if our font
 
1313
        family is the default (Portable User Interface is not allowed to
 
1314
        have any of those attributes).
 
1315
        (TextFontDescription::IsDefault): New method to decide if our
 
1316
        family is the default or not.
 
1317
        (TextFontDescription::GetFamilies): New convenience method to
 
1318
        strsplit the family string into an array.
 
1319
        (TextFontDescription::SetFamily): If the value "Portable User
 
1320
        Interface" is set, set our family to NULL instead.
 
1321
 
 
1322
2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
 
1323
 
 
1324
        * geometry.cpp (GeometryGroup::Draw): Make sure the original
 
1325
        fill rule is still in effect at the end of drawing the group.
 
1326
 
 
1327
2008-10-01  Chris Toshok  <toshok@ximian.com>
 
1328
 
 
1329
        * geometry.cpp (GeometryGroup::Draw): reinstate the call to
 
1330
        cairo_set_fill_rule removed in r105643.  This fixes
 
1331
        http://mapul.com/Tutorials.html.
 
1332
 
 
1333
2008-10-01  Sebastien Pouliot  <sebastien@ximian.com>
 
1334
 
 
1335
        * shape.cpp: (Shape::InsideObject) Move cairo_save after the 
 
1336
        extents.PointInside check since there was no cairo_restore
 
1337
        if false was returned. Looks likely that false was not much
 
1338
        returned (if ever).
 
1339
 
 
1340
2008-09-30  Chris Toshok  <toshok@ximian.com>
 
1341
 
 
1342
        * stylus.cpp (Stroke::OnCollectionItemChanged): we need to
 
1343
        recompute our bounds when an item (can only be a stylus point)
 
1344
        changes its properties.  Fixes stroke bounds in the face of
 
1345
        dragging text in inkjournal.
 
1346
 
 
1347
2008-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1348
 
 
1349
        * audio-pulse.cpp, audio-pulse.h: Don't use callbacks with
 
1350
          pa_stream_[cork|trigger|flush|drain] since the audio source might
 
1351
          have gotten deleted by the time the callback is called.
 
1352
 
 
1353
2008-09-30  Chris Toshok  <toshok@ximian.com>
 
1354
 
 
1355
        * dirty.cpp (Surface::ProcessDownDirtyElements): use
 
1356
        AddDirtyElement instead of |= to set flags, since it might require
 
1357
        dirty list manipulation.
 
1358
 
 
1359
2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
 
1360
 
 
1361
        * xaml.cpp: Fix (again) the leaks in dependency_object_add_child, 
 
1362
        this time with new/delete to make it work with non-DO.
 
1363
 
 
1364
2008-09-30  Sebastien Pouliot  <sebastien@ximian.com> 
 
1365
 
 
1366
        * xaml.cpp: Better fix for the leaks in dependency_object_add_child.
 
1367
 
 
1368
2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
 
1369
 
 
1370
        * xaml.cpp: Fix leak in dependency_object_add_child when AddWithError
 
1371
        returns false.
 
1372
 
 
1373
2008-09-30  Stephane Delcroix  <sdelcroix@novell.com>
 
1374
 
 
1375
        * downloader.cpp: fix the leak in validate_policy.
 
1376
 
 
1377
2008-09-30  Sebastien Pouliot  <sebastien@ximian.com>
 
1378
 
 
1379
        * debug.cpp: Make sure allocated 'binary' is freed in every case
 
1380
        inside addr2line_offset.
 
1381
 
 
1382
2008-09-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1383
 
 
1384
        * audio-alsa.cpp: Close the pcm in the dtor, not in Close. Refcounting
 
1385
          ensures that the dtor won't be called while playing or that we'll
 
1386
          be playing destructed sources, but Close might be called at any
 
1387
          time.
 
1388
 
 
1389
2008-09-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1390
 
 
1391
        * pipeline.cpp: NullDecoder::DecodeAudioFrame: protected against int
 
1392
          underflows and /0 errors.
 
1393
 
 
1394
2008-09-29  Chris Toshok  <toshok@ximian.com>
 
1395
 
 
1396
        * dependencyobject.cpp (DependencyObject::RegisterAllNamesRootedAt):
 
1397
        if during the course of traversing the tree, we come across a temp
 
1398
        namescope, merge that up instead of recursing down even further.
 
1399
        (DependencyObject::SetLogicalParent): only clear the namescope if
 
1400
        we're merging ourselves into a parent namescope.
 
1401
 
 
1402
        * canvas.cpp (Canvas::Canvas): remove the temp namescope creation
 
1403
        here.  the parser does it for us if we're parsing an element, and
 
1404
        programmatically created objects don't seem to have them.
 
1405
 
 
1406
2008-09-29  Jeffrey Stedfast  <fejj@novell.com>
 
1407
 
 
1408
        * media.cpp (MediaBase::GetDownloaderPolicy): New virtual method
 
1409
        to get the download policy based on the uri. By default, returns
 
1410
        MediaPolicy.
 
1411
        (MediaElement::GetDownloaderPolicy): Return StreamingPolicy if
 
1412
        mms://
 
1413
        (MediaBase::SetAllowDownloads): Use GetDownloaderPolicy() instead
 
1414
        of hardcoding mms:// check.
 
1415
        (MediaBase::OnPropertyChanged): Same.
 
1416
 
 
1417
        * brush.cpp (ImageBrush::SetSurface): Remove previous hack.
 
1418
        (ImageBrush::TargetLoaded): Call SetAllowDOwnloads(true) on our
 
1419
        image once we have at least 1 target which is loaded in the visual
 
1420
        tree.
 
1421
        (ImageBrush::TargetUnloaded): Disallow image downloads once our
 
1422
        loaded_count falls back to 0.
 
1423
        (ImageBrush::AddTarget): Listen to the target's Loaded/Unloaded
 
1424
        events.
 
1425
        (ImageBrush::RemoveTarget): Remove our listeners for the Loaded
 
1426
        and Unloaded events placed on the target object.
 
1427
 
 
1428
        * uielement.cpp (UIElement::ClearLoaded): Emit an UnloadedEvent.
 
1429
 
 
1430
        * dependencyobject.cpp (DependencyObject::SetValueWithError): Call
 
1431
        AddTarget()/RemoveTarget() on DO property values as they are
 
1432
        set/unset.
 
1433
        (DependencyObject::AddTarget): New virtual method which gets
 
1434
        called on DependencyObject property values when they are set on a
 
1435
        target.
 
1436
        (DependencyObject::RemoveTarget): Same but when unset.
 
1437
 
 
1438
        * media.cpp (MediaBase::SetAllowDownloads): New method to handle a
 
1439
        state-change of allowing new downloads vs not.
 
1440
        (MediaBase::OnLoaded): Call SetAllowDownloads(true).
 
1441
 
 
1442
2008-09-29  Jeffrey Stedfast  <fejj@novell.com>
 
1443
 
 
1444
        * brush.cpp (ImageBrush::SetSurface): Update the image's Loaded
 
1445
        state. Fixes some regressions introduced by moving the async
 
1446
        downloading logic from MediaBase::SetSurface() into
 
1447
        ImageBase::OnLoaded().
 
1448
 
 
1449
2008-09-29  Sebastien Pouliot  <sebastien@ximian.com>
 
1450
 
 
1451
        * pipeline-ffmpeg.cpp: Free extradata, if allocated, on failure.
 
1452
 
 
1453
2008-09-28  Chris Toshok  <toshok@ximian.com>
 
1454
 
 
1455
        * xaml.cpp (XNamespace::SetAttribute): don't both RegisterName and
 
1456
        SetValue (NameProperty) - just set the NameProperty, it'll update
 
1457
        the proper namescope automatically.
 
1458
        (get_parent): remove.
 
1459
        (set_parent): remove.  we no longer need to maintain a temporary
 
1460
        chain while parsing.  there's also no need for set_parent(NULL)
 
1461
        anywhere.
 
1462
        (XamlElementInstance::TrySetContentProperty): if there was an
 
1463
        error in DependencyObject::SetValueWithError or
 
1464
        Collection::AddWithError, raise a parser error.
 
1465
        (dependency_object_add_child): call
 
1466
        Collection/ResourceDictionary::AddWithError, and raise a
 
1467
        parser_error if it fails.  also, remove set_parent (NULL) calls.
 
1468
 
 
1469
        * dependencyobject.h,
 
1470
        dependencyobject.cpp (DependencyObject::MergeNameScopes): remove.
 
1471
        (DependencyObject::RegisterAllNamesRootedAt): this now takes a
 
1472
        MoonError argument so we can signal when there's been a conflict.
 
1473
        (DependencyObject::SetLogicalParent): this also now takes a
 
1474
        MoonError argument, and this is where ALL the namescope merging
 
1475
        code lives.  It's been removed from everywhere else.  Also, this
 
1476
        change means we can no longer be setting/clearing the parent in
 
1477
        xaml.cpp, as it destroys temp namescopes.
 
1478
 
 
1479
        * namescope.h, namescope.cpp (NameScope::MergeTemporaryScope): add
 
1480
        a MoonError parameter, so we can communicate back an
 
1481
        error (conflicting names) properly.
 
1482
        (NameScope::Dump): new method.
 
1483
        
 
1484
        * collection.h, collection.cpp (Collection::AddWithError): new
 
1485
        method, generate a binding for this instead of Add.  This allows
 
1486
        us to check for name conflicts when a DOCollection is updated.
 
1487
        (Collection::InsertWithError): same.  Also, this method has
 
1488
        something quirky about it - it calls AddedToCollection *before*
 
1489
        the collection is modified.  suck, but the logic in that code
 
1490
        needs to be run before the change occurs.
 
1491
        (Collection::AddedToCollection): add a MoonError arg so we can
 
1492
        properly pass errors back up.
 
1493
        (DependencyObjectCollection::RegisterAllNamesRootedAt): add the
 
1494
        MoonError arg.
 
1495
        (DependencyObjectCollection::AddedToCollection,
 
1496
        DependencyObjectCollection::RemovedFromCollection): remove
 
1497
        namescope handling from here.
 
1498
        
 
1499
        * animation.h,
 
1500
        animation.cpp (KeyFrameCollection::AddedToCollection): track api
 
1501
        change to Collection::AddedToCollection.
 
1502
 
 
1503
        * resources.h, resources.cpp: track changes to AddedToCollection,
 
1504
        RegisterAllNamesRootedAt, and AddWithError.  Also, remove
 
1505
        namescope handling code from here.
 
1506
 
 
1507
        * cbinding.cpp, cbinding.h, type-generated.cpp: regen.
 
1508
        
 
1509
2008-09-28  Chris Toshok  <toshok@ximian.com>
 
1510
 
 
1511
        * geometry.cpp (Geometry::OnPropertyChanged): this method was
 
1512
        never chaining up to DependencObject::OnPropertyChanged, which it
 
1513
        must do for properties whose ownerType != Geometry.
 
1514
 
 
1515
2008-09-28  Chris Toshok  <toshok@ximian.com>
 
1516
 
 
1517
        * media.cpp (TimelineMarkerCollection::Add): no need to check the
 
1518
        element type of the value, by the time it makes it here it should
 
1519
        already be the right type.
 
1520
 
 
1521
2008-09-26  Jeffrey Stedfast  <fejj@novell.com>
 
1522
 
 
1523
        * media.cpp (MediaBase::OnLoaded): Logic moved here from
 
1524
        SetSurface().
 
1525
        (MediaBase::OnPropertyChanged): Check IsLoaded() to see if we
 
1526
        should start the downloader yet.
 
1527
 
 
1528
        * xaml.cpp: Revert the hydrating check for SetSurface() from the
 
1529
        previous commit. This is causing a bunch of failures :(
 
1530
 
 
1531
2008-09-26  Jeffrey Stedfast  <fejj@novell.com>
 
1532
 
 
1533
        * xaml.cpp (XamlLoader::HydrateFromString): Properly initialize
 
1534
        parser_info->hydrating and parser_info->hydrate_expecting based on
 
1535
        whether or not we are really doing a HydrateFromString() vs
 
1536
        CreateFromString().
 
1537
        (create_element_info_from_imported_managed_type): Only
 
1538
        SetSurface() if we are hydrating.
 
1539
        (XamlElementInstanceNative::CreateItem): Same.
 
1540
        (XamlElementInfoManaged::CreateElementInstance): Here too.
 
1541
        (XamlElementInfoManaged::CreateWrappedElementInstance): And here.
 
1542
        (XamlElementInfoManaged::CreatePropertyElementInstance): And here...
 
1543
        (XamlElementInfoImportedManaged::CreateElementInstance): Same.
 
1544
        (XamlElementInfoImportedManaged::CreateWrappedElementInstance): And here.
 
1545
        (XamlElementInfoImportedManaged::CreatePropertyElementInstance): Here too.
 
1546
 
 
1547
2008-09-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1548
 
 
1549
        * dependencyobject.cpp, dependencyobject.h: Make objects_created and
 
1550
          objects_destroyed thread-safe. Added MOONLIGHT_OBJECT_TRACK_TYPE to
 
1551
          track a specific type, might be useful when the id varies from run
 
1552
          to run. Make Dispose public.
 
1553
        * media.cpp: Reinitialize: Dispose the downloaded_file if we're being
 
1554
          destructed.
 
1555
        * pipeline.cpp, pipeline.h: Implement MemoryQueueSource::Dispose, and
 
1556
          cleanup properly there instead of in the dtor. This breaks a
 
1557
          circular reference between ASFPacket/ASFDemuxer/MemoryQueueSource.
 
1558
 
 
1559
2008-09-26  Stephane Delcroix  <sdelcroix@novell.com>
 
1560
 
 
1561
        * downloader.cpp: use StreamingPolicy for streaming
 
1562
 
 
1563
2008-09-25  Jeffrey Stedfast  <fejj@novell.com>
 
1564
 
 
1565
        * runtime.cpp (Surface::ShowFullScreenMessage): Don't use
 
1566
        g_str_has_prefix() on NULL strings.
 
1567
 
 
1568
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1569
 
 
1570
        * pipeline.cpp: RegisterMSCodecs: Don't duplicate that much code, and
 
1571
          only print messages to stdout if MOONLIGHT_OVERRIDES=codecs=debug.
 
1572
 
 
1573
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1574
 
 
1575
        * downloader.cpp: validate_policy: Fix boolean logic according to
 
1576
          comment, fixes crash.
 
1577
 
 
1578
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1579
 
 
1580
        * media.cpp: Plug one more leak.
 
1581
 
 
1582
2008-09-25  Stephane Delcroix  <sdelcroix@novell.com>
 
1583
 
 
1584
        * downloader.cpp: neforce security policies on Open ()
 
1585
 
 
1586
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1587
 
 
1588
        * pipeline.cpp, pipeline.h: Added Media::IsMSCodecsInstalled, and look
 
1589
          for the mp3 codecs in libmscodecs.so, libmscodecs-mp3.so doesn't
 
1590
          exist anymore.
 
1591
 
 
1592
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1593
 
 
1594
        * pipeline-ui.cpp: AdaptToParentWindow: free the toplevels list.
 
1595
 
 
1596
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1597
 
 
1598
        * downloader.cpp: Fix a potential leak.
 
1599
 
 
1600
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1601
 
 
1602
        * dependencyobject.cpp: DependencyObject::RemoveListener: We need to
 
1603
          delete the listener link, not only remove it. Plugs a leak.
 
1604
 
 
1605
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1606
 
 
1607
        * audio-pulse.h, clock.h, layout.h, pipeline.h, template.h,
 
1608
          yuv-converter.h: Sprinkle virtual on some destructors.
 
1609
 
 
1610
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1611
 
 
1612
        * internal-downloader.h, file-downloader.h, mms-downloader.h: Fix
 
1613
          another leak.
 
1614
 
 
1615
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1616
 
 
1617
        * audio-pulse.cpp: Another leak plugged.
 
1618
 
 
1619
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1620
 
 
1621
        * debug.cpp: Fix stack traces.
 
1622
 
 
1623
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1624
 
 
1625
        * audio-pulse.cpp: Add a missing unref.
 
1626
 
 
1627
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1628
 
 
1629
        * pipeline-ui.cpp: Store libmscodecs.so in ~/.mozilla/plugins.
 
1630
 
 
1631
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1632
 
 
1633
        * pipeline-ui.cpp: Hush.
 
1634
 
 
1635
2008-09-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1636
 
 
1637
        * pipeline.cpp, pipeline.h: Added an abi_version to codec registration
 
1638
          functions.
 
1639
 
 
1640
2008-09-24  Aaron Bockover  <abockover@novell.com>
 
1641
 
 
1642
        * pipeline-ui.cpp: 
 
1643
        * pipeline-ui.h: Redesigned the dialog to conform to the GNOME HIG 
 
1644
        in regards to header messages, detail messages, spacing, padding, and
 
1645
        button layout; use a GtkDialog instead of a GtkWindow, and take all
 
1646
        input through the dialog's response signal; require the user to explicitly
 
1647
        tell us that they never want to see the installer again instead of 
 
1648
        assuming on cancel; fix crash when cancelling while downloading
 
1649
 
 
1650
2008-09-24  Jeffrey Stedfast  <fejj@novell.com>
 
1651
 
 
1652
        * dependencyproperty.cpp (resolve_property_path): Fixicated.
 
1653
 
 
1654
2008-09-24  Sebastien Pouliot  <sebastien@ximian.com>
 
1655
 
 
1656
        * pipeline.cpp: Fix a valgrind complaint when a NULL parameter is 
 
1657
        given to g_file_test 
 
1658
 
 
1659
2008-09-24  Jeffrey Stedfast  <fejj@novell.com>
 
1660
 
 
1661
        * dependencyproperty.cpp (resolve_property_path): Cleaned up the
 
1662
        code, robustified, and fixed bug #429396.
 
1663
 
 
1664
2008-09-24  Sebastien Pouliot  <sebastien@ximian.com>
 
1665
 
 
1666
        * dependencyproperty.cpp: Fix SIGSEGV when parsing something that
 
1667
        does not exists.
 
1668
        [Fix bug #429396]
 
1669
 
 
1670
2008-09-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1671
 
 
1672
        * pipeline-ui.cpp, pipeline-ui.h: UI to download and install codecs.
 
1673
        * pipeline-logo.cpp, pipeline-logo.inc: Renamed pipeline-logo.inc to
 
1674
          pipeline-logo.cpp and made it an extern variable to avoid
 
1675
          duplicating the entire image in the binary for every time we want
 
1676
          to use it.
 
1677
        * pipeline.cpp, pipeline.h: RegisterMSCodecs: Read the path to ms
 
1678
          codecs from our configuration, and always register ms codecs first
 
1679
          in the list. NullDecoder: fix a buffer overrun and update according
 
1680
          to pipeline-logo changes.
 
1681
        * moonlightconfiguration.cpp, moonlightconfiguration.h: Added: a class
 
1682
          to store our configuration.
 
1683
        * media.cpp: MediaElement::MediaOpened: if any of the streams is
 
1684
          handled by a nulldecoder, it means we don't have ms codecs
 
1685
          installed. If so, show the codec downloader UI.
 
1686
        * Makefile.am, src.mdp: Updated.
 
1687
 
 
1688
2008-09-23  Chris Toshok  <toshok@ximian.com>
 
1689
 
 
1690
        * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
 
1691
        back out (#if false) this change for now.
 
1692
 
 
1693
2008-09-23  Stephane Delcroix  <sdelcroix@novell.com>
 
1694
 
 
1695
        * runtime.h|cpp: Surface::GetSourceLocation()
 
1696
 
 
1697
2008-09-23  Sebastien Pouliot  <sebastien@ximian.com>
 
1698
 
 
1699
        * uielement.cpp: Delete the temporary region before returning on an
 
1700
        invisible element (common in defiwind).
 
1701
 
 
1702
2008-09-22  Chris Toshok  <toshok@ximian.com>
 
1703
 
 
1704
        * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
 
1705
        another case we hadn't addressed - if the object we're merging
 
1706
        *from* doesn't have a namescope, we iterate over the entire tree,
 
1707
        registering names into our (possibly temporary, if it didn't exist
 
1708
        before) namescope.  Fixes firstfloorsoftware.com (bug #425268).
 
1709
 
 
1710
        * xaml.cpp (XamlElementInstanceNative::CreateItem): fix memory
 
1711
        leak.
 
1712
 
 
1713
2008-09-22  Jeffrey Stedfast  <fejj@novell.com>
 
1714
 
 
1715
        * dependencyobject.cpp (merge_namescope): Return the parent_ns so
 
1716
        that our caller doesn't have to call FindNameScope() in case it
 
1717
        was created.
 
1718
        (DependencyObject::MergeTemporaryNameScopes): Adjust for above API
 
1719
        change.
 
1720
 
 
1721
2008-09-22  Larry Ewing  <lewing@novell.com>
 
1722
 
 
1723
        * geometry.cpp (Geometry::Draw): fix the transform brokeness that
 
1724
        crept in.  Fixes test-geometry-transform.xaml
 
1725
 
 
1726
2008-09-22  Michael Dominic K.  <mdk@mdk.am>
 
1727
 
 
1728
        * animation.cpp:
 
1729
        * clock.cpp:
 
1730
        * clock.h: 0-time animations are valid (as in: passing the timeline
 
1731
        validation test) but do nothing. Fixes the clock11 test.
 
1732
 
 
1733
2008-09-22  Michael Dominic K.  <mdk@mdk.am>
 
1734
 
 
1735
        * animation.cpp:
 
1736
        * animation.h: Attach storage only once. Fixes a crash in clock21.html.
 
1737
 
 
1738
2008-09-19  Jeffrey Stedfast  <fejj@novell.com>
 
1739
 
 
1740
        Fix for bug #427560
 
1741
 
 
1742
        * dependencyobject.cpp (DependencyObject::MergeTemporaryNameScopes):
 
1743
        Use FindNameScope() to get the scope to merge into, and only call
 
1744
        this once - don't re-get it ever loop.
 
1745
 
 
1746
2008-09-19  Jeffrey Stedfast  <fejj@novell.com>
 
1747
 
 
1748
        * dependencyobject.cpp (EventObject::AddXamlHandler): New method
 
1749
        to add a handler from XAML so that we can force the listener token
 
1750
        to be 0, like Silverlight does.
 
1751
 
 
1752
2008-09-19  Michael Dominic K.  <mdk@mdk.am>
 
1753
 
 
1754
        * animation.cpp:
 
1755
        * animation.h: Attach the storage to the prev storage on the
 
1756
        partuclar AnimationClock/Storage Begin, not when the parent
 
1757
        storyboard begins. That fixes: #412074 .
 
1758
 
 
1759
2008-09-19  Stephane Delcroix  <sdelcroix@novell.com>
 
1760
 
 
1761
        * src/downloader.cpp:
 
1762
        * src/downloader.h: DownloadAccessPolicy enum, used as dl.Open
 
1763
        argument. Drop downloder_open method.
 
1764
        * src/media.cpp:
 
1765
        * src/playlist.cpp:
 
1766
        * src/deepzoomimagetilesource.cpp:
 
1767
        * src/text.cpp: use the new Open with the corresponding policy.
 
1768
 
 
1769
2008-09-19  Sebastien Pouliot  <sebastien@ximian.com>
 
1770
 
 
1771
        * media.cpp: Reduce the pixbuffer leaks on popfly.com. The biggest
 
1772
        offenders are gone now but it's still leaking in a few cases.
 
1773
 
 
1774
2008-09-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1775
 
 
1776
        * pipeline.cpp: MediaFrame::~MediaFrame: Free the buffer before calling
 
1777
          any custom Cleanup methods (allowing the Cleanup method to free
 
1778
          buffer if g_free isn't the way to do it).
 
1779
 
 
1780
2008-09-18  Jeffrey Stedfast  <fejj@novell.com>
 
1781
 
 
1782
        Fixes bug #410619.
 
1783
 
 
1784
        * dependencyobject.cpp (class EventLists): Init current_token to
 
1785
        1. Popfly uses a token of 0 to mean no-listener (sorta like gtk
 
1786
        apps use 0 to mean that a g_signal is not connected).
 
1787
 
 
1788
2008-09-18  Geoff Norton  <gnorton@novell.com>
 
1789
 
 
1790
        * media.cpp: Stop leaking pixbuf loaders.
 
1791
 
 
1792
2008-09-18  Sebastien Pouliot  <sebastien@ximian.com>
 
1793
 
 
1794
        * mp3.cpp: Need to g_strdup the "mp3" string or we could crash when
 
1795
        g_free-ing it later.
 
1796
 
 
1797
2008-09-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1798
 
 
1799
        * pipeline.cpp: Check for register_mswmv in libmscodecs.so, and honor
 
1800
          RUNTIME_INIT_CODECS_DEBUG.
 
1801
        * runtime.h, runtime.cpp: Add a runtime init flag to print codec debug
 
1802
          info.
 
1803
 
 
1804
2008-09-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1805
 
 
1806
        * src.mdp: Updated.
 
1807
        * pipeline.cpp, pipeline.h: Add a generic null decoder, shows a
 
1808
          moonlight logo for video and plays silence for audio.
 
1809
        * mp3.cpp, mp3.h: Remove NullMp3Decoder, no longer needed.
 
1810
        * mplayer.cpp: RenderFrame: take stride into account when blitting rgb
 
1811
          data.
 
1812
        * pipeline-logo.inc: Added.
 
1813
 
 
1814
2008-09-17  Larry Ewing  <lewing@novell.com>
 
1815
 
 
1816
        * border.cpp:
 
1817
        * control.cpp:
 
1818
        * grid.cpp:
 
1819
        * frameworkelement.cpp: start filling in InvalidateArrange and
 
1820
        InvalidateMeasure calls.
 
1821
 
 
1822
        * panel.cpp:
 
1823
        * panel.h:
 
1824
        * canvas.h:
 
1825
        * canvas.cpp (Canvas::OnCollectionItemChanged): move the ZIndex
 
1826
        change handling here from panel since it is a Canvas property.
 
1827
 
 
1828
2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1829
 
 
1830
        * pipeline.h: Remove some dead code.
 
1831
 
 
1832
2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1833
 
 
1834
        * runtime.h, runtime.cpp: Instead of having a flag to enable ms codecs,
 
1835
          add flags to disable both ffmpeg and ms codecs and include them by
 
1836
          default.
 
1837
        * pipeline.cpp: register_mscodecs: look for libmscodecsmp3.so too
 
1838
          (until it gets integrated in libmscodecs.so), and register the mp3
 
1839
          codec. Media::Initialize: Update according to runtime init flag
 
1840
          changes, and always register null encoders.
 
1841
 
 
1842
2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1843
 
 
1844
        * pipeline.cpp, runtime.cpp, runtime.h: Add a runtime override to not
 
1845
          delete downloaded media files.
 
1846
 
 
1847
2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1848
 
 
1849
        * dependencyobject.cpp: Add TODO.
 
1850
 
 
1851
2008-09-17  Jackson Harper  <jackson@ximian.com>
 
1852
 
 
1853
        * xaml.cpp: Don't try setting the content prop in managed if there
 
1854
        is no cdata content (we're just dealing with spaces).
 
1855
 
 
1856
2008-09-17  Larry Ewing  <lewing@novell.com>
 
1857
 
 
1858
        * grid.cpp (Grid::MeasureOverride): fix the span accumulators to
 
1859
        use the right index value.
 
1860
 
 
1861
2008-09-17  Sebastien Pouliot  <sebastien@ximian.com>
 
1862
 
 
1863
        * frameworkelement.cpp: Fix moon-unit SIGSEGV when unreferencing
 
1864
        SizeChangedEventArgs.
 
1865
 
 
1866
2008-09-17  Michael Dominic K.  <mdk@mdk.am>
 
1867
 
 
1868
        * clock.cpp:
 
1869
        * clock.h: Separate raising events from raising completed events. 
 
1870
        In certain clock hierarchies this would cause us to emit completed event
 
1871
        before raising animation setter events.
 
1872
 
 
1873
        * applier.cpp: Enabling the applier again.
 
1874
        * applier.h: Animation resets don't have INSTANT precedence. The just 
 
1875
        have higher precedence than normal animation setters.
 
1876
 
 
1877
2008-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1878
 
 
1879
        * audio-pulse.cpp: Remove stray characters.
 
1880
 
 
1881
2008-09-16  Chris Toshok  <toshok@ximian.com>
 
1882
        
 
1883
        * dirty.h, dirty.cpp: add DirtyMeasure/DirtyArrange.
 
1884
 
 
1885
        * frameworkelement.h, frameworkelement.cpp
 
1886
        (FrameworkElement::UpdateLayout): override
 
1887
        UIElement::UpdateLayout, and if that base class method returns
 
1888
        true, emit LayoutUpdatedEvent.
 
1889
 
 
1890
        * uielement.h, uielement.cpp (UIElement::InvalidateMeasure): add
 
1891
        DirtyMeasure.
 
1892
        (UIElement::InvalidateArrange): add DirtyArrange.
 
1893
        (UIElement::DoMeasure): this should drive the measure process -
 
1894
        needs filling in, though.
 
1895
        (UIElement::DoArrange): this should drive the arrange
 
1896
        process. same.
 
1897
        (UIElement::UpdateLayout): change return type to bool.  call
 
1898
        DoMeasure and DoArrange synchronously, and return true if we
 
1899
        arrange.
 
1900
 
 
1901
        * runtime.cpp (Surface::Attach): call InvalidateMeasure on the new
 
1902
        toplevel.
 
1903
 
 
1904
        * cbinding.h, cbinding.cpp: regen.
 
1905
 
 
1906
2008-09-16  Larry Ewing  <lewing@novell.com>
 
1907
 
 
1908
        * clock.cpp: make AddTimeout take a priority. Make the render
 
1909
        timeout slightly lower than default so that we process gdk events
 
1910
        before rendering.
 
1911
 
 
1912
        * media.cpp: raise the priority of the media timeout so that it
 
1913
        doesn't drop below default or the render tick.
 
1914
 
 
1915
2008-09-16  Chris Toshok  <toshok@ximian.com>
 
1916
 
 
1917
        * dirty.h, dirty.cpp: add a priority queue-like setup for the
 
1918
        dirty lists, where priority == level in the visual hierarchy.
 
1919
        Processing the down dirty list proceeds from lower "priority" to
 
1920
        higher, and the up dirty list proceeds from higher to lower.
 
1921
        * runtime.h, runtime.cpp: use the new dirty lists.
 
1922
 
 
1923
        * uielement.h, uielement.cpp: add a visual_level field, which is
 
1924
        updated when the element is added to the
 
1925
        hierarchy (this->visual_level = parent->visual_level + 1).
 
1926
 
 
1927
2008-09-16  Jackson Harper  <jackson@ximian.com>
 
1928
 
 
1929
        * xaml.cpp: keys should be a property of the instance.
 
1930
 
 
1931
2008-09-16  Fernando Herrera  <fherrera@novell.com>
 
1932
 
 
1933
        * pipeline.cpp: Register MS codecs if MOONLIGHT_OVERRIDES
 
1934
          has codecs=microsoft.
 
1935
        * runtime.h: Do not default to RUNTIME_INIT_MICROSOFT_CODECS
 
1936
          in RUNTIME_INIT_BROWSER.
 
1937
 
 
1938
2008-09-16  Jackson Harper  <jackson@ximian.com>
 
1939
 
 
1940
        * xaml.cpp: Move cdata handling code into the content property
 
1941
        setters, allow managed content property setters to set values from
 
1942
        strings.
 
1943
 
 
1944
2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1945
 
 
1946
        * audio-pulse.cpp: dlsym another method previously forgotten.
 
1947
 
 
1948
2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1949
 
 
1950
        * multiscaleimage.h, textbox.h: Use quotes to include our headers.
 
1951
 
 
1952
2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1953
 
 
1954
        * audio-alsa.cpp: Use dlopen/dlsym to access all alsa methods, and
 
1955
          don't link with alsa anymore
 
1956
 
 
1957
2008-09-16  Jb Evain  <jbevain@novell.com>
 
1958
 
 
1959
        * template.h (TemplateBinding): decorate with a SLVersion=2.
 
1960
 
 
1961
2008-09-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
1962
 
 
1963
        * audio-pulse.cpp: Use dlopen/dlsym to access all pa methods, and don't
 
1964
          link with pulseaudio anymore. Hopefully fixes #425560.
 
1965
 
 
1966
2008-09-16  Fernando Herrera  <fherrera@novell.com>
 
1967
 
 
1968
        * asf/asf-structures.h:
 
1969
        * asf/asf.cpp:
 
1970
        * asf/asf.h:
 
1971
        * mplayer.h:
 
1972
        * pipeline.h: Don't use relative paths in #includes.
 
1973
        * Makefile.am: Add -Iasf
 
1974
 
 
1975
2008-09-15  Michael Dominic K.  <mdk@mdk.am>
 
1976
 
 
1977
        * src/applier.cpp: Disabling the applier for now, it seems there are still
 
1978
        some tiny 'issues' with it.
 
1979
 
 
1980
2008-09-15  Chris Toshok  <toshok@ximian.com>
 
1981
 
 
1982
        * dependencyobject.h, dependencyobject.cpp: add real
 
1983
        PropertyChange callbacks (so we can implement listeners without
 
1984
        the listener being a dependencyobject - which is nice for
 
1985
        TemplateBindings, which don't need all that overhead.)
 
1986
        
 
1987
        * template.h, template.cpp: switch over to using this new listener
 
1988
        interface.
 
1989
 
 
1990
2008-09-15  Chris Toshok  <toshok@ximian.com>
 
1991
 
 
1992
        * xaml.cpp (dependency_object_set_attributes): add the
 
1993
        TemplateBinding to the item, not the containing template.
 
1994
 
 
1995
2008-09-15  Larry Ewing  <lewing@novell.com>
 
1996
 
 
1997
        * applier.h: really disable the applier to make changes instant,
 
1998
        fixes page turn and the test regressions.
 
1999
 
 
2000
        * applier.cpp: ref and unref the object to avoid crashes on
 
2001
        popfly.
 
2002
 
 
2003
2008-09-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
2004
 
 
2005
        * src.mdp: Updated with new files.
 
2006
 
 
2007
2008-09-12  Larry Ewing  <lewing@novell.com>
 
2008
 
 
2009
        * grid.cpp (Grid::Measure): accumulate colspan width and pass
 
2010
        pixel size restrictions on to the children.
 
2011
 
 
2012
2008-09-11  Michael Dominic K.  <mdk@mdk.am>
 
2013
 
 
2014
        * animation.cpp:
 
2015
        * applier.cpp:
 
2016
        * applier.h: Adding some defines for applier precedences + a way
 
2017
        to instant apply with precedence == 0.
 
2018
 
 
2019
2008-09-10  Michael Dominic K.  <mdk@mdk.am>
 
2020
 
 
2021
        * clock.cpp: Properly emit the Completed event after the properties have
 
2022
        been applied.
 
2023
 
 
2024
2008-09-09  Michael Dominic K.  <mdk@mdk.am>
 
2025
 
 
2026
        * animation.cpp:
 
2027
        * applier.cpp: Removing debug messages, adding proper free code.
 
2028
 
 
2029
2008-09-08  Michael Dominic K.  <mdk@mdk.am>
 
2030
 
 
2031
        * animation.cpp:
 
2032
        * animation.h:
 
2033
        * applier.cpp: Do not set the values, instead move them to applier. 
 
2034
 
 
2035
2008-09-08  Michael Dominic K.  <mdk@mdk.am>
 
2036
 
 
2037
        * applier.cpp:
 
2038
        * clock.cpp:
 
2039
        * clock.h:
 
2040
        * runtime.cpp:
 
2041
        * runtime.h: Moving the Applier instance to TimeManager.
 
2042
 
 
2043
2008-09-08  Michael Dominic K.  <mdk@mdk.am>
 
2044
 
 
2045
        * runtime.cpp:
 
2046
        * runtime.h: Adding Applier to Surface.
 
2047
 
 
2048
2008-09-08  Michael Dominic K.  <mdk@mdk.am>
 
2049
 
 
2050
        * applier.cpp:
 
2051
        * applier.h: Adding a basic Flush method, totally bad for now.
 
2052
 
 
2053
2008-09-08  Michael Dominic K.  <mdk@mdk.am>
 
2054
 
 
2055
        * applier.cpp:
 
2056
        * applier.h: Adding basic Apply function that applies all the changes
 
2057
        to objects.
 
2058
 
 
2059
2008-09-08  Michael Dominic K.  <mdk@mdk.am>
 
2060
 
 
2061
        * applier.cpp:
 
2062
        * applier.h: Adding basic method to add property to apply on object.
 
2063
 
 
2064
2008-09-08  Michael Dominic K.  <mdk@mdk.am>
 
2065
 
 
2066
        * Makefile.am:
 
2067
        * applier.cpp:
 
2068
        * applier.h: Introducing the applier helper class. Will be used 
 
2069
        to apply property changes in order.
 
2070
 
 
2071
2008-09-11  Jackson Harper  <jackson@ximian.com>
 
2072
 
 
2073
        * xaml.cpp: Move some of the content property setting logic into
 
2074
        the XamlElementInstance's.
 
2075
 
 
2076
2008-09-11  Stephane Delcroix  <sdelcroix@novell.com>
 
2077
 
 
2078
        * multiscaleimage.cpp: draw a pattern that should look like
 
2079
        a MSI (currently still wrong)
 
2080
 
 
2081
2008-09-10  Jeffrey Stedfast  <fejj@novell.com>
 
2082
 
 
2083
        * text.h (class Run): Apparently Run's TextProperty is internal in
 
2084
        managed-land.
 
2085
 
 
2086
2008-09-10  Larry Ewing  <lewing@novell.com>
 
2087
 
 
2088
        * border.cpp:
 
2089
        * frameworkelement.cpp:
 
2090
        * shape.cpp, shape.h:
 
2091
        * canvas.cpp: update to pass the new more extensive tests.
 
2092
 
 
2093
2008-09-10  Larry Ewing  <lewing@novell.com>
 
2094
 
 
2095
        * size.h:  Tweak to match updated tests.
 
2096
 
 
2097
2008-09-09  Chris Toshok  <toshok@ximian.com>
 
2098
 
 
2099
        * style.h (class Setter): make ValueProperty's PropertyType
 
2100
        'object' instead of 'Managed'.
 
2101
 
 
2102
        * template.cpp (FrameworkTemplate::AddXamlBinding): make this a
 
2103
        little more bulletproof.
 
2104
        (ControlTemplate::DuplicateObject): XamlTemplateBinding can return
 
2105
        NULL, don't create a TemplateBindingNode (and add it to the list)
 
2106
        in that case.
 
2107
 
 
2108
        * type.h.in (class Type): remove OBJECT - it gets autogenerated
 
2109
        now.
 
2110
 
 
2111
        * xaml.cpp (start_element): we need to set inst->parent before
 
2112
        setting the attributes, as the attributes might include a
 
2113
        StaticResource (or TemplateBinding) that requires us to walk back
 
2114
        up the tree.
 
2115
        (XamlElementInfoNative::CreateElementInstance): create a
 
2116
        XamlElementInstanceTemplate if the type is a subclass of
 
2117
        FRAMEWORKTEMPLATE.
 
2118
        (dependency_object_set_attributes): return out of this after
 
2119
        adding the templatebinding (so we don't end up in the managed xaml
 
2120
        loader code trying to set properties to "{TemplateBinding ...}"
 
2121
        Also, if the property type is OBJECT, call into the loader (like
 
2122
        we do with MANAGED), and fix the logic check on
 
2123
        p->loader->SetAttribute in that case.
 
2124
 
 
2125
        * type.h, type-generated.cpp: regen.
 
2126
 
 
2127
2008-09-09  Sebastien Pouliot  <sebastien@ximian.com>
 
2128
 
 
2129
        * xaml.cpp: Don't unref NULL collections. Fix regression when
 
2130
        parsing invalid points (or doubles).
 
2131
 
 
2132
2008-09-08  Chris Toshok  <toshok@ximian.com>
 
2133
 
 
2134
        * xaml.h, xaml.cpp: stopgap before jackson gets the completely
 
2135
        managed approach to managed object parsing going.  a few key
 
2136
        changes:
 
2137
 
 
2138
        1) xaml_load_managed_object takes an out bool
 
2139
        parameter (is_dependency_object) so the managed code can create
 
2140
        non-DO subclasses, and then the parser will pass that GCHandle
 
2141
        back to managed code in set_attribute.
 
2142
 
 
2143
        2) added an add_child callback to the loader so that managed DO
 
2144
        subclasses (and non-subclasses) can deal with collection
 
2145
        properties.  theres no ContentProperty handled in managed code,
 
2146
        yet.
 
2147
 
 
2148
2008-09-08  Geoff Norton  <gnorton@novell.com>
 
2149
 
 
2150
        * audio-*.(cpp|h): The Alsa code requires us to join the play
 
2151
        thread before we remove the audio sources otherwise we can 
 
2152
        end up in a race accessing closed pcm's when shutting down.
 
2153
 
 
2154
2008-09-08  Geoff Norton  <gnorton@novell.com>
 
2155
 
 
2156
        * audio.cpp: Ensure that we dont enter an infinite loop before
 
2157
        we actually start playing a source.
 
2158
 
 
2159
2008-09-08  Larry Ewing  <lewing@novell.com>
 
2160
 
 
2161
        * frameworkelement.cpp: make things 1.0 safe.
 
2162
 
 
2163
2008-09-08  Larry Ewing  <lewing@novell.com>
 
2164
 
 
2165
        * frameworkelement.cpp (FrameworkElement::Arrange): rework to
 
2166
        match some of the Measure logic
 
2167
 
 
2168
        * border.cpp:
 
2169
        * canvas.cpp, canvas.h:
 
2170
        * control.cpp, control.h: rework arrange implementation to match
 
2171
        the measure logic and the current thinking on arrange.
 
2172
 
 
2173
        * uielement.cpp, uielement.h: expose render_size accessor.
 
2174
 
 
2175
2009-09-08  Stephane Delcroix  <sdelcroix@novell.com>
 
2176
 
 
2177
        * tilesource.h|cpp: keep the source and tiles info on the c++ side
 
2178
 
 
2179
        * multiscaleimage.cpp: draw a cairo pattern instead of nothing
 
2180
 
 
2181
2008-09-08  Larry Ewing  <lewing@novell.com>
 
2182
 
 
2183
        * grid.cpp: Chain collection changed up properly.
 
2184
 
 
2185
2008-09-07  Larry Ewing  <lewing@novell.com>
 
2186
 
 
2187
        * thickness.h (struct Thickness): add +/-/- to thickness to clean
 
2188
        up some of the other code.
 
2189
 
 
2190
        * rect.h: remove ShrinkBy now that we can negate thickness
 
2191
 
 
2192
        * size.h: clean things and make GrowBy stop at 0 now that we can
 
2193
        deal with thickness addition outside of things.
 
2194
 
 
2195
        * canvas.cpp:
 
2196
        * frameworkelement.cpp: 
 
2197
        * control.cpp:
 
2198
        * border.cpp: subtract the padding and border thickness from
 
2199
        available size before passing it to children.  Handle some corner
 
2200
        cases in measure with ugly hacks.
 
2201
        
 
2202
2008-09-07  Larry Ewing  <lewing@novell.com>
 
2203
 
 
2204
        * canvas.cpp, canvas.h:         
 
2205
        * control.cpp, control.h:
 
2206
        * border.cpp:
 
2207
        * grid.cpp:
 
2208
        * panel.cpp, panel.h: refactor MeasureOverride to return the size of the
 
2209
        actual contents.
 
2210
 
 
2211
        * frameworkelement.cpp: Make measure pre and post condition the
 
2212
        output rather than doing it in the overrides themselves.
 
2213
 
 
2214
        * size.h: make sure min/max will never set a known size to NAN.
 
2215
 
 
2216
2008-09-07  Chris Toshok  <toshok@ximian.com>
 
2217
 
 
2218
        * type.h.in: add OBJECT kind.
 
2219
 
 
2220
        * type.h, cbinding.h, cbinding.cpp, type-generated.cpp: regen.
 
2221
 
 
2222
2008-09-06  Chris Toshok  <toshok@ximian.com>
 
2223
 
 
2224
        * value.cpp (Value::CreateUnref): don't use 'Foo foo = Foo(args);'
 
2225
        - instead use 'Foo foo(args)'.  the former creates 2 objects to
 
2226
        the latter's 1.
 
2227
 
 
2228
        * media.cpp (MediaElement::GetValue): same.
 
2229
 
 
2230
        * uielement.cpp: same.
 
2231
 
 
2232
        * error.h, error.cpp (class MoonError): make this a class instead
 
2233
        of a struct, add a default ctor, remove Dispose and use ~MoonError
 
2234
        instead, add FillIn methods that take a "code" as well as an
 
2235
        ErrorType to support the parser.
 
2236
 
 
2237
        * dependencyobject.h, dependencyobject.cpp: some api cleanup - get
 
2238
        rid of GError and use MonoError exclusively, move the internal
 
2239
        EventLists/EventList types to the .cpp file.  Also, remove a few
 
2240
        redundant methods on DependencyObject.  The hit at call sites is
 
2241
        negligable (one additional line, perhaps), and the call sites are
 
2242
        few and far between.
 
2243
 
 
2244
        * xaml.cpp (dependency_object_set_attributes)
 
2245
        (dependency_object_set_property): call
 
2246
        DependencyObject::SetValueWithError.
 
2247
 
 
2248
        * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): look up
 
2249
        the property here.  the DO api is gone.
 
2250
 
 
2251
2008-09-06  Chris Toshok  <toshok@ximian.com>
 
2252
 
 
2253
        * grid.h, grid.cpp: flesh out some of the
 
2254
        OnPropertyChanged/OnSubPropertyChanged/OnCollectionChanged stuff.
 
2255
        Also add in a completely broken and unfinished MeasureOverride
 
2256
        implementation.  It passes some of the tests, but not for the
 
2257
        right reasons :) Lastly, move the GridUnitType enum to enums.h
 
2258
 
 
2259
        * enums.h: move GridUnitType here, and rename its elements to have
 
2260
        a "GridUnitType" prefix.
 
2261
 
 
2262
        * xaml.cpp: track GridUnitType enum references.
 
2263
 
 
2264
        * dependencyproperty.g.cpp: fix up attached properties getters to
 
2265
        return default values if there is one.
 
2266
 
 
2267
2008-09-05  Jeffrey Stedfast  <fejj@novell.com>
 
2268
 
 
2269
        * text.cpp (TextBlock::OnPropertyChanged): TextAlignment doesn't
 
2270
        actually change the lauout, so no need to set the dirty flag when
 
2271
        it changes.
 
2272
        (TextBlock::Layout): Updated to handle Silverlight 2.0 TextBlock's
 
2273
        Padding property.
 
2274
        (TextBlock::Paint): Same.
 
2275
 
 
2276
2008-09-05  Larry Ewing  <lewing@novell.com>
 
2277
 
 
2278
        * uielement.cpp: use render bounds rather than bounds to determine
 
2279
        if we have something to draw.
 
2280
 
 
2281
        * stylus.h, stylus.cpp: remove the EmptyBackground method.
 
2282
 
 
2283
        Fixes the annotation regression in page turn (again).
 
2284
        
 
2285
2008-09-04  Larry Ewing  <lewing@novell.com>
 
2286
 
 
2287
        * uielement.h (class UIElement): generate managed accessors for
 
2288
        the subtree hack.
 
2289
 
 
2290
2008-09-04  Chris Toshok  <toshok@ximian.com>
 
2291
 
 
2292
        * xaml.cpp (dependency_object_add_child): add code here for
 
2293
        FrameworkTemplate, call SetVisualTree with the child.
 
2294
 
 
2295
        * control.cpp (Control::Control): init bindings.
 
2296
        (Control::~Control): unref applied_template and delete bindings.
 
2297
        (Control::ApplyTemplate): make sure we return false here from a
 
2298
        few error places (NULL template, a template with a NULL
 
2299
        visual_tree.)
 
2300
 
 
2301
        * template.cpp (FrameworkTemplate::FrameworkTemplate): init
 
2302
        visual_tree to NULL.
 
2303
        (FrameworkTemplate::~FrameworkTemplate): unref visual_tree.
 
2304
        (FrameworkTemplate::SetVisualTree): new method, set visual_tree
 
2305
        and ref it.
 
2306
        (ControlTemplate::DuplicateObject): we need to special case a
 
2307
        couple of classes (collections, templates) in order to traverse
 
2308
        them.. ugh.
 
2309
        (ControlTemplate::Apply): if the visual_tree is null, don't try to
 
2310
        copy it.
 
2311
 
 
2312
        * template.h (class FrameworkTemplate): add SetVisualTree method
 
2313
        for the parser.
 
2314
 
 
2315
2008-09-04  Larry Ewing  <lewing@novell.com>
 
2316
 
 
2317
        * uielement.cpp, uielement.h: new methods GetSubtreeObject and
 
2318
        ElementAdded ElementRemoved.
 
2319
 
 
2320
        * dependencyobject.h: remove ContentAdded, ContentRemoved.
 
2321
        
 
2322
        * collection.cpp, collection.h: rename ContentWalker to
 
2323
        VisualTreeWalker use GetSubtreeObject () rather than content for walking.
 
2324
 
 
2325
        * template.cpp, template.h: make Apply return the newly created
 
2326
        tree.
 
2327
 
 
2328
        * panel.cpp, panel.h:
 
2329
        * control.cpp, control.h: add template_root child that isn't
 
2330
        hooked into the normal tree.  Start implementing ApplyTemplate and
 
2331
        GetTemplateChild.
 
2332
 
 
2333
        * usercontrol.cpp: mess around with Content a little in making it
 
2334
        use the ElementAdded ElementRemoved logic since UserControl
 
2335
        doesn't really support template changes.
 
2336
        
 
2337
        * border.h: implement GetSubtreeObject. 
 
2338
 
 
2339
        * stylus.cpp:
 
2340
        * dirty.cpp:
 
2341
        * frameworkelement.cpp:
 
2342
        * canvas.cpp, canvas.h: update for new treewalker.
 
2343
 
 
2344
2008-09-04  Jeffrey Stedfast  <fejj@novell.com>
 
2345
 
 
2346
        * layout.cpp (TextLayout::Render): Added some new arguments which
 
2347
        aren't actually used yet but will be eventually (assuming I
 
2348
        continue with this approach).
 
2349
 
 
2350
        * textbox.cpp (TextBox::Paint): Don't bother painting the
 
2351
        background, control does this for us.
 
2352
 
 
2353
2008-09-04  Stephane Delcroix  <sdelcroix@novell.com>
 
2354
 
 
2355
        * tilesource.h, deepzoomimagetilesource.h|.cpp: move the dzits in its
 
2356
        own file, implement the downloader.
 
2357
 
 
2358
2008-09-03  Chris Toshok  <toshok@ximian.com>
 
2359
 
 
2360
        * dependencyobject.h: as much as i hate this, add
 
2361
        GetCurrentValues() for the template stuff.
 
2362
 
 
2363
        * xaml.cpp: add XamlElementInstanceTemplate and initial support
 
2364
        for TemplateBindings.
 
2365
 
 
2366
        * template.h, template.cpp: add a bunch of stuff for templates.
 
2367
 
 
2368
        * control.h, control.cpp: add OnLoaded and OnPropertyChanged to
 
2369
        watch for template property changes, and apply the template in
 
2370
        OnLoaded (or if we're already loaded).  Also, add accessors for
 
2371
        TemplateProperty.
 
2372
 
 
2373
        * dependencyproperty.g.cpp: regen.
 
2374
 
 
2375
2008-09-03  Larry Ewing  <lewing@novell.com>
 
2376
 
 
2377
        * frameworkelement.cpp (FrameworkElement::MeasureOverride): use
 
2378
        the new Size methods.
 
2379
 
 
2380
        * border.cpp, border.h: add some initial (broken) rendering
 
2381
        support, rework measure to use some of the new rect and size
 
2382
        methods.
 
2383
 
 
2384
2008-09-03  Jeffrey Stedfast  <fejj@novell.com>
 
2385
 
 
2386
        * textbox.cpp (TextBox::OnPropertyChanged): When the AcceptsReturn
 
2387
        property chanegs, no need to re-layout or invalidate - according
 
2388
        to my little test program, Silverlight 2 Beta 2 does not change
 
2389
        the rendered text when this property changes - any newlines in the
 
2390
        input text stay there.
 
2391
 
 
2392
2008-09-03  Sebastien Pouliot  <sebastien@ximian.com> 
 
2393
 
 
2394
        * resources.cpp: (ContainsKey) Don't crash if a null key is
 
2395
        supplied. (Remove) same. (Add) same.
 
2396
 
 
2397
2008-09-03  Jeffrey Stedfast  <fejj@novell.com>
 
2398
 
 
2399
        * enums.cpp (initialize_enums): Map Horizontal and
 
2400
        VerticalScrollBarVisibility properly.
 
2401
 
 
2402
        * textbox.cpp (TextBox::CalcActualWidthHeight): Removed, I don't
 
2403
        think we need this for TextBox controls since their
 
2404
        ActualWidth/Height aren't based on the text extents afaik.
 
2405
        (TextBox::Paint): Implemented, sorta.
 
2406
 
 
2407
2008-09-03  Chris Toshok  <toshok@ximian.com>
 
2408
 
 
2409
        * resources.cpp (ResourceDictionary::Clear): add pre-glib 2.12
 
2410
        code.
 
2411
 
 
2412
2008-09-03  Larry Ewing  <lewing@novell.com>
 
2413
 
 
2414
        * uielement.cpp, uielement.h: 
 
2415
        (UIElement::FrontToBack): Make FrontToBack non-virtual and move
 
2416
        the generic logic here.
 
2417
 
 
2418
        * control.cpp, control.h:
 
2419
        * panel.cpp, panel.h: Remove ftb logic, everything is handled in
 
2420
        uielement now.
 
2421
 
 
2422
2008-09-03  Larry Ewing  <lewing@novell.com>
 
2423
 
 
2424
        * uielement.cpp, uielement.h: 
 
2425
        * media.cpp, media.h:
 
2426
        * panel.cpp, panel.h:
 
2427
        * shape.cpp, shape.h: Add GetCoverageBounds virtual method
 
2428
        to let elements compute their own opaque coverage.
 
2429
 
 
2430
2008-09-03  Stephane Delcroix  <sdelcroix@novell.com>
 
2431
 
 
2432
        * multiscaleimage.h|.cpp: new MultiScaleImage type
 
2433
 
 
2434
2008-09-02  Chris Toshok  <toshok@ximian.com>
 
2435
 
 
2436
        * resources.h, resources.cpp: constify this.
 
2437
        (ResourceDictionary::Remove): fix g_hash_table_lookup_extended
 
2438
        logic.
 
2439
 
 
2440
        * xaml.cpp (XamlElementInstance::LookupNamedResource): implement
 
2441
        resource lookups.
 
2442
        (dependency_object_set_attributes): add support for StaticResource
 
2443
        lookups.  going to refactor all this to add support for
 
2444
        TemplateBinding.
 
2445
 
 
2446
2008-09-02  Jeffrey Stedfast  <fejj@novell.com>
 
2447
 
 
2448
        * eventargs.h (class CollectionChangedEventArgs): Implemented
 
2449
        accessor methods to get/set the event arg values.
 
2450
 
 
2451
        * trigger.cpp (EventTrigger::SetTarget): Fixed to not need to
 
2452
        strdup the event_name string and also updated to use an accessor
 
2453
        method to prevent a possible NULL dereference.
 
2454
 
 
2455
2008-09-02  Michael Dominic K.  <mdk@mdk.am>
 
2456
 
 
2457
        * animation.cpp:
 
2458
        * animation2.h: Reworking the animation hookup storage fix. Checking for
 
2459
        subclass is plain dumb. Just make an exception for ObjectAnimation.
 
2460
 
 
2461
2008-09-02  Michael Dominic K.  <mdk@mdk.am>
 
2462
 
 
2463
        * animation.cpp: Fixing a problem in animation hookup 
 
2464
        storage -- the type/kind that the animation generates has to be the subclass
 
2465
        of the type/kind the target property is ready to accept.
 
2466
 
 
2467
2008-09-01  Stephane Delcroix  <sdelcroix@novell.com>
 
2468
 
 
2469
        * multiscalesubimage.h: fixing code generation decorators
 
2470
 
 
2471
2008-09-01  Stephane Delcroix  <sdelcroix@novell.com>
 
2472
 
 
2473
        * multiscalesubimage.h: new type
 
2474
 
 
2475
2008-08-29  Jeffrey Stedfast  <fejj@novell.com>
 
2476
 
 
2477
        * layout.cpp (TextLayout::LayoutWrap): Keep track of when 'words'
 
2478
        end so that we can fall back to that position as the line
 
2479
        width (we don't want to include trailing spaces unless
 
2480
        underlined).
 
2481
        (TextLayout::Render): If the line width is greater than the
 
2482
        allowable width, keep the line left-aligned like Silverlight does.
 
2483
 
 
2484
2008-08-29  Chris Toshok  <toshok@ximian.com>
 
2485
 
 
2486
        * resources.cpp (ResourceDictionary::Clear): call
 
2487
        Collection::Clear after we've cleared the hash so the hash will be
 
2488
        empty in event handlers.
 
2489
 
 
2490
2008-08-29  Jeffrey Stedfast  <fejj@novell.com>
 
2491
 
 
2492
        * layout.cpp (TextLayout::Layout): Do a slightly better job of
 
2493
        keeping track of line->width - still not 100% correct.
 
2494
 
 
2495
2008-08-28  Chris Toshok  <toshok@ximian.com>
 
2496
 
 
2497
        * Makefile.am: add resources.h and resources.cpp
 
2498
 
 
2499
        * xaml.cpp (class XamlElementInfo): add x:Key field (since this
 
2500
        can't set a field on the object -- it might be a value type).
 
2501
        (class XamlElementInstanceValueType): remove the empty
 
2502
        implementation of SetAttributes.  we'll define it later.
 
2503
        (XNamespace::SetAttribute): handle name/key behavior here.  Only
 
2504
        allow one of them to be set on an object. Also, only attempt to
 
2505
        set DependencyObject::NameProperty on an item if it's not a value
 
2506
        type.
 
2507
        (start_element): don't add value type children to their parent in
 
2508
        start_element (as we haven't read the data that will allow us to
 
2509
        create the value typed object.)  we need to push this off to the
 
2510
        end_element handler.  also return early if there are problems
 
2511
        setting attributes.
 
2512
        (end_element_handler): if we're creating a value typed ELEMENT,
 
2513
        add the child to the parent here.
 
2514
        (dependency_object_add_child): add some ResourceDictionary
 
2515
        validation here (if there's no key, etc), and actually call
 
2516
        dict->Add(key, child).
 
2517
        (XamlElementInstanceNative::CreateItem): don't crash if we failed
 
2518
        to create an item.  (fixes one of the crashes caused by the
 
2519
        ResourceDictionaryTests - ParseDouble)
 
2520
        (XamlElementInstanceValueType::SetAttributes): call
 
2521
        value_type_set_attributes.
 
2522
        (value_type_set_attributes): stripped down version of
 
2523
        dependency_object_set_attributes, as there are only a handful (is
 
2524
        it really only x:Name and x:Key?) attributes we handle on value
 
2525
        types.
 
2526
        (globally): always call set_parent as opposed to
 
2527
        ->SetLogicalParent.  we might not be dealing with a DO-subclass.
 
2528
 
 
2529
        * xaml.h (class XamlLoader): remove the explicit C api calls
 
2530
        xaml_create_from_file, xaml_create_from_str, and
 
2531
        xaml_hydrate_from_str.  Replace them with instance methods on
 
2532
        XamlLoader (CreateFromFile, CreateFromString, and
 
2533
        HydrateFromString, respectively) Add WithError variants of the
 
2534
        these, and have the generator generate bindings for them so we can
 
2535
        throw parse exceptions into managed code.
 
2536
 
 
2537
        * error.h (struct MoonError): add XAML_PARSE_EXCEPTION.
 
2538
 
 
2539
        * value.h.in (struct Value): add Is overload with
 
2540
        additional_types.
 
2541
 
 
2542
        * uielement.h: include resources.h.
 
2543
 
 
2544
        * collection.h, collection.cpp: change the api in a few ways to
 
2545
        make ResourceDictionary easier to write - make Count virtual,
 
2546
        remove all the type checks for element type from methods, and add
 
2547
        that check to Collection::CanAdd.  ResourceDictionary overrides
 
2548
        that and always returns true.  Make Clear return a bool.
 
2549
 
 
2550
        * animation.h, animation.cpp: track collection changes.
 
2551
 
 
2552
        * stylus.h, stylus.cpp: track Collection::CanAdd change, and move
 
2553
        implementations to the .cpp file.
 
2554
 
 
2555
        * resources.h, resources.cpp: split out the code for
 
2556
        ResourceDictionary here.  ResourceDictionary is an odd fish.  In
 
2557
        1.0 land, it provides the same api as a collection, and things can
 
2558
        be looked up by name via findName.  In 2.0 land, items in
 
2559
        ResourceDictionaries have to have either an x:Key or x:Name
 
2560
        attribute.  If both are lacking it's an error.  If the former is
 
2561
        specified you can only get at it through Resources["name"].  If
 
2562
        the latter is specified, you can use both Resources["name"] or
 
2563
        findName("name").
 
2564
 
 
2565
        * dependencyobject.cpp, dependencyobject.h: add Is and GetType
 
2566
        overloads that take additional_types.  Make IsValueValid take an
 
2567
        additional_types parameter too.  Expose ClearValue to managed code
 
2568
        so we can actually clear the Value* to null without using
 
2569
        the (unsupported from the generator) old method of passing
 
2570
        IntPtr.Zero (Value* now maps to "ref Value" in generated
 
2571
        pinvokes.)  Lastly add a SetValueWithError method so we can throw
 
2572
        exceptions in managed code.
 
2573
 
 
2574
        * border.h: add defaults for Padding and BorderThickness.
 
2575
 
 
2576
        * border.cpp: simplify things a bit since we don't have to worry
 
2577
        about padding/border thickness being NULL.
 
2578
 
 
2579
        * depenencyproperty.g.cpp, value.h, type-generated.cpp: regen.
 
2580
 
 
2581
2008-08-28  Jeffrey Stedfast  <fejj@novell.com>
 
2582
 
 
2583
        * layout.cpp (TextLayout::Render): Respect TextAlignment.
 
2584
 
 
2585
2008-08-26  Chris Toshok  <toshok@ximian.com>
 
2586
 
 
2587
        * dependencyobject.cpp (DependencyObject::SetLogicalParent): get
 
2588
        rid of this g_assert, it's crashing the moon-unit tests.  just
 
2589
        warn and bail.
 
2590
        (DependencyObject::SetSurface): don't do anything if the surface
 
2591
        is already set to the same value.
 
2592
 
 
2593
        * animation.cpp (Storyboard::SetSurface): don't do anything if
 
2594
        GetSurface() == surface.
 
2595
 
 
2596
        * text.cpp (Glyphs::SetSurface): same.
 
2597
 
 
2598
        * uielement.cpp (UIElement::SetSurface): same.
 
2599
 
 
2600
        * brush.cpp (ImageBrush::SetSurface): same.
 
2601
 
 
2602
        * media.cpp: same.
 
2603
 
 
2604
        * collection.cpp (DependencyObjectCollection::SetSurface): same.
 
2605
        (Collection::RemoveAtWithError): this (against logic) raises
 
2606
        ArgumentException, not ArgumentOutOfRangeException.
 
2607
 
 
2608
2008-08-25  Chris Toshok  <toshok@ximian.com>
 
2609
 
 
2610
        * rect.h, rect.cpp: rename the w/h fields to width/height, since
 
2611
        every other instance of similar fields are named that.
 
2612
 
 
2613
        * value.cpp, border.cpp, window-gtk.cpp, control.cpp, runtime.cpp,
 
2614
        uielement.cpp, geometry.cpp, shape.cpp, frameworkelement.cpp,
 
2615
        brush.cpp: track rect change.
 
2616
 
 
2617
2008-08-25  Chris Toshok  <toshok@ximian.com>
 
2618
 
 
2619
        * border.h, border.cpp: implement ArrangeOverride, and fix up some
 
2620
        test failures in MeasureOverride.
 
2621
 
 
2622
        * frameworkelement.cpp (FrameworkElement::Arrange): it seems we
 
2623
        also set the desired size here (to the final size we get from
 
2624
        ArrangeOverride.)
 
2625
 
 
2626
2008-08-25  Michael Dominic K.  <mdk@mdk.am>
 
2627
 
 
2628
        * animation2.h: Advertise self (ObjectAnimationUsingKeyFrames) as providing
 
2629
        proper kinds of values (TYPE::DEPENDENCY_OBJECT).
 
2630
 
 
2631
2008-08-25  Michael Dominic K.  <mdk@mdk.am>
 
2632
 
 
2633
        * animation.cpp:
 
2634
        * animation2.h: Properly guard 2.0 stuff with if SL_2_0 .
 
2635
        Also adding validation methods.
 
2636
 
 
2637
2008-08-25  Michael Dominic K.  <mdk@mdk.am>
 
2638
 
 
2639
        * animation.cpp:
 
2640
        * animation2.h: Base work for ObjectAnimationUsingKeyFrames 
 
2641
        implementation.
 
2642
 
 
2643
2008-08-24  Geoff Norton <gnorton@novell.com>
 
2644
        
 
2645
        * media.h: Add a new overload to set the SourceProperty from managed land.
 
2646
        * media.cpp: Support async source changing downloader creation for ImageSource
 
2647
        * cbinding.(cpp|h): Regen
 
2648
 
 
2649
2008-08-23  Geoff Norton  <gnorton@novell.com>
 
2650
 
 
2651
        * mplayer.cpp: Only ref the audio if we have it as well.
 
2652
 
 
2653
2008-08-23  Geoff Norton  <gnorton@novell.com>
 
2654
 
 
2655
        * bitmapimage.h: Add to the build
 
2656
 
 
2657
2008-08-23  Geoff Norton  <gnorton@novell.com>
 
2658
 
 
2659
        * cbinding.cpp|h, dependencyproperty.g.cpp, type-generated.cpp,
 
2660
          type.h, value.h: Regenerated
 
2661
        * downloader.cpp|h: Return failure state for downloader->GetResponse
 
2662
        * runtime.h: Generate C bindings for IsMainThread.
 
2663
 
 
2664
2008-08-23  Larry Ewing  <lewing@novell.com>
 
2665
 
 
2666
        * animation.cpp, animation.h: make ControlPoint1 and ControlPoint2
 
2667
        properties.  Move the quadratic generation into
 
2668
        GenerateQuadratics.
 
2669
 
 
2670
        Regenrate and remove the managed wrappers.
 
2671
        
 
2672
2008-08-23  Larry Ewing  <lewing@novell.com>
 
2673
        
 
2674
        * xaml.cpp (value_from_str): fixed crossed commits with Auto
 
2675
        parsing.
 
2676
 
 
2677
        * collection.cpp (ContentWalker::Step): add some debug logic to
 
2678
        protect against an error case for now.
 
2679
 
 
2680
2008-08-23  Chris Toshok  <toshok@ximian.com>
 
2681
 
 
2682
        * Makefile.am (libmoon_la_SOURCES): add cornerradius.cpp
 
2683
 
 
2684
        * thickness.h, thickness.cpp: rename thickness_from_str to
 
2685
        Thickness::FromStr, and make it return a bool instead of a
 
2686
        pointer, as Point and Rect do.
 
2687
 
 
2688
        * cornerradius.h, cornerradius.cpp: add CornerRadius::FromStr.
 
2689
 
 
2690
        * xaml.cpp (value_from_str): use the CornerRadius parsing method,
 
2691
        and track the change to the Thickness one.
 
2692
 
 
2693
2008-08-23  Larry Ewing  <lewing@novell.com>
 
2694
 
 
2695
        * xaml.cpp (value_from_str): quick auto hack so we can test
 
2696
        controls more.
 
2697
 
 
2698
        * runtime.cpp (RenderNode::Render): fix typo in merge
 
2699
 
 
2700
2008-08-23  Larry Ewing  <lewing@novell.com>
 
2701
 
 
2702
        * uielement.cpp, uielement.h: move basic ftb logic here from
 
2703
        panel.  Start storing extents allong with bounds.
 
2704
 
 
2705
        * panel.cpp, panel.h: move most ftb logic to uielement.cpp.  Use
 
2706
        content walker.
 
2707
 
 
2708
        * stylus.cpp, stylus.h: rework the PostRender hack by chaining up
 
2709
        to uielement in front_to_back mode unconditionaly.
 
2710
 
 
2711
        * runtime.cpp, runtime.h: make RenderNode members private and move
 
2712
        the ftb override logic here and out of the PostRender call.
 
2713
        
 
2714
        * shape.cpp|h, frameworkelement.cpp|h, media.cpp, text.cpp: store
 
2715
        extents.
 
2716
 
 
2717
        * control.cpp, control.h: implement basic functionality.
 
2718
 
 
2719
2008-08-22  Chris Toshok  <toshok@ximian.com>
 
2720
 
 
2721
        * color.h, rect.h, point.h: remove the copy ctors.  we don't need
 
2722
        them, and they were causing crashes (!)
 
2723
 
 
2724
2008-08-22  Chris Toshok  <toshok@ximian.com>
 
2725
 
 
2726
        * frameworkelement.cpp (FrameworkElement::MeasureOverride): always
 
2727
        take the margins into account, even when we're childless.
 
2728
 
 
2729
        * panel.h, panel.cpp: add MeasureOverride which always returns
 
2730
        0,0.
 
2731
 
 
2732
        * border.h (class Border): add property accessors for everything.
 
2733
 
 
2734
        * border.cpp (Border::MeasureOverride): new implementation.
 
2735
 
 
2736
        * value.h.in, value.cpp: add CornerRadius support, and remove the
 
2737
        unnecessary casts (and in the Rect/Point cases, calls to the copy
 
2738
        ctor)
 
2739
 
 
2740
        * value.h, dependencyproperty.g.cpp: regenerate.
 
2741
        
 
2742
2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
 
2743
 
 
2744
        * textbox.h (class SelectionChangedEventArgs): Added
 
2745
        Text/SelectionChangedEventArgs.
 
2746
 
 
2747
2008-08-22  Chris Toshok  <toshok@ximian.com>
 
2748
 
 
2749
        * frameworkelement.cpp (FrameworkElement::Measure): instead of
 
2750
        always calling MeasureOverride here, we call the registered manage
 
2751
        callback if there is one.  So, we proxy into managed code here,
 
2752
        invoke the virtual method FWE.MeasureOverride, and if there's no
 
2753
        subclass override (or if it chains up for some reason), we end up
 
2754
        in MeasureOverride by virtue of the pinvoke in
 
2755
        FrameworkElement.cs.
 
2756
        (FrameworkElement::MeasureOverride): move all the logic for the
 
2757
        default MeasureOverride implementation here.  it's pretty
 
2758
        braindead - takes margins into account, measures our child, makes
 
2759
        sure our size is between Min/Max.  That's about it.
 
2760
        (FrameworkElement::Arrange): same drill as ::Measure.
 
2761
        (FrameworkElement::ArrangeOverride): still (incorrectly) return
 
2762
        finalSize.
 
2763
 
 
2764
2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
 
2765
 
 
2766
        * textbox.h: Made ArrangeOverride() virtual and added
 
2767
        SelectionChangedEvent.
 
2768
 
 
2769
2008-08-22  Chris Toshok  <toshok@ximian.com>
 
2770
 
 
2771
        * dependencyobject.cpp (DependencyObject::GetContent): guard
 
2772
        against the value being NULL.
 
2773
 
 
2774
2008-08-22  Larry Ewing  <lewing@novell.com>
 
2775
 
 
2776
        * collection.cpp (ContentWalker::ContentWalker): make
 
2777
        ContentWalker understand directions (Logical, ZForward, ZReverse).
 
2778
 
 
2779
2008-08-22  Larry Ewing  <lewing@novell.com>
 
2780
 
 
2781
        * runtime.cpp (Surface::PaintToDrawable): restore the x/y offsets
 
2782
        when drawing in the image backend.
 
2783
 
 
2784
2008-08-22  Chris Toshok  <toshok@ximian.com>
 
2785
 
 
2786
        * frameworkelement.h, frameworkelement.cpp: add in the layout foo
 
2787
        - provide implementations of Measure and Arrange that just call
 
2788
        MeasureOverride and ArrangeOverride.  These are virtual and meant
 
2789
        to be overridden either in unmanaged code (by simply overriding
 
2790
        them), or in managed code (RegisterManagedOverrides is called in
 
2791
        FWE.Initialize.)  Decorate the class with @CallInitialize so the
 
2792
        managed ctor calls it.
 
2793
 
 
2794
        * uielement.h, uielement.cpp: remove the PInvoke/CBinding for the
 
2795
        ctor, and add the layout methods.  Measure and Arrange are pure
 
2796
        virtual.
 
2797
 
 
2798
        * cbinding.h, cbinding.cpp, type-generated.cpp: regen.
 
2799
        
 
2800
2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
 
2801
 
 
2802
        * textbox.cpp (TextBox::Layout): Implemented rough layout.
 
2803
 
 
2804
        * layout.cpp (TextRun::TextRun): New ctor for use with TextBox.
 
2805
 
 
2806
2008-08-22  Jeffrey Stedfast  <fejj@novell.com>
 
2807
 
 
2808
        * textbox.cpp (TextBox::ArrangeOverride): Added.
 
2809
 
 
2810
        * frameworkelement.h (class FrameworkElement): Changed default
 
2811
        Width/Height values to NAN.
 
2812
 
 
2813
        * textbox.cpp: Initial implementation of TextBox, Layout and
 
2814
        Rendering logic still missing.
 
2815
 
 
2816
2008-08-22  Larry Ewing  <lewing@novell.com>
 
2817
 
 
2818
        * usercontrol.cpp (UserControl::OnPropertyChanged): make sure the
 
2819
        values are there.
 
2820
 
 
2821
2008-08-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
2822
 
 
2823
        * audio-alsa.cpp: Call Underflowed () when we run out of data.
 
2824
 
 
2825
2008-08-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
2826
 
 
2827
        * mplayer.h, mplayer.cpp: Remove the Eof state and add two separate
 
2828
          VideoEnded and AudioEnded states. Implement handling of VideoEnded
 
2829
          state, and call MediaElement::MediaEnded when both states have been
 
2830
          reached.
 
2831
        * media.h, media.cpp: Rename AudioFinished to MediaFinished and handle
 
2832
          all media finished (both video and audio) logic there.
 
2833
 
 
2834
2008-08-21  Larry Ewing  <lewing@novell.com>
 
2835
 
 
2836
        * uielement.cpp (UIElement::ComputeLocalTransform): clean up
 
2837
        accumulated transform logic.  Keep the parent TransformFor out of
 
2838
        the local_transform.
 
2839
 
 
2840
2008-08-21  Larry Ewing  <lewing@novell.com>
 
2841
 
 
2842
        * uielement.cpp (UIElement::Dispose): add logic removed from
 
2843
        panel.
 
2844
 
 
2845
        * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
 
2846
        ContentWalker.
 
2847
 
 
2848
2008-08-21  Chris Toshok  <toshok@ximian.com>
 
2849
 
 
2850
        [ fixes annotations not showing up in pageturn due to a NULL
 
2851
        background on the ink presenter ]
 
2852
 
 
2853
        * stylus.h, stylus.cpp (class InkPresenter): add an override of
 
2854
        EmptyBackground().  If we have a non-empty stroke bounding
 
2855
        rectangle, return false.  Otherwise fall back to
 
2856
        Panel::EmptyBackground.
 
2857
 
 
2858
        * panel.h, panel.cpp (class Panel): add EmptyBackground() virtual
 
2859
        method.  the panel implementation returns true if GetBackground()
 
2860
        returns NULL.  Use this virtual method instead of an explicit
 
2861
        GetBackground() call in Panel::FrontToBack.
 
2862
 
 
2863
2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
 
2864
 
 
2865
        * enums.cpp: Added ScrollBarVisibility enum
 
2866
 
 
2867
        * text.cpp (TextBlock::OnPropertyChanged): Er... we need to
 
2868
        invalidate if the TextWrappingProperty changes too.
 
2869
 
 
2870
2008-08-21  Chris Toshok  <toshok@ximian.com>
 
2871
 
 
2872
        * border.h, border.cpp, cornerradius.h: add new
 
2873
        types.
 
2874
 
 
2875
        * Makefile.am: add border/cornerradius to the file list.
 
2876
 
 
2877
        * type.h, value.h, cbinding.cpp, cbinding.h, type-generated.cpp,
 
2878
        dependencyproperty.g.cpp: regen.
 
2879
 
 
2880
2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
 
2881
 
 
2882
        * textbox.h (class TextBox): The TextBox namespace should be
 
2883
        System.Windows.Controls
 
2884
 
 
2885
        * stackpanel.h (class StackPanel): #include panel.h
 
2886
 
 
2887
2008-08-21  Jeffrey Stedfast  <fejj@novell.com>
 
2888
 
 
2889
        * textbox.h: Initial implementation of the TextBox class (just
 
2890
        stubs atm).
 
2891
 
 
2892
        * value.h.in (struct Value): Don't use int32_t or uint64_t,
 
2893
        etc. Be consistent and use the glib types.
 
2894
 
 
2895
        * layout.cpp (TextLayout::Layout): Fixed
 
2896
        LineStackingStrategy/LineHeight issues. If we are using
 
2897
        BlockLineHeight & the specified LineHeight is not Auto, then we
 
2898
        need to use 0.0 as the descender.
 
2899
 
 
2900
2008-08-21  Chris Toshok  <toshok@ximian.com>
 
2901
 
 
2902
        * animation.h: make KeyFrame::Get/SetKeyTime pure virtual, and add
 
2903
        accessors to all the subclasses.  They're autogenerated from the
 
2904
        respective class's DP's.
 
2905
 
 
2906
        * animation2.h: same.
 
2907
 
 
2908
        * animation.cpp: remove KeyFrame::Get/SetKeyTime implementations.
 
2909
 
 
2910
        * control.h (class Control): add some more GenerateAccessors.
 
2911
 
 
2912
        * control.cpp: and remove the manual implementations here.
 
2913
 
 
2914
        * dependencyproperty.g.cpp: regen.
 
2915
 
 
2916
2008-08-21  Larry Ewing  <lewing@novell.com>
 
2917
 
 
2918
        * animation.cpp (KeyFrameCollection::OnSubPropertyChanged): remove
 
2919
        debug spew.
 
2920
 
 
2921
        * xaml.cpp (value_from_str): unref the collections we create after
 
2922
        setting them.
 
2923
 
 
2924
2008-08-21  Jackson Harper  <jackson@ximian.com>
 
2925
 
 
2926
        * xaml.cpp: Can't rely on the type for getting a managed element's
 
2927
        name, we have to pull it from the element name provided to the
 
2928
        XamlElementInfo.
 
2929
 
 
2930
2008-08-21  Chris Toshok  <toshok@ximian.com>
 
2931
 
 
2932
        * dependencyobject.cpp (DependencyObject::HasProperty): pass
 
2933
        additional_types to IsSubclassOf.
 
2934
 
 
2935
        * type.h, type.cpp: add IsSubclassOf variants that take
 
2936
        additional_types.  Fixes lookup problems of non-custom DP's on
 
2937
        managed subclasses.
 
2938
 
 
2939
2008-08-21  Chris Toshok <toshok@ximian.com>
 
2940
 
 
2941
        * value.h.in (struct Value): make all single arg primitive value
 
2942
        typed ctors "explicit" so c++ won't do any magic implicit
 
2943
        conversion from value type to Value.
 
2944
 
 
2945
        * value.h: regen
 
2946
 
 
2947
        * runtime.cpp (Surface::ShowFullScreenMessage): need to create the
 
2948
        Value()'s explicitly.
 
2949
 
 
2950
        * collection.cpp (DoubleCollection::FromStr): same.
 
2951
 
 
2952
2008-08-20  Larry Ewing  <lewing@novell.com>
 
2953
 
 
2954
        * dependencyobject.cpp (create_temp_namescope): don't leak the
 
2955
        temporary namescope we create.  Also don't create it over and over
 
2956
        again.
 
2957
 
 
2958
2008-08-20  Larry Ewing  <lewing@novell.com>
 
2959
 
 
2960
        * dependencyobject.cpp|h: Add ContenAdded and ContentRemoved
 
2961
        virtual methods so that we can begin to simplify content rules.
 
2962
 
 
2963
        * dirty.cpp (Surface::PropagateDirtyFlagToChildren): use
 
2964
        GetContent to handle the children in a generic way.
 
2965
 
 
2966
        * uielement.cpp|h: start moving generic uielement content logic
 
2967
        here.  Implement OnLoaded and deal with content directly.
 
2968
        
 
2969
        * canvas.cpp|h: remove obsolete methods. Move most of zindex
 
2970
        property logic from panel to here.
 
2971
 
 
2972
        * panel.cpp|h: move ZIndex logic to canvas and move OnLoaded logic
 
2973
        to uielement.
 
2974
 
 
2975
        * control.cpp|h: generate accessors, start remove OnLoaded and
 
2976
        SetSurface.
 
2977
 
 
2978
        * dependencyproperty.g.cpp: regen.
 
2979
        
 
2980
2008-08-20  Chris Toshok  <toshok@ximian.com>
 
2981
 
 
2982
        * text.cpp, text.h: generate accessors for Glyph properties.
 
2983
 
 
2984
        * geometry.cpp, grid.cpp, media.cpp, panel.cpp, runtime.cpp,
 
2985
        shape.cpp, stylus.cpp, transform.cpp, trigger.cpp, uielement.cpp,
 
2986
        xaml.cpp: make another pass through files switching to C++
 
2987
        accessors from GetValue(FooClass::FooProperty)->AsFoo().
 
2988
 
 
2989
        * dependencyproperty.g.cpp: regen.
 
2990
 
 
2991
2008-08-20  Chris Toshok  <toshok@ximian.com>
 
2992
 
 
2993
        * animation.cpp, animation.h, brush.cpp, brush.h, canvas.cpp,
 
2994
          canvas.h, clock.cpp, clock.h, collection.cpp, collection.h,
 
2995
          frameworkelement.cpp, frameworkelement.h, geometry.cpp,
 
2996
          geometry.h, grid.h, media.cpp, media.h, namescope.cpp,
 
2997
          namescope.h, panel.cpp, panel.h, playlist.cpp, shape.cpp,
 
2998
          shape.h, stackpanel.h, style.h, stylus.cpp, stylus.h, text.cpp,
 
2999
          text.h, transform.cpp, transform.h, trigger.h, uielement.cpp,
 
3000
          uielement.h, xap.cpp, xap.h:
 
3001
 
 
3002
          mostly, decorate almost all DependencyProperties with
 
3003
          @GenerateAccessors, add in lots of new ones that weren't present
 
3004
          before (to the .h), and remove all those implementations from
 
3005
          the .cpp files.
 
3006
 
 
3007
          Also, don't use #if SL_2_0 in the headers.  we can't depend on
 
3008
          that being defined (especially once we install).  Any
 
3009
          2.0-specific behavior needs to be done in the .cpp files.  There
 
3010
          are still a few things that are wrong wrt
 
3011
          this (dependencyproperty.g.cpp needs to define the DP's
 
3012
          regardless of version, they can just be NULL in the 1.0 case for
 
3013
          2.0 properties, for instance.)
 
3014
 
 
3015
        * cbinding.cpp, cbinding.h, dependencyproperty.g.cpp: regen
 
3016
 
 
3017
2008-08-20  Chris Toshok  <toshok@ximian.com>
 
3018
 
 
3019
        * uielement.h (ClearLoaded): use &=, not |=, here.  fixes tests.
 
3020
 
 
3021
2008-08-20  Jeffrey Stedfast  <fejj@novell.com>
 
3022
 
 
3023
        * layout.cpp (TextLayout::Layout): Updated to take a
 
3024
        TextLayoutHints argument for providing hints like text alignment
 
3025
        and line stacking/height.
 
3026
 
 
3027
        * text.cpp (class TextBlock): Updated a bit for Silverlight
 
3028
        2.0. All of the properties added in 2.0 are now there, although
 
3029
        only 2 of them are respected at the moment (line stacking strategy
 
3030
        & line height).
 
3031
 
 
3032
        * enums.cpp|h: Added LineStackingStrategy and TextAlignment enums.
 
3033
 
 
3034
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3035
 
 
3036
        * audio.cpp: NULL out the player instance after deleting it.
 
3037
 
 
3038
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3039
 
 
3040
        * audio-pulse.cpp, audio-pulse.h: Close: Detect if Close has been
 
3041
          called and if so, do nothing.
 
3042
 
 
3043
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3044
 
 
3045
        * audio.cpp: We only support 1 or 2 channels for the moment.
 
3046
 
 
3047
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3048
 
 
3049
        * media.cpp, media.h: Fix buffering progress to take into account that
 
3050
          the first pts isn't necessarily 0 (happens for live media).
 
3051
 
 
3052
2008-08-20  Chris Toshok  <toshok@ximian.com>
 
3053
 
 
3054
        * runtime.cpp (Surface::HandleMouseEvent): make sure not to emit
 
3055
        Focus events on click in a 1.0 context.
 
3056
 
 
3057
2008-08-20  Jackson Harper  <jackson@ximian.com>
 
3058
 
 
3059
        * xaml.cpp|h: Setting properties requires the xaml namespace so it
 
3060
        can lookup managed types. TODO: It also needs the default
 
3061
        assembly, but I am thinking of moving that to the loader.
 
3062
 
 
3063
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3064
 
 
3065
        * mplayer.cpp: Properly ref/unref the AudioSource.
 
3066
 
 
3067
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3068
 
 
3069
        * media.h: Remove G_BEGIN/END_DECLS and two unnecessary #includes.
 
3070
 
 
3071
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3072
 
 
3073
        * media.cpp, media.h, runtime.cpp: Remove media_init, just make
 
3074
          runtime_init call Media::Initialize directly.
 
3075
 
 
3076
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3077
 
 
3078
        * media.h, media.cpp: Remove media_element_advance_frame from header,
 
3079
          no need to make it public.
 
3080
 
 
3081
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3082
 
 
3083
        * mplayer.cpp: AdvanceFrame: only return true if we actually processed
 
3084
          any frames. SeekCallback: clear the queue of audio frames as well.
 
3085
        * media.h, media.cpp: Removed SetPreviousPosition, no longer needed.
 
3086
          Don't change previous_position while we're seeking, and don't make
 
3087
          it go backwards.
 
3088
        * audio.cpp, audio.h: Added AudioSource::ClearFrames.
 
3089
 
 
3090
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3091
 
 
3092
        * runtime.cpp: Fix 1.0 build. No idea if the fix is correct.
 
3093
 
 
3094
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3095
 
 
3096
        * cbinding.cpp, cbinding.h, xap.h: Mark Xap as 2.0 only for the
 
3097
          generator.
 
3098
 
 
3099
2008-08-20  Stephane Delcroix  <sdelcroix@novell.com>
 
3100
 
 
3101
        * canvas.h, canvas.cpp:
 
3102
        * uielement.h, uielement.cpp: move the ZIndexProperty and Get/Set-ers
 
3103
        from uielement to Canvas. Drop the non-static Get/Set-Top/Left ()
 
3104
 
 
3105
        * panel.cpp, collection.cpp: related changes.
 
3106
 
 
3107
2008-08-20  Stephane Delcroix  <sdelcroix@novell.com>
 
3108
 
 
3109
        * uielement.h: change the generator instructions so the 
 
3110
        NameProperty is generated in FrameworkElement.
 
3111
 
 
3112
2008-08-19  Chris Toshok  <toshok@ximian.com>
 
3113
 
 
3114
        * dependencyobject.h,
 
3115
        dependencyobject.cpp (DependencyObject::GetContent): ripped this
 
3116
        out of a hack, should prove useful for the work coming up.
 
3117
 
 
3118
2008-08-19  Chris Toshok  <toshok@ximian.com>
 
3119
 
 
3120
        * runtime.cpp (Surface::FocusElement): fix the IsTabStop check.
 
3121
 
 
3122
2008-08-19  Chris Toshok  <toshok@ximian.com>
 
3123
 
 
3124
        * control.h, control.cpp (class Control): generate a binding for
 
3125
        Control::InitializeFromXaml and drop the 2 manual C bindings.
 
3126
 
 
3127
        * cbinding.h, cbinding.cpp: regen.
 
3128
 
 
3129
2008-08-19  Chris Toshok  <toshok@ximian.com>
 
3130
 
 
3131
        * xap.h, xap.cpp (class Xap): rename xap_unpack to Xap::Unpack.
 
3132
        autogenerate our binding for it.
 
3133
 
 
3134
        * cbinding.h, cbinding.cpp: regen.
 
3135
 
 
3136
2008-08-19  Chris Toshok  <toshok@ximian.com>
 
3137
 
 
3138
        * eventargs.h, eventargs.cpp (class Keyboard): make this more of a
 
3139
        real class, and remove the implementation of
 
3140
        keyboard_get_modifiers.  instead, provide a c++ method (both a
 
3141
        getter and setter) and annotate the Getter with
 
3142
        GenerateCBinding/GeneratePInvoke.
 
3143
 
 
3144
        * collection.h, collection.cpp: reorder the class decls (why do
 
3145
        people put private first?) and make CollectionIterator a real
 
3146
        class, with annotated methods.  Also, move
 
3147
        double_collection_from_str and point_collection_from_str to
 
3148
        DoubleCollection::FromStr and PointCollection::FromStr
 
3149
        respectively.  move double_garray_from_str out of here (to
 
3150
        utils.h/utils.cpp)
 
3151
 
 
3152
        * utils.h, utils.cpp: new (hopefully last) home for
 
3153
        double_garray_from_str.
 
3154
 
 
3155
        * point.h, point.cpp (struct Point): rename point_from_str to
 
3156
        Point::FromStr.  no reason to have a C method for that.
 
3157
 
 
3158
        * rect.h, rect.cpp (struct Rect): same thing with Rect::FromStr.
 
3159
 
 
3160
        * window-gtk.h (class MoonWindowGtk): mark the ctor and
 
3161
        GetWidget() with GenerateCBinding/GeneratePInvoke.
 
3162
 
 
3163
        * window-gtk.cpp: and remove their implementations.
 
3164
 
 
3165
        * xaml.cpp: convert over to all the new ::FromStr methods.
 
3166
 
 
3167
        * thickness.cpp: track new home of double_garray_from_str.
 
3168
 
 
3169
        * cbinding.h, cbinding.cpp: regen.
 
3170
 
 
3171
2008-08-19  Chris Toshok  <toshok@ximian.com>
 
3172
 
 
3173
        * uielement.h, uielement.cpp: make almost all data
 
3174
        private/protected.  Add a couple of methods to aid in
 
3175
        this (IsLoaded, ClearLoaded, TransformPoint).  Get rid of the
 
3176
        cbinding for transform_point - it's never used.  Also, re-order
 
3177
        the header to put public things first, then protected then
 
3178
        private.
 
3179
 
 
3180
        * runtime.cpp: use IsLoaded.
 
3181
 
 
3182
        * panel.cpp: use ClearLoaded.
 
3183
 
 
3184
        * text.cpp, shape.cpp, eventargs.cpp, frameworkelement.cpp: use
 
3185
        TransformPoint.
 
3186
 
 
3187
2008-08-19  Chris Toshok  <toshok@ximian.com>
 
3188
 
 
3189
        * runtime.cpp (Surface::HandleMouseEvent): don't compare the input
 
3190
        lists, as we will almost always have identical lists.  compare the
 
3191
        head of the new list to focused_element to determine if focus
 
3192
        changes.
 
3193
 
 
3194
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3195
 
 
3196
        * pipeline.cpp: Beautify error messages.
 
3197
 
 
3198
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3199
 
 
3200
        * media.cpp: test-inexistent-media(s) were failing due to ISP's
 
3201
          tendency to return search pages for failed dns lookups. Fixed tests
 
3202
          after testing with sane DNS settings and did the appropiate change
 
3203
          in code (raise correct error message/number).
 
3204
 
 
3205
2008-08-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3206
 
 
3207
        * runtime.h: Make RUNTIME_INIT values sequential.
 
3208
 
 
3209
2008-08-19  Chris Toshok  <toshok@ximian.com>
 
3210
 
 
3211
        * xaml.cpp (xaml_hydrate_from_str): make sure to set the surface
 
3212
        of the object before parsing so that objects don't switch from the
 
3213
        loader's surface to NULL as they're added to the hierarchy while
 
3214
        being parsed.
 
3215
 
 
3216
2008-08-19  Larry Ewing  <lewing@novell.com>
 
3217
 
 
3218
        * shape.cpp (Shape::InsideObject): check the extents first, then
 
3219
        reorder the stroke/fill tests to test for the most likely first.
 
3220
 
 
3221
        Helps speed up sliverlight.net/world a bit.
 
3222
 
 
3223
2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3224
 
 
3225
        * mplayer.h, pipeline.h: No need to surround GetTypeName with
 
3226
          OBJECT_TRACKING anymore.
 
3227
 
 
3228
2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3229
 
 
3230
        * audio.cpp, audio.h, audio-alsa.cpp, audio-alsa.h, audio-pulse.cpp,
 
3231
          audio-pulse.h: Added, our new audio abstraction/implementation.
 
3232
        * Makefile.am, src.mdp, type-generated.cpp: Updated.
 
3233
        * mplayer.cpp, mplayer.h: Moved audio code into its own file(s).
 
3234
        * runtime.cpp, runtime.h: Add runtime overrides for audio.
 
3235
 
 
3236
2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
 
3237
 
 
3238
        * xap.cpp (xap_unpack): Fixed compiler warning.
 
3239
 
 
3240
2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3241
 
 
3242
        * media.cpp: Include headers mplayer.h doesn't include anymore.
 
3243
          MediaElement::SetMedia: only set audio data on the MediaPlayer if
 
3244
          the media has audio. TImelineMarkerCollection::Add: don't call the
 
3245
          base class' Add, call base's Insert instead. Fixes a stack overflow
 
3246
          since base class' Add calls Insert, which TimelineMarkerCollection
 
3247
          overrides to call Add.
 
3248
 
 
3249
2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3250
 
 
3251
        * enums.cpp: Wrap 2.0-only code in SL_2_0.
 
3252
 
 
3253
2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
 
3254
 
 
3255
        * zip/unzip.c: Get rid of unused variable.
 
3256
 
 
3257
        * value.cpp (Value::ToString): Get rid of unused variable.
 
3258
 
 
3259
2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3260
 
 
3261
        * dependencyobject.h: EventObject::ref: print a stack trace before the
 
3262
          abort if we can, and fix typo in the abort message.
 
3263
 
 
3264
2008-08-19  Geoff Norton  <gnorton@novell.com>
 
3265
 
 
3266
        * xap.cpp: Ensure we can actually enter the directory we're creating.
 
3267
 
 
3268
2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
 
3269
 
 
3270
        * mplayer.cpp: Silence the compile warning.
 
3271
 
 
3272
        * color.cpp (color_from_str): Got rid of unused variable.
 
3273
 
 
3274
        * xaml.cpp (dependency_object_set_attributes): Don't need to use
 
3275
        strlen(str) == 0 to figure out if the string is empty, just check
 
3276
        the first char.
 
3277
        (wrap_type): Removed. Doesn't seem to be used any longer.
 
3278
        (get_type_for_property_name): Same.
 
3279
        (panel_add_child): Same.
 
3280
        (dependency_object_set_property): Made static.
 
3281
        (dependency_object_set_attributes): Same.
 
3282
        (dependency_object_hookup_event): Same.
 
3283
        (dependency_object_missed_property): Same.
 
3284
 
 
3285
        * dependencyproperty.cpp (resolve_property_path): Use proper
 
3286
        integer types and avoid calling strlen if all we care to know is
 
3287
        if the string is empty.
 
3288
 
 
3289
        * runtime.cpp (Surface::Paint): Get rid of an annoying debug
 
3290
        printf.
 
3291
        (Surface::HandleMouseEvent): Removed unused variable.
 
3292
 
 
3293
2008-08-19  Chris Toshok  <toshok@ximian.com>
 
3294
 
 
3295
        * trigger.cpp (EventTrigger::SetTarget): make the 2.0 case more
 
3296
        robust - handle Type.Event notation, making sure that the type is
 
3297
        valid for the target.
 
3298
 
 
3299
2008-08-19  Larry Ewing  <lewing@novell.com>
 
3300
 
 
3301
        * runtime.cpp|h: add override to use sofware fallbacks for
 
3302
        rendering.
 
3303
 
 
3304
2008-08-19  Chris Toshok  <toshok@ximian.com>
 
3305
 
 
3306
        * trigger.cpp (EventTrigger::SetTarget): do the AddHandler in both
 
3307
        1.0 and 2.0 cases.  big oops.
 
3308
 
 
3309
2008-08-19  Jeffrey Stedfast  <fejj@novell.com>
 
3310
 
 
3311
        * dependencyobject.cpp (DependencyObject::GetObjectType): Get rid
 
3312
        of a warning that is no longer valid.
 
3313
 
 
3314
2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3315
 
 
3316
        * downloader.h, downloader.cpp: Add a request field to
 
3317
          DownloaderResponse, and a response field to DownloaderRequest. When
 
3318
          a request is aborted, also abort the response. This fixes a crash
 
3319
          when we aborted the request before receiving a response, the
 
3320
          response had no idea the request had been aborted (since the
 
3321
          request didn't store the response after creating it, it couldn't
 
3322
          notify the response of the abort), and happily accessed deleted
 
3323
          objects.
 
3324
 
 
3325
2008-08-18  Chris Toshok  <toshok@ximian.com>
 
3326
 
 
3327
        * runtime.cpp (Surface::CreateArgsForEvent): new method, create
 
3328
        the right kind of args for a given event.  we should probably
 
3329
        autogenerate this.
 
3330
        (Surface::EmitEventOnList): use CreateArgsForEvent.  Only create
 
3331
        one instance of the event args that we use to bubble along the
 
3332
        element list.  If it's a RoutedEventArgs subclass, set the source
 
3333
        to be the first element in the list, and check the "Handled"
 
3334
        attribute after every emit to see if we should finish early (this
 
3335
        provides for 2.0 semantics).
 
3336
        (Surface::FocusElement): unfortunately the event generation is
 
3337
        async, so add a tick call if we need to.  if we already have a
 
3338
        tick call (meaning >= 1 focus change has happened already in this
 
3339
        tick), we drop the intervening change(s).  This is likely wrong.
 
3340
        (Surface::GenerateFocusChangeEvents): emit GotFocus/LostFocus on
 
3341
        the proper element lists.
 
3342
        (Surface::HandleUIKeyPress, Surface::HandleUIKeyRelease): if we're
 
3343
        silverlight2 (and we have a focused element), emit the event on
 
3344
        the list of elements from the focused element back up to the root.
 
3345
        Otherwise just emit it on the toplevel.
 
3346
 
 
3347
        * runtime.h (class Surface): add GetFocusedElement/FocusElement
 
3348
        methods, which are used to implement
 
3349
        FocusManager.GetFocusElement() and Control.Focus().
 
3350
 
 
3351
        * uielement.h, uielement.cpp (class UIElement): remove a bunch of
 
3352
        Emit$Event() methods that were never used.
 
3353
 
 
3354
        * trigger.cpp: in 2.0, you can put other events in RoutedEvent,
 
3355
        not just "Loaded".  there are parsing rules that we can't make use
 
3356
        of here, so more work will likely have to happen in the parser.
 
3357
 
 
3358
        * trigger.h (class EventTrigger): add registered_event_id.
 
3359
 
 
3360
        * cbinding.h, cbinding.cpp: regenerate.
 
3361
 
 
3362
2008-08-18  Geoff Norton  <gnorton@novell.com>
 
3363
        
 
3364
        * type-generated.cpp, cbinding.cpp|h: Rengerated
 
3365
        * dependencyobject.h: Bind DependencyObject .ctor
 
3366
 
 
3367
2008-08-18  Geoff Norton  <gnorton@novell.com>
 
3368
 
 
3369
        * deployment.h: Move CrossDomainAccess to
 
3370
        * enums.h|cpp: Register CrossDomainAccess so that AppMainfest
 
3371
        can specify values from the enum.
 
3372
 
 
3373
2008-08-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3374
 
 
3375
        * cbinding.cpp, cbinding.h, uielement.h: Mark
 
3376
          UIElement::GetTransformToUIElement as 2.0, fixes 1.0 build.
 
3377
 
 
3378
2008-08-18  Larry Ewing  <lewing@novell.com>
 
3379
 
 
3380
        * panel.cpp|h: remove SetSurface override, the
 
3381
        DependencyObjectCollection::SetSurface does the work already.
 
3382
 
 
3383
2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
 
3384
 
 
3385
        * uielement.cpp: Autogenerate more of the bindings, make
 
3386
        desired_size private, etc.
 
3387
 
 
3388
2008-08-18  Geoff Norton  <gnorton@novell.com>
 
3389
        
 
3390
        * eventargs.cpp|h: Change the return type to int, fix the build.
 
3391
 
 
3392
2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
 
3393
 
 
3394
        * uielement.cpp (uielement_get_surface): Removed.
 
3395
        (uielement_invalidate): Removed.
 
3396
        (uielement_set_transform_origin): Removed.
 
3397
 
 
3398
        * transform.cpp: Removed manual c-bindings.
 
3399
 
 
3400
        * text.cpp: Removed manual c-bindings for property accessors.
 
3401
 
 
3402
2008-08-18  Geoff Norton  <gnorton@novell.com>
 
3403
 
 
3404
        * type-generated.cpp, cbinding.cpp|h: Rengerated
 
3405
        * uielement.cpp|h, type.h, value.h: Keyboard->Key
 
3406
        * runtime.cpp|h: Move key translation to eventargs, and pass the
 
3407
        raw GdkEventKey to KeyEventArgs.
 
3408
        * eventargs.cpp|h: Implement KeyEventArgs bound to the managed stuff
 
3409
        and remove the old KeyboardEventArgs.
 
3410
 
 
3411
2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
 
3412
 
 
3413
        * stylus.h: Moved required manual c-bindings into G_*_DECLS block.
 
3414
 
 
3415
        * size.cpp: Removed manual ctor c-binding.
 
3416
 
 
3417
        * shape.cpp: Removed manual c-bindings for property accessors.
 
3418
 
 
3419
2008-08-18  Geoff Norton  <gnorton@novell.com>
 
3420
 
 
3421
        * media.cpp|h, cbinding.cpp|h: Implement support for generating Image's
 
3422
        from managed Streams.
 
3423
 
 
3424
2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
 
3425
 
 
3426
        * runtime.cpp: Removed manual c-bindings for Surface and renamed
 
3427
        Get/SetTrans() to Get/SetTransparent().
 
3428
 
 
3429
        * panel.cpp: Removed manual c-bindings for property accessors.
 
3430
 
 
3431
        * media.cpp: Removed manual c-bindings for property accessors and
 
3432
        other methods that are now autogenerated.
 
3433
 
 
3434
2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3435
 
 
3436
        * dependencyobject.h: Make the generator happy.
 
3437
 
 
3438
2008-08-18  Jeffrey Stedfast  <fejj@novell.com>
 
3439
 
 
3440
        * geometry.cpp: Removed manual c-bindings for property accessors.
 
3441
 
 
3442
2008-08-18  Michael Dominic K.  <mdk@mdk.am>
 
3443
 
 
3444
        * runtime.h: Caller is "in main thread" also when the main_thread
 
3445
        pointer equals NULL (no surface has been created).
 
3446
 
 
3447
2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3448
 
 
3449
        * debug.cpp: Fix a leak found by valgrind.
 
3450
 
 
3451
2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3452
 
 
3453
        * dependencyobject.h: Make GetTypeName virtual if we're tracking
 
3454
          objects, enables better output of lost objects.
 
3455
 
 
3456
2008-08-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3457
 
 
3458
        * dependencyobject.cpp: DrainUnrefs: since unreffing objects may cause
 
3459
          more objects to be enqueued for unref, loop until there are none
 
3460
          left.
 
3461
 
 
3462
2008-08-17  Geoff Norton  <gnorton@novell.com>
 
3463
 
 
3464
        * downloader.cpp|h: Add a method for DownloaderResponse to 
 
3465
        support a Header Visitor.
 
3466
 
 
3467
2008-08-17  Geoff Norton  <gnorton@novell.com>
 
3468
 
 
3469
        * uielement.h: Expose desired_size as public to fix the build.
 
3470
 
 
3471
2008-08-17  Chris Toshok  <toshok@ximian.com>
 
3472
 
 
3473
        * uielement.h, frameworkelement.h: can't use SL_2_0 in headers.
 
3474
 
 
3475
2008-08-17  Chris Toshok  <toshok@ximian.com>
 
3476
 
 
3477
        * Makefile.am (libmoon_include_HEADERS): INCLUDE_MONO_RUNTIME ->
 
3478
        INCLUDE_MANAGED_CODE.
 
3479
 
 
3480
2008-08-15  Larry Ewing  <lewing@novell.com>
 
3481
 
 
3482
        * clock.cpp|h: add methods Jeff removed back. 
 
3483
 
 
3484
2008-08-15  Chris Toshok  <toshok@ximian.com>
 
3485
 
 
3486
        * stylus.h (class DrawingAttributes): all managed DP fields are
 
3487
        private.
 
3488
        (class Stroke): DrawingAttributesProperty and StylusPointsProperty
 
3489
        are private in managed-land.
 
3490
 
 
3491
2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
 
3492
 
 
3493
        * grid.h: Autogenerate bindings for GetActualWidth/Height
 
3494
 
 
3495
        * grid.cpp: Removed manual c-bindings.
 
3496
 
 
3497
        * frameworkelement.cpp: Removed manual c-bindings.
 
3498
 
 
3499
2008-08-15  Chris Toshok  <toshok@ximian.com>
 
3500
 
 
3501
        * eventargs.h (enum CollectionChangedAction): change Reset to
 
3502
        Cleared, and add Clearing to handle the old functionality in
 
3503
        DependencyObject::OnCollectionClear.
 
3504
 
 
3505
        * dependencyobject.h (class DependencyObject): remove
 
3506
        OnCollectionClear.  we handle that case in OnCollectionChanged
 
3507
        now.
 
3508
 
 
3509
        * panel.h, panel.cpp (Panel::OnCollectionChanged): move
 
3510
        OnCollectionClear code to here.
 
3511
 
 
3512
        * uielement.cpp (UIElement::OnCollectionChanged): add
 
3513
        ActionClearing code here.
 
3514
 
 
3515
        * stylus.cpp, text.cpp: track CollectionChangedAction enum change.
 
3516
 
 
3517
        * collection.cpp (Collection::Clear): use
 
3518
        EmitChanged (CollectionChangedActionClearing,...) instead of
 
3519
        OnCollectionClear.
 
3520
 
 
3521
2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
 
3522
 
 
3523
        * eventargs.cpp|h: Same.
 
3524
 
 
3525
        * control.cpp: Same.
 
3526
 
 
3527
        * contentcontrol.cpp: Removed manual property accessor c-bindings.
 
3528
 
 
3529
        * clock.cpp: Removed manual c-bindings for things that can be
 
3530
        autogenerated.
 
3531
 
 
3532
        * brush.cpp|h: Removed manual c-bindings for property accessors.
 
3533
 
 
3534
        * animation.cpp|h: Added some convenience c++ property accessors and
 
3535
        got rid of all of the manual c-bindings. Fixed them to be
 
3536
        auto-generated.
 
3537
 
 
3538
        * stylus.cpp: Added c++ property accessors and updated the code to
 
3539
        use them (cleans up some code) and also got rid of the c binding
 
3540
        accessors. We'll autogenerate these.
 
3541
 
 
3542
2008-08-15  Sebastien Pouliot  <sebastien@ximian.com>
 
3543
 
 
3544
        * layout.cpp: Don't add kerning before a dot (.). This match SL
 
3545
        behavior (i.e. it's not a "sliding dot" algorithm like I expected)
 
3546
        and the effect is visible in a few DRT (like #184).
 
3547
 
 
3548
2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
 
3549
 
 
3550
        * uielement.cpp (UIElement::GetTriggers): Added for convenience.
 
3551
        (UIElement::Dispose): Use the new convenience method.
 
3552
 
 
3553
2008-08-15  Chris Toshok  <toshok@ximian.com>
 
3554
 
 
3555
        * panel.cpp (Panel::ChildRemoved): queue a ZIndex re-sort here.
 
3556
        (Panel::ChildAdded): call item->OnLoaded if we're loaded, and
 
3557
        queue a re-sort.
 
3558
        (Panel::OnCollectionChanged): simplify this since the code moved
 
3559
        to ChildAdded/ChildRemoved.
 
3560
 
 
3561
        * panel.h, panel.cpp (Panel::Dispose): loop over our children
 
3562
        setting their visual parent to NULL.
 
3563
 
 
3564
        * uielement.h, uielement.cpp (UIElement::Dispose): loop over the
 
3565
        trigger collection removing ourselves as the target.
 
3566
        (UIElement::OnPropertyChanged): handle TriggersProperty here -
 
3567
        remove target from the old triggers and set target on the new
 
3568
        ones.
 
3569
        (UIElement::OnCollectionChanged): new method, handle
 
3570
        TriggersCollection.
 
3571
 
 
3572
        * dependencyobject.cpp: be consistent in our treatment of
 
3573
        LogicalParent - clear it in every place we're removing a DO.  Warn
 
3574
        if we're setting it again on the same DO.
 
3575
 
 
3576
        * collection.h, collection.cpp: remove triggercollection's
 
3577
        added/removedfromcollection, adn remove uielementcollection's
 
3578
        removedfromcollection.  Also, stop using a separate closure.  The
 
3579
        collection's LogicalParent always has the same value - use that.
 
3580
 
 
3581
2008-08-15  Jeffrey Stedfast  <fejj@novell.com>
 
3582
 
 
3583
        * clock.cpp (TimeManager::SourceTick): Instead of always using up
 
3584
        to 1/30 of a second for flushing the async queue, use only the
 
3585
        time remaining in our render pass to flush it.
 
3586
 
 
3587
2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3588
 
 
3589
        * animation.h: KeyTimeProperty isn't nullable in managed code.
 
3590
 
 
3591
2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3592
 
 
3593
        * cbinding.cpp, cbinding.h: Regenerated.
 
3594
        * media.cpp, media.h: Add a MediaElement::SetStreamSource, and hack it
 
3595
          to at least open the source.
 
3596
        * pipeline.cpp, pipeline.h: Added ManagedStreamSource.
 
3597
 
 
3598
2008-08-15  Jackson Harper  <jackson@ximian.com>
 
3599
 
 
3600
        * xaml.cpp: Need to advance after F.
 
3601
 
 
3602
2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3603
 
 
3604
        * animation.h, dependencyproperty.g.cpp: KeyTime is nullable. Fixes MS
 
3605
          DRT#114.
 
3606
 
 
3607
2008-08-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3608
 
 
3609
        * dependencyproperty.g.cpp: Regenerated.
 
3610
 
 
3611
2008-08-14  Larry Ewing  <lewing@novell.com>
 
3612
 
 
3613
        * animation.h (class KeyFrame): remove the KeyTime DP and make
 
3614
        the ctor private this is an abstract class.
 
3615
 
 
3616
        * animation.cpp: retrieve the property via name.
 
3617
 
 
3618
2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
 
3619
 
 
3620
        * clock.cpp (TimeManager::SourceTick): Call InvokeTickCall() as
 
3621
        many times as we can in 1/30th of a second. Major visual
 
3622
        performance improvement for bug #395160.
 
3623
 
 
3624
2008-08-14  Jackson Harper  <jackson@ximian.com>
 
3625
 
 
3626
        * xaml.cpp|h: We need to pass a pointer to the top level control
 
3627
        when hooking up a managed event, the managed code uses this to
 
3628
        find the method to invoke.
 
3629
 
 
3630
2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
 
3631
 
 
3632
        * uielement.cpp: Implemented property accessors for ZIndex
 
3633
 
 
3634
        * collection.cpp (UIElementZIndexComparer): Use
 
3635
        UIElement::GetZIndex(). If, in the future, we make GetZIndex()
 
3636
        return a cached value, now we'll automagically benefit from it.
 
3637
 
 
3638
2008-08-14  Jeffrey Stedfast  <fejj@novell.com>
 
3639
 
 
3640
        ZIndex sorting optimization for bug #395160
 
3641
 
 
3642
        * panel.cpp (Panel::UpdateTotalHitTestVisibility): Don't iterate
 
3643
        over the z_sorted list, it might not yet be
 
3644
        populated (e.g. ResortZIndex() may not have been called yet).
 
3645
        (Panel::OnPropertyChanged): Set a DirtyChildrenZIndices bit if the
 
3646
        new collection is non-null.
 
3647
        (Panel::OnCollectionChanged): Queue ZIndex resorts as appropriate.
 
3648
        (Panel::OnLoaded): Queue a resort here too.
 
3649
 
 
3650
        * collection.cpp (UIElementCollection::AddedToCollection):
 
3651
        Removed. We don't want to do the zindex sortign here anymore. Too
 
3652
        slow. Instead, we'll have Panel::OnCollectionChanged() set the
 
3653
        DirtyChildrenZIndices dirty flag so that the renderer forces a
 
3654
        resort.
 
3655
        (UIElementCollection::Insert): Removed, no need to override
 
3656
        anymore since we won't be resorting by zindex here anymore.
 
3657
        (UIElementCollection::ResortByZIndex): Now that z_sorted isn't
 
3658
        maintained as items are added/inserted, we need to always init the
 
3659
        z_sorted array here even if we only have 1 item.
 
3660
 
 
3661
2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3662
 
 
3663
        * xaml.cpp, pipeline.cpp: Don't use base_unref, call unref on the
 
3664
          instance.
 
3665
        * playlist.cpp: Use DependencyObject::SetName instead of the C method.
 
3666
        * dependencyobject.h, dependencyobject.cpp: Generate all c methods, as
 
3667
          well as Name accessors.
 
3668
        * cbinding.h, dependencyproperty.g.cpp, cbinding.cpp: Regenerated.
 
3669
        * runtime.cpp: Updated according to new method names.
 
3670
 
 
3671
2008-08-14  Jackson Harper  <jackson@ximian.com>
 
3672
 
 
3673
        * xaml.cpp: We now create property instances from the property's
 
3674
        type info not the property's parent type. This will allow us to
 
3675
        have a managed attached property on a native object.
 
3676
 
 
3677
2008-08-14  Chris Toshok  <toshok@ximian.com>
 
3678
 
 
3679
        * Makefile.am (libmoon_la_SOURCES): add thickness.cpp
 
3680
 
 
3681
        * thickness.h, thickness.cpp: add thickness_from_str.
 
3682
 
 
3683
        * xaml.cpp: add thickness parsing.
 
3684
 
 
3685
2008-08-14  Jackson Harper  <jackson@ximian.com>
 
3686
 
 
3687
        * xaml.cpp: Need to lookup property element name's in their
 
3688
        namespace so that managed attached properties can be set.
 
3689
 
 
3690
2008-08-14  Jackson Harper  <jackson@ximian.com>
 
3691
 
 
3692
        * xaml.cpp: If there is a dot in the element name we can assume
 
3693
        it's a property (or at least not an element).  This should prevent
 
3694
        some extra calls into managed code to try to create types from
 
3695
        property names.
 
3696
 
 
3697
2008-08-13  Geoff Norton  <gnorton@novell.com>
 
3698
 
 
3699
        * runtime.cpp|h, clock.cpp|h: Move the g_idle_idd and g_timeout
 
3700
        calls into the time manager.
 
3701
 
 
3702
2008-08-13  Geoff Norton  <gnorton@novell.com>
 
3703
 
 
3704
        * runtime.cpp|h: Add a binding for g_idle_add.
 
3705
 
 
3706
2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3707
 
 
3708
        * cbinding.cpp, cbinding.h, eventargs.cpp, eventargs.h: Generate two
 
3709
          MouseEventArgs methods.
 
3710
 
 
3711
2008-08-14  Jackson Harper  <jackson@ximian.com>
 
3712
 
 
3713
        * type-generated.cpp: Value types.
 
3714
 
 
3715
2008-08-13  Jackson Harper  <jackson@ximian.com>
 
3716
 
 
3717
        * xaml.cpp: Make sure we set content properties.
 
3718
 
 
3719
2008-08-13  Jackson Harper  <jackson@ximian.com>
 
3720
 
 
3721
        * xaml.cpp: Add support for parsing value types.
 
3722
 
 
3723
2008-08-13  Chris Toshok  <toshok@ximian.com>
 
3724
 
 
3725
        * panel.cpp (Panel::OnCollectionChanged): we only need to call
 
3726
        OnLoaded on the new child.
 
3727
 
 
3728
2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3729
 
 
3730
        * stylus.h: StylusInfo doesn't have a managed equivalent.
 
3731
 
 
3732
2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3733
 
 
3734
        * dependencyproperty.h: Generate CBinding and PInvoke for IsAttached.
 
3735
        * cbinding.cpp, cbinding.h: Regenerated.
 
3736
 
 
3737
2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3738
 
 
3739
        * type.cpp: Remove spew.
 
3740
        * dependencyobject.cpp: GetValue*WithError: Fix error messages to say
 
3741
          we're trying to get values, not set them.
 
3742
 
 
3743
2008-08-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3744
 
 
3745
        * dependencyproperty.g.cpp: Regenerated.
 
3746
        * geometry.h: Added IsFilled property.
 
3747
 
 
3748
2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3749
 
 
3750
        * brush.h: Set correct managed DP access and property types.
 
3751
 
 
3752
2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
 
3753
 
 
3754
        * *.h: Added GeneratePInvoke attribute to each ctor
 
3755
 
 
3756
2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
 
3757
 
 
3758
        * text.cpp: s/Inlines/InlineCollection/g
 
3759
 
 
3760
        * xaml.cpp: s/Inlines/InlineCollection/g
 
3761
 
 
3762
        * collection.h (class InlineCollection): Renamed from Inlines.
 
3763
 
 
3764
        * trigger.h (class TriggerAction): Generate C Binding for ::Fire()
 
3765
        and also the ctor. Needed to prevent a crash in test-props.html
 
3766
 
 
3767
2008-08-13  Geoff Norton  <gnorton@novell.com>
 
3768
 
 
3769
        * runtime.cpp|h: Reuse the old html_timer infrastructure for the
 
3770
        intial DispatcherTimer implementation.
 
3771
 
 
3772
2008-08-13  Jeffrey Stedfast  <fejj@novell.com>
 
3773
 
 
3774
        * media.h (class MediaElement): Make MarkersProperty internal for
 
3775
        managed-side.
 
3776
 
 
3777
        * grid.h (class Grid): Make Column/RowDefinitionsProperties
 
3778
        internal for managed-side.
 
3779
 
 
3780
        * text.h (class TextBlock): Make InlinesProperty internal for
 
3781
        managed-side.
 
3782
 
 
3783
        * panel.h (class Panel): Update ChildrenProperty managed property
 
3784
        access.
 
3785
 
 
3786
        Also added newlines to the end of some files to silence compile
 
3787
        warnings.
 
3788
 
 
3789
2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3790
 
 
3791
        * dependencyproperty.g.cpp, type.h, type-generated.cpp, value.h,
 
3792
          cbinding.cpp, cbinding.h: Regenerated.
 
3793
        * geometry.h: Annotation fix.
 
3794
        * Makefile.am, src.mdp: Added tilesource.h
 
3795
        * tilesource.h: Added.
 
3796
 
 
3797
2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3798
 
 
3799
        * src.mdp, Makefile.am: Added animation2.h
 
3800
        * type.h, type-generated.cpp, value.h, cbinding.cpp, cbinding.h,
 
3801
          dependencyproperty.g.cpp: Regenerated.
 
3802
        * animation.h: Added missing 2.0 DPs and more annotations.
 
3803
        * animation2.h: Added, contains 2.0 animation classes.
 
3804
        * clock.h: There are no managed equivalent of TimelineGroup and
 
3805
          ParallelTimeline, remove their Namespace annotation.
 
3806
 
 
3807
2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3808
 
 
3809
        * shape.h: Fix warning.
 
3810
 
 
3811
2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3812
 
 
3813
        * shape.h: The managed Shape class must be constructable, so make all
 
3814
          pure virtual methods from the native Shape class just virtual.
 
3815
        * cbinding.cpp, cbinding.h, type-generated.cpp: Regenerated.
 
3816
 
 
3817
2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3818
 
 
3819
        * animation.h, brush.h, cbinding.cpp, cbinding.h, clock.h,
 
3820
          dependencyproperty.g.cpp, frameworkelement.h, geometry.h, panel.h,
 
3821
          text.h, transform.h, type-generated.cpp, usercontrol.h: Added more
 
3822
          annotations to make gui-compare happier.
 
3823
 
 
3824
2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3825
 
 
3826
        * control.h, dependencyobject.h, deployment.h, frameworkelement.h,
 
3827
          style.h, template.h, trigger.h, uielement.h: Gui-compare annotation
 
3828
          tweaking.
 
3829
 
 
3830
2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3831
 
 
3832
        * stackpanel.h, src.mdp, Makefile.am, cbinding.cpp, cbinding.h,
 
3833
          dependencyproperty.g.cpp, enums.cpp, enums.h, type.h,
 
3834
          type-generated.cpp, value.h: Added a native StackPanel class and
 
3835
          generate the managed StackPanel.
 
3836
 
 
3837
2008-08-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3838
 
 
3839
        * brush.h, contentcontrol.h, deployment.h, downloader.h, media.h,
 
3840
          namescope.h, stylus.h, transform.h: Tweak some annotations.
 
3841
 
 
3842
2008-08-12  Chris Toshok  <toshok@ximian.com>
 
3843
 
 
3844
        * style.h (class Style): make the "Setters DP" field private.
 
3845
 
 
3846
        * template.h (class ControlTemplate): add TargetType DP
 
3847
 
 
3848
        * dependencyproperty.g.cpp: regen.
 
3849
 
 
3850
2008-08-12  Chris Toshok  <toshok@ximian.com>
 
3851
 
 
3852
        * style.h (class Setter): hack for the DependencyProperty valued
 
3853
        property.  we need to parse a string DP name in a context where we
 
3854
        don't know the type to apply to it, so we need to have a string
 
3855
        backed property.
 
3856
 
 
3857
        * dependencyproperty.g.cpp: regen.
 
3858
 
 
3859
2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3860
 
 
3861
        * collection.h: Annotate Collection.
 
3862
 
 
3863
2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3864
 
 
3865
        * animation.h, clock.h, collection.h, error.h, eventargs.h, media.h,
 
3866
          size.h, style.h, template.h, trigger.h: Add @Namespace annotations.
 
3867
 
 
3868
2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3869
 
 
3870
        * src.mdp: Updated.
 
3871
 
 
3872
2008-08-12  Chris Toshok  <toshok@ximian.com>
 
3873
 
 
3874
        * collection.cpp (Collection::Clear): make a temporary copy of the
 
3875
        array so we can zero out the ptrarray before calling
 
3876
        RemovedFromCollection.
 
3877
 
 
3878
2008-08-12  Jackson Harper  <jackson@ximian.com>
 
3879
 
 
3880
        * xaml.h:
 
3881
        * xaml.cpp: Hydrate now passes in the default assembly name and
 
3882
        path (we can probably do away with path's I think that's just a
 
3883
        holdover from 1.1).  If no assembly name is specified in the
 
3884
        custom xmlns, the default's are used.
 
3885
 
 
3886
2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3887
 
 
3888
        * trigger.h, control.h, deployment.h, text.h, dependencyproperty.g.cpp,
 
3889
          style.h, uielement.h, grid.h, media.h: Tweaked annotations to
 
3890
          support managed DP accessor generation.
 
3891
 
 
3892
2008-08-12  Jeffrey Stedfast  <fejj@novell.com>
 
3893
 
 
3894
        * collection.cpp (Collection::SetCount): Convenience function.
 
3895
        (Collection::Clear): Use SetCount().
 
3896
        (Collection::Insert): Same.
 
3897
        (Collection::RemoveAt): Same.
 
3898
 
 
3899
        * media.cpp (TimelineMarkerCollection::Add): Chain up to direct
 
3900
        parent class rather than base class - while the
 
3901
        DependencyObjectCollection might not currently override Add/Insert
 
3902
        methods, if at some later point overrides are added, then we need
 
3903
        to do no work here.
 
3904
 
 
3905
        * collection.cpp (DependencyObjectCollection::SetValueAt):
 
3906
        Removed (not used anywhere).
 
3907
        (Collection::SetValueAtWithError): This needs to call
 
3908
        SetValueAt(), not GetValueAt().
 
3909
        (Collection::SetValueAt): Delete the removed Value after emitting
 
3910
        the event so we don't leak it.
 
3911
 
 
3912
2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3913
 
 
3914
        * animation.h, brush.h, clock.h, control.h, dependencyobject.h,
 
3915
          deployment.h, downloader.h, frameworkelement.h, media.h, text.h,
 
3916
          trigger.h, uielement.h: Use string instead of char* as
 
3917
          @PropertyType.
 
3918
 
 
3919
2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3920
 
 
3921
        * animation.h, brush.h, canvas.h, clock.h, collection.h,
 
3922
          contentcontrol.h, control.h, dependencyobject.h, deployment.h,
 
3923
          downloader.h, frameworkelement.h, geometry.h, grid.h, media.h,
 
3924
          namescope.h, panel.h, shape.h, style.h, stylus.h, text.h,
 
3925
          transform.h, trigger.h, uielement.h, usercontrol.h: Added
 
3926
          @Namespace annotations, and changed @PropertyType which were
 
3927
          declared as gint32 (and are enums) to use the actual enum type.
 
3928
        * dependencyproperty.g.cpp: Updated.
 
3929
 
 
3930
2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3931
 
 
3932
        * src.mdp: Updated.
 
3933
 
 
3934
2008-08-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
3935
 
 
3936
        * dependencyproperty.h, type.h, type-generated.cpp, value.h: Added
 
3937
          DependencyProperty to the Kind enum.
 
3938
 
 
3939
2008-08-11  Chris Toshok  <toshok@ximian.com>
 
3940
 
 
3941
        * deployment.h (class Application): add ResourceProperty.
 
3942
 
 
3943
        * style.h: add ValueProperty.
 
3944
 
 
3945
        * cbinding.h, cbinding.cpp: hm, looks like I forgot to regen these
 
3946
        after adding the Version=2.0 stuff to the collection api.
 
3947
 
 
3948
        * dependencyproperty.g.cpp: regen.
 
3949
 
 
3950
2008-08-11  Chris Toshok  <toshok@ximian.com>
 
3951
 
 
3952
        * error.h, error.cpp: add an enum to MoonError that lets us
 
3953
        specify which exception to raise.
 
3954
        
 
3955
        * collection.h, collection.cpp: a few changes:
 
3956
 
 
3957
        1. make most methods take Value* now instead of Value, to ease the
 
3958
        autogenerated bindings.  Leave in Add/Remove taking (Value v) so
 
3959
        we can let c++ do some implicit conversion lifting for us.  Leave
 
3960
        the (Value) variants as non-virtual, and make the Value* ones
 
3961
        virtual.
 
3962
 
 
3963
        2. Make ::Add call ::Insert, instead of duplicating all the code.
 
3964
 
 
3965
        3. Move all calls of AddedToCollection and RemovedFromCollection
 
3966
        to *after* the work has been done (they're past-tense, so do what
 
3967
        their name implies.)  This means subclasses can assume the item is
 
3968
        already in the array (or removed from it) when those methods are
 
3969
        called.  The one holdout to this utopian ideal is Clear().  we
 
3970
        need to fix that.
 
3971
 
 
3972
        4. Switch from overriding GetValue to handle CountProperty (and
 
3973
        leaking a Value* every time we get it) to setting the
 
3974
        CountProperty whenever we need to (in Insert/RemoveAt).
 
3975
 
 
3976
        5. Add special GetValueAtWithError, SetValueAtWithError, and
 
3977
        RemoveAtWithError methods, that allow us to effectively raise
 
3978
        exceptions from the unmanaged code.  Use the new
 
3979
        MoonError::ErrorKind enum to specify which exception.
 
3980
 
 
3981
        6. remove a bunch of C api, which is now autogenerated.
 
3982
        
 
3983
        * dependencyproperty.g.cpp (dependency_property_g_init): regen to
 
3984
        pick up Collection::CountProperty's default value.
 
3985
 
 
3986
        * cbinding.h, cbinding.cpp: autogen'ed collection api.
 
3987
 
 
3988
        * stylus.h, media.h, media.cpp: track collection changes.
 
3989
 
 
3990
        * dependencyobject.cpp: track MoonError enum change.
 
3991
 
 
3992
2008-08-11  Chris Toshok  <toshok@ximian.com>
 
3993
 
 
3994
        * dependencyproperty.g.cpp: regen.
 
3995
 
 
3996
        * control.h (class Control): add StyleProperty.
 
3997
 
 
3998
2008-08-11  Sebastien Pouliot  <sebastien@ximian.com>
 
3999
 
 
4000
        * layout.cpp: Compute line's height with more precision. This 
 
4001
        removes the cumulative difference (over multiple lines) with
 
4002
        Silverlight implementation. Fix DRT#209 (enough to PASS) and 
 
4003
        improve several other ones (already passing but imperfect).
 
4004
 
 
4005
2008-08-11  Chris Toshok  <toshok@ximian.com>
 
4006
 
 
4007
        * style.h: comment out 2 problematic DP's for now.
 
4008
 
 
4009
        * dependencyproperty.g.cpp: regen
 
4010
 
 
4011
2008-08-11  Chris Toshok  <toshok@ximian.com>
 
4012
 
 
4013
        * style.h, style.cpp: add Style, SetterBase, Setter, and
 
4014
        SetterBaseCollection unmanaged types.
 
4015
 
 
4016
        * Makefile.am: add them to the 2.0 build.
 
4017
 
 
4018
        * type.h, type-generated.cpp, value.h, cbinding.h, cbinding.cpp,
 
4019
        dependencyproperty.g.cpp: regenerate from style.h/style.cpp.
 
4020
        
 
4021
2008-08-11  Jeffrey Stedfast  <fejj@novell.com>
 
4022
 
 
4023
        * shape.cpp (Polyline::OnCollectionChanged): Invalidate the path
 
4024
        cache.
 
4025
        (Polygon::OnCollectionChanged): Same.
 
4026
 
 
4027
        * text.cpp (TextBlock::OnPropertyChanged): Set dirty to true when
 
4028
        the TextDecorationsProperty changes too. Fixes the "underline
 
4029
        hyperlinks" portion of bug #412986.
 
4030
 
 
4031
2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4032
 
 
4033
        * xaml.cpp: Remove debug spew.
 
4034
 
 
4035
2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4036
 
 
4037
        * array.cpp, array.h: Removed, no longer needed.
 
4038
        * collection.cpp, collection.h: Moved double_garray_from_str to
 
4039
          collection.cpp|h.
 
4040
        * geometry.cpp, libmoon.h, Makefile.am, point.cpp, point.h, rect.cpp,
 
4041
          shape.cpp, src.mdp, type.h, value.cpp, value.h, value.h.in,
 
4042
          xaml.cpp: Remove the double and point arrays, no longer needed.
 
4043
        * type-generated.cpp: Remove the double and point arrays, no longer
 
4044
          needed. Implement support for 2.0 events.
 
4045
 
 
4046
2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4047
 
 
4048
        * runtime.cpp: Fix a crash (xaml parser tries to access the NULL loader
 
4049
          during parsing).
 
4050
 
 
4051
2008-08-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4052
 
 
4053
        * dependencyproperty.g.cpp: Surround 2.0 DP declarations in #if SL_2_0.
 
4054
 
 
4055
2008-08-09  Jeffrey Stedfast  <fejj@novell.com>
 
4056
 
 
4057
        * *.h: Removed *_new() prototypes which are autogenerated in
 
4058
        cbinding.h
 
4059
 
 
4060
2008-08-08  Chris Toshok  <toshok@ximian.com>
 
4061
 
 
4062
        * template.h, template.cpp: new file, stub implementations for
 
4063
        FrameworkTemplate and ControlTemplate.
 
4064
 
 
4065
        * Makefile.am: add template.h/cpp.
 
4066
 
 
4067
        * control.h: add Template property.
 
4068
 
 
4069
        * frameworkelement.h: add some 2.0 events.
 
4070
 
 
4071
        * cbinding.h, cbinding.cpp, type.h, dependencyproperty.g.cpp,
 
4072
        value.h, type-generated.cpp: regenerate.
 
4073
        
 
4074
2008-08-08  Chris Toshok  <toshok@ximian.com>
 
4075
 
 
4076
        * xaml.h, xaml.cpp: we need to propagate the 2.0-ness of the
 
4077
        parser around in various methods (starting from the public
 
4078
        xaml_set_property_from_str and value_from_str*) in order to get it
 
4079
        down to where it's needed for the enum_* calls.
 
4080
 
 
4081
        * enums.h, enums.cpp: add a "sl2" argument so we can resolve
 
4082
        sl1/sl2 specific enum values, and add the 2.0 specific
 
4083
        Horizontal/VerticalAlignment mappings.
 
4084
 
 
4085
2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4086
 
 
4087
        * runtime.cpp: Remove comments to self :)
 
4088
 
 
4089
2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4090
 
 
4091
        * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
 
4092
          control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
 
4093
          canvas.cpp, transform.h, downloader.cpp, transform.cpp,
 
4094
          animation.h, grid.cpp, shape.h, animation.cpp, deployment.cpp,
 
4095
          control.cpp, runtime.cpp, text.cpp, clock.h, contentcontrol.h,
 
4096
          clock.cpp, uielement.h, collection.h, geometry.h,
 
4097
          contentcontrol.cpp, frameworkelement.h, uielement.cpp, grid.h,
 
4098
          collection.cpp, geometry.cpp, shape.cpp, dependencyobject.cpp,
 
4099
          frameworkelement.cpp, namescope.cpp, brush.h, panel.h, stylus.h,
 
4100
          namescope.h, media.cpp, brush.cpp, usercontrol.h: Remove DP
 
4101
          registration from *_init methods, and remove *_init methods which
 
4102
          turned out to be empty after that.
 
4103
 
 
4104
2008-08-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4105
 
 
4106
        * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
 
4107
          control.h, deployment.h, text.h, trigger.cpp, dependencyobject.h,
 
4108
          canvas.cpp, transform.h, downloader.cpp, transform.cpp,
 
4109
          animation.h, grid.cpp, downloader.h, shape.h,
 
4110
          dependencyproperty.g.cpp, animation.cpp, deployment.cpp,
 
4111
          control.cpp, runtime.cpp, text.cpp, dependencyproperty.h,
 
4112
          Makefile.am, clock.h, contentcontrol.h, dependencyproperty.cpp,
 
4113
          clock.cpp, uielement.h, collection.h, geometry.h,
 
4114
          contentcontrol.cpp, frameworkelement.h, src.mdp, uielement.cpp,
 
4115
          grid.h, collection.cpp, geometry.cpp, shape.cpp,
 
4116
          dependencyobject.cpp, frameworkelement.cpp, namescope.cpp, media.h,
 
4117
          brush.h, panel.h, stylus.h, namescope.h, media.cpp, brush.cpp,
 
4118
          usercontrol.h: Generate dependency property registration.
 
4119
 
 
4120
2008-08-07  Chris Toshok  <toshok@ximian.com>
 
4121
 
 
4122
        * collection.h, collection.cpp (double_collection_from_str): new
 
4123
        method.
 
4124
        (point_collection_from_str): new method.
 
4125
 
 
4126
        * xaml.cpp (value_from_str): add support for
 
4127
        DoubleCollection/PointCollection properties.  leave
 
4128
        DoubleArray/PointArray in for now, although nothing should use it.
 
4129
 
 
4130
        * shape.h, shape.cpp, geometry.h, geometry.cpp: switch all
 
4131
        PointArray/DoubleArray properties to using
 
4132
        PointCollection/DoubleCollection.  This is unfortunately a
 
4133
        necessity due to the 2.0 changes, but it should be transparent for
 
4134
        everything else.
 
4135
 
 
4136
2008-08-07  Larry Ewing  <lewing@novell.com>
 
4137
 
 
4138
        * shape.cpp (Shape::ShiftPosition): add an unfortunate restriction
 
4139
        on ShiftPosition interaction with the shape cache to fix the
 
4140
        droppings we were seeing in AnimationMatrix and
 
4141
        StoryBoard_ModifyProperty.htm.
 
4142
 
 
4143
2008-08-07  Geoff Norton  <gnorton@novell.com>
 
4144
 
 
4145
        * media.cpp: When the MediaElement source changes set the
 
4146
        BufferingProgress back to 0 otherwise we may never emit a 
 
4147
        BufferingProgressChangedEvent for the new source.
 
4148
 
 
4149
2008-08-07  Sebastien Pouliot  <sebastien@ximian.com>
 
4150
 
 
4151
        * layout.cpp: Handle negative horiBearingX correctly. This gives
 
4152
        better visual results in DRT #47 (same width value, up to 2 
 
4153
        decimal) and #209 (not enough to make it PASS but I doubt the 
 
4154
        master is ok, since I can't duplicate its output).
 
4155
 
 
4156
2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4157
 
 
4158
        * dependencyobject.cpp: HasProperty: accept attached properties for
 
4159
          now.
 
4160
 
 
4161
2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4162
 
 
4163
        * panel.cpp, stylus.cpp, trigger.h, usercontrol.cpp, canvas.h,
 
4164
          control.h, deployment.h, text.h, thickness.h, trigger.cpp,
 
4165
          canvas.cpp, transform.h, color.h, downloader.cpp, eventargs.cpp,
 
4166
          transform.cpp, animation.h, grid.cpp, downloader.h, eventargs.h,
 
4167
          shape.h, animation.cpp, size.h, deployment.cpp, control.cpp,
 
4168
          text.cpp, clock.h, contentcontrol.h, clock.cpp, uielement.h,
 
4169
          point.h, collection.h, geometry.h, contentcontrol.cpp,
 
4170
          frameworkelement.h, uielement.cpp, grid.h, collection.cpp,
 
4171
          geometry.cpp, shape.cpp, frameworkelement.cpp, media.h, brush.h,
 
4172
          rect.h, panel.h, stylus.h, media.cpp, brush.cpp, usercontrol.h: Add
 
4173
          instructions to generate c constructors in headers and remove *_new
 
4174
          implementations from cpp files.
 
4175
        * dependencyobject.h: Typedef function pointer to avoid making the
 
4176
          generator understand function pointer syntax. Update comments to
 
4177
          new syntax.
 
4178
        * cbinding.h, value.h, src.mdp, cbinding.cpp: Updated.
 
4179
        * type.h, type.h.in: Updated comments to new syntax.
 
4180
        * mms-downloader.h: Use C++ syntax.
 
4181
        * dependencyproperty.h, dependencyproperty.cpp: Make
 
4182
          dependency_property_register_managed_property a method on the type
 
4183
          and update comments to new syntax.
 
4184
        * type-generated.cpp: Updated by new generator, which did actually
 
4185
          catch a few errors.
 
4186
 
 
4187
2008-08-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4188
 
 
4189
        * dependencyproperty.cpp: DP: Comment out the duplicate DP warning
 
4190
          until it's fixed.
 
4191
 
 
4192
2008-08-06  Geoff Norton  <gnorton@novell.com>
 
4193
 
 
4194
        * dependencyproperty.cpp: When registering a clashing DP
 
4195
        return the original so that the code can act on it as it
 
4196
        expects.  Fixes about 18 DRT regressions.
 
4197
 
 
4198
2008-08-06  Chris Toshok  <toshok@ximian.com>
 
4199
 
 
4200
        * uielement.h, uielement.cpp: add GetTransformToUIElement, the
 
4201
        unmanaged equivalent to the managed UIElement.TransformToVisual.
 
4202
 
 
4203
        Also change the signature of HitTest to take a Point, not two
 
4204
        doubles.  Add a HitTest overload that takes a Rect in
 
4205
        preparation for 2.0.
 
4206
 
 
4207
        * panel.h, panel.cpp: track HitTest signature change.
 
4208
 
 
4209
        * control.h, control.cpp: track HitTest signature change.
 
4210
 
 
4211
2008-08-06  Chris Toshok  <toshok@ximian.com>
 
4212
 
 
4213
        * transform.h, transform.cpp: add a convenience ctor for Matrix
 
4214
        that takes a cairo_matrix_t*.
 
4215
 
 
4216
2008-08-06  Chris Toshok  <toshok@ximian.com>
 
4217
 
 
4218
        * type-generated.cpp (type_infos): fix ctors for UIElement and
 
4219
        UIElementCollection.
 
4220
 
 
4221
2008-08-06  Chris Toshok  <toshok@ximian.com>
 
4222
 
 
4223
        * frameworkelement.h, frameworkelement.cpp: add
 
4224
        DataContextProperty.
 
4225
 
 
4226
2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4227
 
 
4228
        * type.cpp: Fix for old glib in sled.
 
4229
 
 
4230
2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4231
 
 
4232
        * dependencyproperty.cpp, type.cpp, type.h, type.h.in,
 
4233
          type-generated.cpp: Add custom properties to a GSList instead of
 
4234
          the hash table given that several custom properties can be
 
4235
          registered on the same type with the same name.
 
4236
 
 
4237
2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4238
 
 
4239
        * src.mdp: Make src and plugin projects build.
 
4240
 
 
4241
2008-08-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4242
 
 
4243
        * src.mdp: Updated.
 
4244
 
 
4245
2008-08-05  Chris Toshok  <toshok@ximian.com>
 
4246
 
 
4247
        * transform.h, transform.cpp, brush.cpp: Add GeneralTransform as a
 
4248
        superclass of Transform, and move all the current Transform stuff
 
4249
        there.
 
4250
 
 
4251
        * type.h, type-generated.cpp, value.h: resync
 
4252
 
 
4253
2008-08-05  Chris Toshok  <toshok@ximian.com>
 
4254
 
 
4255
        * uielement.h, uielement.cpp, frameworkelement.h,
 
4256
        frameworkelement.cpp: move the UIElement DPs back - the move to
 
4257
        FrameworkElement breaks tests.
 
4258
 
 
4259
        * collection.cpp (TriggerCollection::AddedToCollection): quiet
 
4260
        this down.
 
4261
        (TriggerCollection::RemovedFromCollection): same.
 
4262
 
 
4263
2008-08-05  Chris Toshok  <toshok@ximian.com>
 
4264
 
 
4265
        * frameworkelement.h, frameworkelement.cpp: add in the 2.0-only
 
4266
        DependencyProperties.  we need a way to limit access to these to
 
4267
        only the 2.0 case.
 
4268
 
 
4269
        * uielement.h, uielement.cpp: CursorProperty, ResourcesProperty,
 
4270
        TagProperty, TriggersProperty are moved to
 
4271
        frameworkelement.h/.cpp.
 
4272
        
 
4273
        * runtime.cpp (Surface::UpdateCursorFromInputList): CursorProperty
 
4274
        moved from UIElement to FrameworkElement.
 
4275
 
 
4276
        * size.h, size.cpp: add SizeChangedEventArgs.
 
4277
 
 
4278
        * thickness.h: move this type here
 
4279
 
 
4280
        * control.h: #include thickness.h
 
4281
 
 
4282
        * type.h, value.h, type-generated.cpp: regenerate for
 
4283
        SIZECHANGEDEVENTARGS.
 
4284
        
 
4285
2008-08-05  Chris Toshok  <toshok@ximian.com>
 
4286
 
 
4287
        * Makefile.am (libmoon_la_SOURCES): enums.c => enums.cpp
 
4288
 
 
4289
        * enums.h: add comment about keeping MouseCursors enum in sync
 
4290
        with Cursor.cs.
 
4291
 
 
4292
        * enums.cpp: make all the mappings use symbols instead of integer
 
4293
        constants.  Also, rename enums.c to enums.cpp so it can include
 
4294
        the .h files for enums not in enums.h.
 
4295
 
 
4296
2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4297
 
 
4298
        * src.mdp: Remove visual.cpp|h from here too.
 
4299
 
 
4300
2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4301
 
 
4302
        * brush.cpp, brush.h, dirty.cpp, panel.cpp, panel.h, type.h,
 
4303
          type-generated.cpp, uielement.cpp, uielement.h, value.h,
 
4304
          visual.cpp, visual.h, collection.h, collection.cpp, Makefile.am,
 
4305
          libmoon.h: Deleted Visual (moved content into UIElement), and
 
4306
          renamed VisualCollection to UIElementCollection.
 
4307
 
 
4308
2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4309
 
 
4310
        * cbinding.cpp, cbinding.h, dependencyobject.cpp, dependencyobject.h:
 
4311
          GetValueWithError: Add a parameter to specify the exact type
 
4312
          (including managed subclassing) of the object. HasProperty: use
 
4313
          that parameter to determine if the type has the specified property
 
4314
          or not.
 
4315
        * dependencyproperty.cpp, dependencyproperty.h: DependencyProperty: Add
 
4316
          a is_custom field to determine if the property is our own or not.
 
4317
 
 
4318
2008-08-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4319
 
 
4320
        * cbinding.cpp, cbinding.h: Updated.
 
4321
        * dependencyobject.h, dependencyobject.cpp, dependencyproperty.cpp,
 
4322
          dependencyproperty.h, runtime.cpp, runtime.h, type.cpp, type.h,
 
4323
          type.h.in, type-generated.cpp: Create a Types class which may
 
4324
          contain additional types. Change the DP/DO/Type overloads
 
4325
          containing a Surface to take a Types argument instead.
 
4326
 
 
4327
2008-08-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4328
 
 
4329
        * dependencyobject.cpp: Implement Get[No[Default]]ValueWithError.
 
4330
 
 
4331
2008-08-04  Michael Dominic K.  <mdk@mdk.am>
 
4332
 
 
4333
        * animation.cpp:
 
4334
        * clock.cpp:
 
4335
        * clock.h: Adding method to store a manual target (instead of a named target)
 
4336
        for a timeline. This will be used to bind a Storyboard.SetTarget 2.0 method.
 
4337
 
 
4338
2008-08-04  Michael Dominic K.  <mdk@mdk.am>
 
4339
 
 
4340
        * animation.cpp:
 
4341
        * animation.h: A little bit of C API for KeySpline.
 
4342
 
 
4343
2008-08-04  Michael Dominic K.  <mdk@mdk.am>
 
4344
 
 
4345
        * runtime.cpp: _get_surface can only be called from the main thread.
 
4346
 
 
4347
2008-08-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4348
 
 
4349
        * src.mdp, cbinding.h, cbinding.cpp: Updated.
 
4350
        * Makefile.am: Include error.cpp.
 
4351
        * error.h, error.cpp: Added MoonError.
 
4352
        * dependencyproperty.h: Make RegisterFull 2.0 only.
 
4353
        * dependencyobject.h, dependencyobject.cpp: Added and implemented
 
4354
          Get[[No]Default]ValueWithError and a HasProperty method which takes
 
4355
          into account properties registered on a surface.
 
4356
 
 
4357
2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4358
 
 
4359
        * canvas.cpp, grid.cpp: Use C++ binding instead of C binding.
 
4360
        * media.cpp: Use property accessors instead of GetValue.
 
4361
 
 
4362
2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4363
 
 
4364
        * cbinding.cpp, cbinding.h: Update.
 
4365
        * dependencyproperty.cpp: RegisterFull: Only wrap method code in
 
4366
          SL_2_0, fixed 1.0 build.
 
4367
 
 
4368
2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4369
 
 
4370
        * dependencyproperty.h: Make GetName return a const char*, and rename
 
4371
          parameters from readonly to read_only (to not conflict with C#
 
4372
          keywords).
 
4373
 
 
4374
2008-08-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4375
 
 
4376
        * src.mdp: Updated.
 
4377
        * dependencyproperty.cpp, dependencyproperty.h, Makefile.am: Generate
 
4378
          DependencyProperty's C methods.
 
4379
        * cbinding.cpp, cbinding.h: Added.
 
4380
        * typegen, typegen/typegen.cs, typegen/typegen.sh: Moved typegen to
 
4381
          moon/generators, and add methodgen to generate pinvokes, and cgen
 
4382
          to generate c bindings.
 
4383
 
 
4384
2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4385
 
 
4386
        * dependencyobject.cpp, dependencyproperty.cpp, dependencyproperty.h:
 
4387
          Implement property changed callbacks.
 
4388
 
 
4389
2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4390
 
 
4391
        * contentcontrol.h, control.h: Fix includes.
 
4392
 
 
4393
2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4394
 
 
4395
        * pipeline-ffmpeg.cpp: Fix warning.
 
4396
 
 
4397
2008-08-01  Jeffrey Stedfast  <fejj@novell.com>
 
4398
 
 
4399
        * dependencyobject.cpp (EventObject::Dispose): Call
 
4400
        SetSurface (NULL)
 
4401
        (EventObject::unref): Don't call SetSurface() here anymore.
 
4402
 
 
4403
2008-08-01  Michael Dominic K.  <mdk@mdk.am>
 
4404
 
 
4405
        * runtime.cpp|h: Adding few utility functions to modify the flags
 
4406
        at runtime -- provided that there are no surfaces currently
 
4407
        present. Would be nice to be able to somehow do it before calling
 
4408
        runtime_init ().
 
4409
 
 
4410
2008-08-01  Michael Dominic K.  <mdk@mdk.am>
 
4411
 
 
4412
        * runtime.cpp|h: Adding an expose handoff custom
 
4413
        function that can be set on surface.  It's called just after
 
4414
        render_cb when something has been updated on the screen.
 
4415
 
 
4416
2008-08-01  Michael Dominic K.  <mdk@mdk.am>
 
4417
 
 
4418
        * runtime.cpp|h: Adding a global surface list and an
 
4419
        ability to access it.  I have a bad feeling we need some locking
 
4420
        in the _get_surface_list function.
 
4421
 
 
4422
2008-08-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4423
        
 
4424
        * src.mdp: Updated.
 
4425
 
 
4426
2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
 
4427
 
 
4428
        This is the proper fix for bug #412443
 
4429
 
 
4430
        * visual.cpp (VisualCollection::Dispose): Implement Dispose()
 
4431
        method.
 
4432
        (VisualCollection::RemovedFromCollection): Now that we know we are
 
4433
        disposing, we can unset VisualParent here instead of in our
 
4434
        dtor/Dispose() method, saving us from having to interate over our
 
4435
        children twice.
 
4436
 
 
4437
        * collection.cpp (Collection::Dispose): Implement a Dispose()
 
4438
        method which does what the dtor used to do.
 
4439
 
 
4440
        * dependencyobject.cpp (EventObject::unref): Call Dispose() just
 
4441
        before deleting the object.
 
4442
 
 
4443
2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
 
4444
 
 
4445
        * dependencyobject.cpp (struct Listener): Comment out the listener
 
4446
        reffing from previous commit. I don't think this is correct.
 
4447
 
 
4448
        * visual.cpp (VisualCollection): Set z_sorted to NULL after
 
4449
        freeing it so that parent class dtor calling
 
4450
        RemovedFromCollection() will not poke at free'd memory.
 
4451
 
 
4452
2008-07-31  Geoff Norton  <gnorton@novell.com>
 
4453
 
 
4454
        * Makefile.am: Undo part of the recent Makefile changes as they broke 
 
4455
        the 1.0 build.
 
4456
 
 
4457
2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
 
4458
 
 
4459
        Fixes bug #412443
 
4460
 
 
4461
        * dependencyobject.cpp (DependencyObject::AddPropertyChangeListener):
 
4462
        Ref the listener.
 
4463
        (DependencyObject::RemovePropertyChangeListener): Unref the listener.
 
4464
 
 
4465
2008-07-31  Jeffrey Stedfast  <fejj@novell.com>
 
4466
 
 
4467
        * animation.cpp (KeyFrameCollection::RemovedFromCollection): Oops,
 
4468
        this needs to chain up to
 
4469
        DependencyObjectCollection::RemovedFromCollection() rather than
 
4470
        AddedToCollection(). Duh.
 
4471
 
 
4472
2008-07-30  Jeffrey Stedfast  <fejj@novell.com>
 
4473
 
 
4474
        * contentcontrol.cpp|h: Added.
 
4475
 
 
4476
        * enums.h: Moved some font/text enums here from font.h
 
4477
 
 
4478
2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4479
 
 
4480
        * dependencyproperty.cpp: Fix build.
 
4481
 
 
4482
2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4483
 
 
4484
        * runtime.cpp: Fix 1.0 build.
 
4485
 
 
4486
2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4487
 
 
4488
        * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h,
 
4489
          type.cpp, type.h, type.h.in, typegen/typegen.cs,
 
4490
          type-generated.cpp: Store DependencyProperties in the Type* instead
 
4491
          of a hashtable keyed on the kind.
 
4492
 
 
4493
2008-07-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4494
 
 
4495
        * dependencyobject.cpp: IsValueValid: treat all MANAGED types as valid,
 
4496
          given that since we might not have access to the surface where the
 
4497
          type was registered, it's not possible to do any type checking 
 
4498
        * dependencyproperty.cpp, dependencyproperty.h, runtime.cpp, runtime.h:
 
4499
          Implement registration of managed properties on a surface.
 
4500
        * type.cpp, type.h, type.h.in: Implement a Type::Find which can look in
 
4501
          types registered on a surface, added a Type::MANAGED enum value.
 
4502
        * typegen/typegen.cs, type-generated.cpp, value.h, value.h.in: Add a
 
4503
          MANAGED type.
 
4504
 
 
4505
2008-07-29  Jeffrey Stedfast  <fejj@novell.com>
 
4506
 
 
4507
        * text.cpp (inline_new): Added.
 
4508
 
 
4509
2008-07-29  Jackson Harper  <jackson@ximian.com>
 
4510
 
 
4511
        * xaml.cpp: Add a set_parent call, I need to do some fanagling
 
4512
        there so collection items don't have their parents set.
 
4513
        - Managed items that are being hydrated or created using x:Class
 
4514
        need to get content properties from the managed world.
 
4515
        
 
4516
2008-07-28  Chris Toshok  <toshok@ximian.com>
 
4517
 
 
4518
        * value.cpp, value.h.in, value.h, type.h, typegen/typegen.cs,
 
4519
        type-generated.cpp: Add Size foo.
 
4520
 
 
4521
2008-07-28  Jeffrey Stedfast  <fejj@novell.com>
 
4522
 
 
4523
        * value.cpp (Value::FreeValue): Oops, free Thickness.
 
4524
 
 
4525
2008-07-28  Chris Toshok  <toshok@ximian.com>
 
4526
 
 
4527
        * control.h (struct Thickness): reorder fields to match managed
 
4528
        struct.
 
4529
 
 
4530
2008-07-28  Jeffrey Stedfast  <fejj@novell.com>
 
4531
 
 
4532
        * typegen/typegen.cs: Added Thickness.
 
4533
 
 
4534
        * value.h.in, type.h.in: Added Thickness.
 
4535
 
 
4536
        * value.cpp: Implemented Thickness value ctor/etc.
 
4537
 
 
4538
        * enums.h: Added more 2.0-specific enums.
 
4539
 
 
4540
        * control.cpp|h: Implemented property accessors/bindings and
 
4541
        Thickness struct.
 
4542
 
 
4543
2008-07-28  Michael Dominic K.  <mdk@mdk.am>
 
4544
 
 
4545
        * animation.cpp: When starting an SB that has been started already make sure to
 
4546
        remove the Completed handler before the teardown. Fixes #405518.
 
4547
 
 
4548
2008-07-28  Chris Toshok  <toshok@ximian.com>
 
4549
        
 
4550
        * collection.cpp (collection_iterator_next): move the check for
 
4551
        index-in-range to after the increment of it.  that way managed
 
4552
        code doesn't step off the end of the list.
 
4553
 
 
4554
2008-07-26  Chris Toshok  <toshok@ximian.com>
 
4555
 
 
4556
        * eventargs.h, eventargs.cpp: some 2.0 event stuff.  Make the
 
4557
        MouseEventArgs and KeyboardEventArgs classes subclasses of a new
 
4558
        class - RoutedEventArgs.  Also, add a "Handled" field to both
 
4559
        MouseEventArgs and KeyboardEventArgs.  Lastly add a "Keyboard"
 
4560
        class to map to the 2.0 static Keyboard class.  it exposes nothing
 
4561
        but a Modifiers property, which isn't updated at present, but will
 
4562
        be by the Surface code (in the key event handler).
 
4563
 
 
4564
        * type.h, value.h, type-generated.cpp: sync - new ROUTEDEVENTARGS
 
4565
        type/value.
 
4566
 
 
4567
2008-07-26  Chris Toshok  <toshok@ximian.com>
 
4568
 
 
4569
        * enums.h (enum ModifierKey): 2.0 specific enum for use by the
 
4570
        Keyboard class.
 
4571
 
 
4572
2008-07-26  Jackson Harper  <jackson@ximian.com>
 
4573
 
 
4574
        * xaml.cpp: If there isn't a managed content property, try looking
 
4575
        for an unmanaged one.
 
4576
 
 
4577
2008-07-26  Jackson Harper  <jackson@ximian.com>
 
4578
 
 
4579
        * xaml.h|cpp: Create elements for imported managed namespaces.
 
4580
        
 
4581
2008-07-25  Chris Toshok  <toshok@ximian.com>
 
4582
 
 
4583
        * runtime.h, runtime.cpp: reformat the class decl to put public:
 
4584
        stuff first.  add "bool silverlight2" to the surface ctor so we
 
4585
        can start to use it for behavioral differences (routed event
 
4586
        handlers, key events, focus, etc).
 
4587
 
 
4588
2008-07-25  Jeffrey Stedfast  <fejj@novell.com>
 
4589
 
 
4590
        * stylus.h (StrokeCollection::CanAdd): Strokes can exist in
 
4591
        multiple StrokeCollections at a time but they cannot be added to
 
4592
        the same collection multiple times. Do not default to
 
4593
        DependencyObjectCollection::CanAdd()'s behavior because it checks
 
4594
        that the logical parent is unset (which will not be accurate for
 
4595
        strokes).
 
4596
        (StylusPointCollection): Same as StrokeCollection.
 
4597
 
 
4598
        * xaml.cpp (dependency_object_add_child): Set the logical parent
 
4599
        of items to NULL before adding them to a collection.
 
4600
 
 
4601
        * collection.h (class Collection): Removed 'unique' field, it's
 
4602
        not necessary afterall.
 
4603
        (Collection::CanAdd): New virtual method to check if the value can
 
4604
        be added to the collection (by default always returns true).
 
4605
        (DependencyObjectCollection::CanAdd): Override CanAdd() by
 
4606
        checking if the object being added has a logical parent. If it
 
4607
        already has a parent, it cannot be added (this is how Silverlight
 
4608
        behaves).
 
4609
 
 
4610
        * collection.cpp (Collection::Add): There's no such thing as
 
4611
        'unique' anymore. Don't check if the value is already contained
 
4612
        within our collection like the old code used to do, instead call
 
4613
        our new virtual method CanAdd() to see if we can add it.
 
4614
        (Collection::Insert): Check CanAdd().
 
4615
        (Collection::SetValueAt): Check CanAdd().
 
4616
 
 
4617
2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
 
4618
 
 
4619
        * collection.cpp (collection_add): Fixed.
 
4620
 
 
4621
        * collection.h: Get rid of convenience wrappers that aren't even
 
4622
        used. Also removes the need for previous commit.
 
4623
 
 
4624
2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
 
4625
 
 
4626
        * collection.h (class DependencyObjectCollection): Add virtual
 
4627
        Add(), Clear() and Insert(). This makes it possible for subclasses
 
4628
        to chain up if they need to override any of these.
 
4629
        (class DoubleCollection): Same.
 
4630
        (class PointCollection): Here too.
 
4631
 
 
4632
        * visual.cpp (VisualCollection::Clear): Chain up to
 
4633
        DependencyObjectCollection::Clear() rather than
 
4634
        Collection::Clear().
 
4635
        (VisualCollection::Insert): Don't bother resizing the z_sorted
 
4636
        array here, it will be done inside ResortByZIndex() anyway.
 
4637
        (VisualCollection::Insert): Chain up to
 
4638
        DependencyObjectCollection::Insert() rather than
 
4639
        Collection::Insert()
 
4640
 
 
4641
2008-07-24  Geoff Norton  <gnorton@novell.com>
 
4642
 
 
4643
        * downloader.cpp: When a downloader is reused reset the completed
 
4644
        state when we get the new Open call.
 
4645
 
 
4646
2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
 
4647
 
 
4648
        * text.cpp (inlines_simple_text_equal): Fixed a stupid typo.
 
4649
 
 
4650
        * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
 
4651
        Unregister the NameScope the same way the old Collection::Remove()
 
4652
        way did it. This way seems the most correct (RemoveAt() was
 
4653
        totally broken and SetVal() doesn't seem right afterall).
 
4654
 
 
4655
2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
 
4656
 
 
4657
        * collection.cpp: Added c-wrappers for creating new
 
4658
        collections. Also changed the c-bindings for
 
4659
        setting/adding/inserting/etc items to the collection to take
 
4660
        Value* instead of Value. Should make it simpler for the managed
 
4661
        code to pass that.
 
4662
 
 
4663
2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
 
4664
 
 
4665
        * collection.cpp (DependencyObjectCollection::RemovedFromCollection):
 
4666
        Unregister the NameScope the same way it was done in the more
 
4667
        common case in the old code (why were there different ways?).
 
4668
 
 
4669
        * text.cpp (TextBlock::OnCollectionChanged): Chain up.
 
4670
        (TextBlock::OnCollectionItemChanged): Same.
 
4671
 
 
4672
        * brush.cpp (GradientBrush::OnCollectionChanged): Chain up.
 
4673
        (GradientBrush::OnCollectionItemChanged): Chain up and notify
 
4674
        listeners.
 
4675
 
 
4676
        * geometry.cpp (GeometryGroup::OnCollectionChanged): Chain up.
 
4677
        (GeometryGroup::OnCollectionItemChanged): Chain up and notify
 
4678
        listeners.
 
4679
        (PathGeometry::OnCollectionChanged): Chain up.
 
4680
        (PathGeometry::OnCollectionItemChanged): Chain up and notify
 
4681
        listeners.
 
4682
        (PathFigure::OnCollectionChanged): Chain up.
 
4683
        (PathFigure::OnCollectionItemChanged): Chain up and notify
 
4684
        listeners.
 
4685
 
 
4686
        * shape.cpp (Polygon::OnCollectionChanged): Chain up.
 
4687
        (Polygon::OnCollectionItemChanged): Same.
 
4688
        (Polyline::OnCollectionChanged): Same.
 
4689
        (Polyline::OnCollectionItemChanged): Same.
 
4690
 
 
4691
        * stylus.cpp (Stroke::OnCollectionItemChanged): Need to
 
4692
        call NotifyListersOfPropertyChange().
 
4693
 
 
4694
        * transform.cpp (TransformGroup::OnCollectionItemChanged): Need to
 
4695
        call NotifyListersOfPropertyChange().
 
4696
 
 
4697
2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
 
4698
 
 
4699
        * collection.cp|h: Reworked Collections a lot. Collection is now a
 
4700
        generic collection of Values. Added 3 new collections:
 
4701
        DependencyObjectCollection (which holds DO's like the old
 
4702
        Collection class did), DoubleCollection and PointCollection.
 
4703
 
 
4704
        * dependencyobject.h (DependencyObject::OnCollectionChanged):
 
4705
        Changed the way this works to reflect the managed API.
 
4706
 
 
4707
        *.cpp|h: Updated to reflect above changes.
 
4708
 
 
4709
2008-07-24  Jeffrey Stedfast  <fejj@novell.com>
 
4710
 
 
4711
        * utils.cpp (g_ptr_array_insert): New utility function.
 
4712
        (g_ptr_array_insert_sorted): Call g_ptr_array_insert() once we
 
4713
        find the index where we want to add the item.
 
4714
 
 
4715
2008-07-23  Chris Toshok  <toshok@ximian.com>
 
4716
 
 
4717
        * panel.cpp, xaml.cpp, stylus.cpp, usercontrol.cpp, canvas.cpp,
 
4718
        transform.cpp, grid.cpp, animation.cpp, text.cpp,
 
4719
        dependencyproperty.h, dependencyproperty.cpp, uielement.cpp,
 
4720
        geometry.cpp, shape.cpp, dependencyobject.cpp,
 
4721
        frameworkelement.cpp, media.cpp, brush.cpp: a couple of
 
4722
        DependencyPropertyChanges:
 
4723
 
 
4724
        1. switch to the Silverlight/WPF naming of the two Types.
 
4725
        type/value_type change to owner_type/property_type.
 
4726
 
 
4727
        2. go all gtk-3.0, and make things private with accessors.
 
4728
 
 
4729
2008-07-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4730
 
 
4731
        * animation.cpp, brush.cpp, canvas.cpp, clock.cpp, collection.cpp,
 
4732
          dependencyobject.cpp, dependencyobject.h, dependencyproperty.cpp,
 
4733
          dependencyproperty.h, deployment.cpp, downloader.cpp,
 
4734
          frameworkelement.cpp, geometry.cpp, grid.cpp, media.cpp,
 
4735
          namescope.cpp, panel.cpp, runtime.cpp, shape.cpp, stylus.cpp,
 
4736
          text.cpp, transform.cpp, trigger.cpp, uielement.cpp,
 
4737
          usercontrol.cpp, xaml.cpp: Move Register(Full|Nullable) and
 
4738
          GetDependencyObject from DependencyObject to DependencyProperty.
 
4739
 
 
4740
2008-07-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4741
 
 
4742
        * dependencyobject.h, dependencyproperty.h, Makefile.am,
 
4743
          dependencyproperty.cpp, src.mdp, dependencyobject.cpp: Move
 
4744
          DependencyProperty to its own file before it grows bigger.
 
4745
 
 
4746
2008-07-21  Jackson Harper  <jackson@ximian.com>
 
4747
 
 
4748
        * xaml.cpp: Add back in the ability to create elements from
 
4749
        managed elements using the x:Class syntax.
 
4750
 
 
4751
2008-07-21  Jackson Harper  <jackson@ximian.com>
 
4752
 
 
4753
        * user-control.h:
 
4754
        * type-generated.cpp: The UserControl's Content Property name is
 
4755
        Content not ContentProperty.
 
4756
 
 
4757
2008-07-21  Jeffrey Stedfast  <fejj@novell.com>
 
4758
 
 
4759
        * collection.cpp (collection_add): Fixed to return int.
 
4760
 
 
4761
2008-07-21  Jackson Harper  <jackson@ximian.com>
 
4762
 
 
4763
        * xaml.cpp: Add support for parsing GridLength attribute values.
 
4764
 
 
4765
2008-07-19  Geoff Norton  <gnorton@novell.com>
 
4766
 
 
4767
        * mms-downloader.(cpp|h):  Ensure that we always stream-select a marker
 
4768
        stream when there is one available.  Fixes drt #2.
 
4769
        Refactor some code duplication into a utility method.
 
4770
 
 
4771
2008-07-19  Jackson Harper  <jackson@ximian.com>
 
4772
 
 
4773
        * xaml.cpp: We can't blindly assume an object has a content
 
4774
        property.
 
4775
 
 
4776
2008-07-19  Jackson Harper  <jackson@ximian.com>
 
4777
 
 
4778
        * type-generated.cpp: UserControl has a content property.
 
4779
        * value.h|.h.in|.cpp: Add GridLength to Value.
 
4780
 
 
4781
2008-07-18  Geoff Norton  <gnorton@novell.com>
 
4782
 
 
4783
        * media.cpp: Revert InitialBuffer work around as it has some unexpected
 
4784
        consequences. :(
 
4785
 
 
4786
2008-07-18  Geoff Norton  <gnorton@novell.com>
 
4787
 
 
4788
        * media.cpp: Clear the InitialBuffer state when we seek as well, as that will
 
4789
        get a new burst from the mms server with AccelBW.
 
4790
 
 
4791
2008-07-18  Geoff Norton  <gnorton@novell.com>
 
4792
 
 
4793
        * media.cpp: If we're using a mms source we can attempt to start playing the 
 
4794
        first time before the entire 5s buffer is full due to AccelBW/AccelDuration.
 
4795
        Fixes c9 stream start lag.
 
4796
 
 
4797
2008-07-18  Geoff Norton  <gnorton@novell.com>
 
4798
        
 
4799
        * mms-downloader.cpp: Set LinkBW, AccelBW and AccelDuration so we can fill
 
4800
        our initial buffer quickly.
 
4801
 
 
4802
2008-07-18  Geoff Norton  <gnorton@novell.com>
 
4803
 
 
4804
        * pipeline.(cpp|h), mp3.(cpp|h): Break mp3 out into its own files.
 
4805
        * Makefile.am: Add mp3.(cpp|h) to the build.
 
4806
        * pipeline-ffmpeg.cpp: MP3 streamed over asf will bunch multiple frames
 
4807
        together, so we need to split them up and pass them to avcodec_decode_audio2
 
4808
        one at a time.  Its also possible that we could get a partial frame, so we need
 
4809
        to buffer that data. Fixes mms+mp3.
 
4810
 
 
4811
2008-07-18  Jeffrey Stedfast  <fejj@novell.com>
 
4812
 
 
4813
        Fix for bug #410206
 
4814
 
 
4815
        * text.h (TextBlock::GetBoundingHeight): Return the larger of the
 
4816
        2 values.
 
4817
        (TextBlock::GetBoundingWidth): Same.
 
4818
 
 
4819
2008-07-18  Chris Toshok  <toshok@ximian.com>
 
4820
 
 
4821
        * Makefile.am (libmoon_include_HEADERS): add window.h and
 
4822
        window-gtk.h
 
4823
        (libmoon_la_SOURCES): add window-gtk.cpp
 
4824
 
 
4825
        * window.h: abstract class for windows, that surface will use to
 
4826
        deal with window/widget level operations.
 
4827
 
 
4828
        * window-gtk.h, window-gtk.cpp: MoonWindow implementation using
 
4829
        gtk widgets.
 
4830
 
 
4831
        * runtime.h, runtime.cpp: factor out all the widget stuff from
 
4832
        this file, along with all "width" and "height" fields.  now
 
4833
        Surface knows nothing about widgets or windowless.  It speaks to
 
4834
        MoonWindow implementations instead.  Add several public methods
 
4835
        that the window implementations can call (anything HandleUI*) to
 
4836
        communicate events back to the surface.
 
4837
 
 
4838
        * canvas.cpp: surface->Get{Width,Height} ==>
 
4839
        surface->GetWindow()->Get{Width,Height}.
 
4840
        
 
4841
2008-07-18  Michael Dominic K.  <mdk@mdk.am>
 
4842
 
 
4843
        * clock.cpp:
 
4844
        * media.cpp: Reverting prev change, different solution: process the tick calls
 
4845
        before processing the render.
 
4846
 
 
4847
2008-07-18  Michael Dominic K.  <mdk@mdk.am>
 
4848
 
 
4849
        * media.cpp: If the downloader is already completed, don't do an extra async 
 
4850
        call when setting source. Fixes the downloader-set-source... testcase.
 
4851
 
 
4852
2008-07-18  Michael Dominic K.  <mdk@mdk.am>
 
4853
 
 
4854
        * media.cpp: Fixing a crasher in case bad parameters passed from js.
 
4855
 
 
4856
2008-07-18  Jackson Harper  <jackson@ximian.com>
 
4857
 
 
4858
        * xaml.h: New delegates and functions for the loader.  We need to
 
4859
        call back into managed code when we import a xaml namespace so
 
4860
        that it knows which objects are available and we need a new
 
4861
        function for creating those objects.
 
4862
 
 
4863
2008-07-18  Jackson Harper  <jackson@ximian.com>
 
4864
 
 
4865
        * usercontrol.cpp|h: Add C functions for accessing the Content
 
4866
        element.
 
4867
 
 
4868
2008-07-17  Jackson Harper  <jackson@ximian.com>
 
4869
 
 
4870
        * type.h:
 
4871
        * value.h:
 
4872
        * type-generated.cpp:
 
4873
        * deployment.cpp|h: Add an Application type.  This doesnt directly
 
4874
        map to the managed Application because it inherits from
 
4875
        DependencyObject, but it allows us to parse Application XAML files
 
4876
        and then we can pull the values we need.
 
4877
 
 
4878
2008-07-17  Jackson Harper  <jackson@ximian.com>
 
4879
 
 
4880
        * libmoon.h: Add usercontrol.h, I want access to this in the
 
4881
        plugin debug code.
 
4882
 
 
4883
2008-07-17  Jackson Harper  <jackson@ximian.com>
 
4884
 
 
4885
        * xaml.cpp: Had a backwards IsSubclassOf here causing
 
4886
        UserControl's content property to not get set (and I imagine many
 
4887
        other content properties).
 
4888
        * usercontrol.h: Add the ContentProperty metadata.
 
4889
 
 
4890
2008-07-17  Stephane Delcroix  <sdelcroix@novell.com>
 
4891
 
 
4892
        * downloader.h|cpp: provide hooks for DownloadeRequest
 
4893
 
 
4894
2008-07-17  Jeffrey Stedfast  <fejj@novell.com>
 
4895
 
 
4896
        * pipeline.cpp (FileSource::ReadInternal): EOF isn't an error.
 
4897
 
 
4898
        * runtime.cpp (surface_create_downloader): We need to actually
 
4899
        return the downloader here or our caller will just get garbage ;-)
 
4900
 
 
4901
2008-07-17  Michael Dominic K.  <mdk@mdk.am>
 
4902
 
 
4903
        * clock.cpp: When _USE_IDLE_HINT is not sent, don't do idle hinting.
 
4904
 
 
4905
        * runtime.h: On desktop and browser by default use idle hinting.
 
4906
 
 
4907
2008-07-17  Michael Dominic K.  <mdk@mdk.am>
 
4908
 
 
4909
        * runtime.cpp: Adding "idlehint" to moonlight overrides that will 
 
4910
        control the use of idle hint in the clocks.
 
4911
 
 
4912
2008-07-17  Stephane Delcroix  <sdelcroix@novell.com>
 
4913
        
 
4914
        * runtime.h|cpp: add surface_get_downloader
 
4915
 
 
4916
2008-07-16  Larry Ewing  <lewing@novell.com>
 
4917
 
 
4918
        * runtime.cpp: try to get the resize logic correct for all cases,
 
4919
        including popfly, ControlState.htm and fullscreen tests.
 
4920
 
 
4921
        Fixes the (non)rendering issues in the popfly game creator.
 
4922
 
 
4923
2008-07-16  Geoff Norton  <gnorton@novell.com>
 
4924
 
 
4925
        * mplayer.cpp: Its possible that extremely small audio files will
 
4926
        never fill the sound buffer enough causing us to never call snd_pcm_open.
 
4927
        Ensure that we open the buffer to play the sound before shutting down
 
4928
        the player.
 
4929
 
 
4930
2008-07-16  Geoff Norton  <gnorton@novell.com>
 
4931
 
 
4932
        * pipeline.cpp: Update to be able to build with LOG_PIPELINE still
 
4933
 
 
4934
2008-07-16  Sebastien Pouliot  <sebastien@ximian.com>
 
4935
 
 
4936
        * layout.cpp: (TextLayout::LayoutWrap) Don't let actualWidth be 
 
4937
        greater than Width. Fix MS DRT#184 and #208. ALso makes #206 
 
4938
        looks better (but it already passed)
 
4939
 
 
4940
2008-07-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4941
 
 
4942
        * pipeline.cpp, pipeline.h: ProgressiveSource: clean up a bit, this
 
4943
          class doesn't do anything live/mms anymore. LiveSource: removed
 
4944
          completely, never used. Added MemoryNestedSource to wrap another
 
4945
          MemorySource without messing with its current position pointer.
 
4946
          MemoryQueueSource: store already parsed packets instead of
 
4947
          MemorySources in the queue, saves a memory allocation and prevents
 
4948
          parsing each packet twice when buffering (once for the code which
 
4949
          determines the last available pts, and again for the normal
 
4950
          demuxing code path).
 
4951
        * mms-downloader.cpp: Updated to not delete asf parser, unref it
 
4952
          instead.
 
4953
        * mplayer.cpp: Enqueue 3 audio frames instead of 10, makes the pipeline
 
4954
          wait a bit longer before ending up waiting for more data (which
 
4955
          causes the MediaElement to go into buffering mode).
 
4956
        * media.cpp: ProgressiveSource ctor doesn't take any bool arguments
 
4957
          anymore.
 
4958
 
 
4959
2008-07-15  Larry Ewing  <lewing@novell.com>
 
4960
 
 
4961
        * dirty.cpp (Surface::AddDirtyElement): quick patch from toshok to
 
4962
        fix a regression in the fullscreen message code.
 
4963
 
 
4964
2008-07-15  Jb Evain  <jbevain@novell.com>
 
4965
 
 
4966
        * deployment.cpp|h: start updating Deployment to sl2b2.
 
4967
 
 
4968
2008-07-15  Jb Evain  <jbevain@novell.com>
 
4969
 
 
4970
        * deployment.h: remove SupportedCulture and SupportedCultureCollection
 
4971
        as they no longer exist.
 
4972
        * value.h, type.h, type-generated.cpp: regenerate.
 
4973
 
 
4974
2008-07-15  Jb Evain  <jbevain@novell.com>
 
4975
 
 
4976
        * deployment.cpp|h: rename RuntimeVersion DP to RuntimeVersionProperty.
 
4977
 
 
4978
2008-07-15  Jb Evain  <jbevain@novell.com>
 
4979
 
 
4980
        * list.cpp: set pointers to NULL instead of 0.
 
4981
 
 
4982
2008-07-14  Geoff Norton  <gnorton@novell.com>
 
4983
 
 
4984
        * mplayer.cpp: If we've already reached the EOF in the audio stream
 
4985
        don't keep processing GetNextBuffer.  This was causing us to emit
 
4986
        MediaEnded more than once, causing failures in the test suite.
 
4987
 
 
4988
2008-07-14  Geoff Norton  <gnorton@novell.com>
 
4989
 
 
4990
        * downloader.cpp:  Change completed to check a bool instead of 
 
4991
        filename, as filename can now be set before the downloader is in fact
 
4992
        completed.
 
4993
 
 
4994
2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
4995
 
 
4996
        * media.cpp: Initialize Media with our downloader.
 
4997
        * pipeline.cpp: Media::Open: Check if the source has ended while
 
4998
          waiting for an asfparser. Remove print_stack_traces.
 
4999
 
 
5000
2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5001
 
 
5002
        * internal-downloader.h: Add InternalDownloader::GetType to allow the
 
5003
          derived internal downloader to tell what kind of internal
 
5004
          downloader it is.
 
5005
        * file-downloader.h: Implement InternalDownloader::GetType.
 
5006
        * downloader.h: Make the internal downloader publicly accessible. Add a
 
5007
          Downloader::IsAborted method.
 
5008
        * mms-downloader.h, mms-downloader.cpp: Implement
 
5009
          InternalDownloader::GetType. Store the ASFParser we create in the
 
5010
          class instance, so that the pipeline can get it. No need to write
 
5011
          the header packet to the stream anymore.
 
5012
        * media.cpp: Don't unref in AddTickCall callbacks anymore. Fix
 
5013
          calculation of buffering progress to take into account that the
 
5014
          currently available pts might be before the last played pts.
 
5015
        * mplayer.cpp, mplayer.h, downloader.cpp: Don't unref in AddTickCall
 
5016
          callbacks anymore.
 
5017
        * pipeline.cpp, pipeline.h: Make the Media ctor take a Downloader
 
5018
          argument and access the internal mms downloader on that Downloader
 
5019
          to get the asf parser. Remove Read/Seek support from
 
5020
          MemoryQueueSource, and just add a Pop method which returns a
 
5021
          MemorySource for the next packet in the queue. Also add support to
 
5022
          return all the packets in the queue as an array so that the
 
5023
          ASFParser can easily determine the last pts available.
 
5024
        * clock.cpp, clock.h: Use our own thread-safe Queue instead of GList +
 
5025
          g_mutex. Also make TickCall take a ref to the data parameter until
 
5026
          the tick call has been made. This also ensures that the data
 
5027
          parameter gets unreffed correctly when the tick call is never made
 
5028
          (such as when we skip calls due to the TimeManager getting shut
 
5029
          down).
 
5030
        * dependencyobject.cpp: Don't ref in AddTickCall anymore.
 
5031
 
 
5032
2008-07-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5033
 
 
5034
        * playlist.cpp: Fix warning.
 
5035
 
 
5036
2008-07-11  Sebastien Pouliot  <sebastien@ximian.com>
 
5037
 
 
5038
        * font.cpp: (FontFace::LoadGlyph) Use linearHoriAdvance instead 
 
5039
        of horiAdvance since the later is rounded to an integer. FixMS
 
5040
        DRT#45 and get better results (less differences) on many font
 
5041
        related tests.
 
5042
 
 
5043
2008-07-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5044
 
 
5045
        * http-streaming.cpp, playlist.cpp: Add missing #include <config.h>
 
5046
 
 
5047
2008-07-11  Sebastien Pouliot  <sebastien@ximian.com>
 
5048
 
 
5049
        * font.cpp: (font_conic_to) Directly use moon_quad_curve_to 
 
5050
        instead of doing it's own second to third order calculation.
 
5051
 
 
5052
2008-07-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5053
 
 
5054
        * mplayer.cpp: Don't store target pts from audio thread if we're paused
 
5055
          (audio thread might not have gotten the pause request yet).
 
5056
 
 
5057
2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5058
 
 
5059
        * pipeline.cpp: Don't Signal more than once. I have no idea why the
 
5060
          waiting thread doesn't wake up though.
 
5061
        * mplayer.cpp: Comment out a printf, and always break the play loop
 
5062
          when we're doing rw access.
 
5063
 
 
5064
2008-07-10  Sebastien Pouliot  <sebastien@ximian.com>
 
5065
 
 
5066
        * geometry.cpp|h: Remove useless code for computing bounds on
 
5067
        PathFigure (now all handled at PathGeometry level).
 
5068
 
 
5069
2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5070
 
 
5071
        * mplayer.cpp: Fix a couple of leaks.
 
5072
 
 
5073
2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5074
 
 
5075
        * pipeline.cpp: There's no need to call AudioPlayer::Initialize
 
5076
          anymore.
 
5077
        * runtime.cpp, runtime.h: Added
 
5078
          RUNTIME_INIT_AUDIO_NO_MMAP/audio=mmap|rw to runtime flags.
 
5079
        * mplayer.cpp, mplayer.h: Implement support for using RW access mode in
 
5080
          addition to the already supported MMAP access mode for alsa. This
 
5081
          also required a major refactoring to only call alsa on the audio
 
5082
          thread due to buggy pulseaudio hanging us (and the rest of the
 
5083
          machine) otherwise.
 
5084
 
 
5085
2008-07-10  Sebastien Pouliot  <sebastien@ximian.com>
 
5086
 
 
5087
        * shape.cpp|h: (ComputeStretchBounds) Move shape-specific code
 
5088
        inside each type (and out of the general case).
 
5089
 
 
5090
2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5091
 
 
5092
        * dependencyobject.cpp: Fix leak.
 
5093
 
 
5094
2008-07-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5095
 
 
5096
        * debug.cpp: Make valgrind happy.
 
5097
 
 
5098
2008-07-09  Geoff Norton  <gnorton@novell.com>
 
5099
 
 
5100
        * media.cpp: Ensure that we clear our old loader when we set
 
5101
        a new source.
 
5102
 
 
5103
2008-07-09  Fernando Herrera  <fherrera@novell.com>
 
5104
 
 
5105
        * pipeline.cpp: Always set MemoryQueueSource element's size
 
5106
        based to offset+n even for live sources.
 
5107
 
 
5108
2008-07-09  Jeffrey Stedfast  <fejj@novell.com>
 
5109
 
 
5110
        Fixes for bug #406934
 
5111
 
 
5112
        * text.cpp (Glyphs::SetSurface): Override so that we can start
 
5113
        downloading the font as soon as the element gets (re)attached.
 
5114
        (Glyphs::OnPropertyChanged): If we aren't attached, set
 
5115
        uri_changed to true so that when we are (re)attached, we can start
 
5116
        the download.
 
5117
 
 
5118
        * media.cpp (MediaBase::MediaBase): Init new state variable
 
5119
        'source_changed' to false.
 
5120
        (MediaBase::SetSurface): If source_changed and we are being
 
5121
        attached to a surface, initiate a download.
 
5122
        (MediaBase::SetSource): Set source_changed to false.
 
5123
        (MediaBase::OnPropertyChanged): Handle SourceProperty changes for
 
5124
        our subclasses.
 
5125
        (MediaElement::OnPropertyChanged): Don't handle SourceProperty
 
5126
        changes anymore, let MediaBase do that for us.
 
5127
        (Image::OnPropertyChanged): Same.
 
5128
 
 
5129
2008-07-09  Geoff Norton  <gnorton@novell.com>
 
5130
 
 
5131
        * mms-downloader.cpp: Remove the guard we had against copying
 
5132
        random memory and provide the correct amount of data to the 
 
5133
        pipeline from each packet.
 
5134
 
 
5135
2008-07-09  Geoff Norton  <gnorton@novell.com>
 
5136
        
 
5137
        * downloader.(cpp|h): NotifyFinished is now the finished
 
5138
        event.  The filename will be set (if available) in SetFilename.
 
5139
        * media.(cpp|h): Change to progressivly loading the image
 
5140
        where available (fixes popfly).  We still fallback to file loading
 
5141
        for the JS downloader case for now.
 
5142
 
 
5143
2008-07-09  Larry Ewing  <lewing@novell.com>
 
5144
 
 
5145
        * runtime.cpp (Surface::motion_notify_callback): don't call
 
5146
        get_pointer when in windowless mode, I don't think we can trust
 
5147
        the results.
 
5148
 
 
5149
        * runtime.h (class Surface): make widget public so that we can
 
5150
        peek at it in windowless mode.
 
5151
 
 
5152
2008-07-08  Sebastien Pouliot  <sebastien@ximian.com>
 
5153
 
 
5154
        * xaml.cpp: Always do a move after closing a path. Fix DRT test
 
5155
        #138 (even if it was passing too!) for a bad (extra) arc.
 
5156
 
 
5157
2008-07-08  Larry Ewing  <lewing@novell.com>
 
5158
 
 
5159
        * runtime.cpp, runtime.h: remove a bunch of code rot relating to
 
5160
        temporary cairo surfaces that is no longer used.
 
5161
 
 
5162
2008-07-08  Sebastien Pouliot  <sebastien@ximian.com>
 
5163
 
 
5164
        * shape.cpp: Consider PenLineCap when computing bounds using
 
5165
        cairo. Fix (even if it was passing) some corners in DRT test #7
 
5166
 
 
5167
2008-07-08  Jeffrey Stedfast  <fejj@novell.com>
 
5168
 
 
5169
        * xaml.h: Reorganized a bit.
 
5170
 
 
5171
2008-07-07  Chris Toshok  <toshok@ximian.com>
 
5172
 
 
5173
        * dirty.cpp (Surface::AddDirtyElement): don't add elements to the
 
5174
        list if they lack a visual parent (and aren't the toplevel.)
 
5175
        Fixes bug #406935.
 
5176
 
 
5177
2008-07-07  Larry Ewing  <lewing@novell.com>
 
5178
 
 
5179
        * shape.cpp (Rectangle::BuildPath): handle some special case
 
5180
        degenerates slightly differently.
 
5181
 
 
5182
        Fixes most of test-shape-rectangle-matrix.xaml.
 
5183
 
 
5184
2008-07-07  Larry Ewing  <lewing@novell.com>
 
5185
 
 
5186
        * shape.cpp (Ellipse::BuildPath): a thickness equal to a width
 
5187
        degenerates in drawing, use the workaround there too.
 
5188
 
 
5189
        Fixes shape #5 in test/xaml/assorted/stroke-thickness-test.html
 
5190
 
 
5191
2008-07-03  Larry Ewing  <lewing@novell.com>
 
5192
 
 
5193
        * geometry.cpp (RectangleGeometry::ComputeBounds): simplify the
 
5194
        rectangle geometry computation.  It matches in the sl
 
5195
        implementation now.
 
5196
 
 
5197
        * shape.cpp: simplify rectangle and ellipse drawing and bounds so
 
5198
        that they match the sl implementation and deal with degenerate
 
5199
        cases better.  Try to avoid setting up a clip rectangle when it
 
5200
        isn't needed.
 
5201
 
 
5202
2008-07-07  Chris Toshok  <toshok@ximian.com>
 
5203
 
 
5204
        [ fixes the media element not showing up in flowers-for-you, bug
 
5205
        #382490. ]
 
5206
        * media.h, media.cpp: move Image::use_img_{width,height} and
 
5207
        Image::updating into MediaBase and rename then
 
5208
        use_media_{width,height} and updating_size_from_media.
 
5209
        (MediaElement::OnPropertyChanged) duplicate the
 
5210
        WidthProperty/HeightProperty stuff here (c&p from
 
5211
        Image::OnPropertyChanged - this should probably just be refactored
 
5212
        to MediaBase.  will do this later).
 
5213
        (MediaBase::ComputeBounds): we don't need the subclass
 
5214
        ComputeBounds methods.  Just put it here, as they share the same
 
5215
        behavior.
 
5216
        (MediaElement::SetMedia): remove the call to ComputeBounds here,
 
5217
        since the new block of use_media_{width,height} checks will call
 
5218
        UpdateBounds if they need to.
 
5219
        
 
5220
2008-07-07  Fernando Herrera  <fherrera@novell.com>
 
5221
 
 
5222
        * media.cpp:
 
5223
        * pipeline.cpp:
 
5224
        * pipeline.h: Implement MemoryQueueSource::NotifyFinished so
 
5225
        we don't wait for new packets when the downloader has finished.
 
5226
        Also calculate size based on offset + n for mms streams, so the
 
5227
        ASFReader can check Eof based on positions.
 
5228
 
 
5229
2008-07-05  Chris Toshok  <toshok@ximian.com>
 
5230
 
 
5231
        * dirty.cpp: remove the down_dirty_node_succ and
 
5232
        up_dirty_node_pred code from here.  it arguably helped speed up
 
5233
        insertions into the dirty lists, but at the cost of lots of
 
5234
        dangling pointers.  we always walk up the tree looking for a
 
5235
        down/up node.  works, and is much simpler.  and fixes bug #362561.
 
5236
 
 
5237
        * uielement.h, uielement.cpp: remove the down_dirty_node_succ and
 
5238
        up_dirty_node_pred code.
 
5239
        
 
5240
2008-07-04  Sebastien Pouliot  <sebastien@ximian.com>
 
5241
 
 
5242
        * xaml.cpp: Avoid a SIGSEGV in dependency_object_set_attributes
 
5243
        when the atchname is invalid.
 
5244
 
 
5245
2008-07-04  Chris Toshok  <toshok@ximian.com>
 
5246
 
 
5247
        * runtime.cpp (Surface::EmitEventOnList): don't leak the event
 
5248
        args here.
 
5249
 
 
5250
2008-07-03  Chris Toshok  <toshok@ximian.com>
 
5251
 
 
5252
        * animation.h, animation.cpp: the *KeyFrame KeySplineProperty
 
5253
        values need to be initialized in the ctors, not in animation_init.
 
5254
 
 
5255
2008-07-03  Sebastien Pouliot  <sebastien@ximian.com>
 
5256
 
 
5257
        * shape.cpp: Add back the cairo_[save|restore] in ::Draw methods
 
5258
        since they are needed for stretching.
 
5259
 
 
5260
2008-07-03  Jeffrey Stedfast  <fejj@novell.com>
 
5261
 
 
5262
        * text.cpp (TextBlock::Render): Check to see if we need to
 
5263
        calculate layout before painting.
 
5264
 
 
5265
2008-07-03  Sebastien Pouliot  <sebastien@ximian.com>
 
5266
 
 
5267
        * moon-path.c|h: Draw ellipse clockwise to match Silverlight.
 
5268
        Also remove the closing point since it's not needed (but that was
 
5269
        not the problem, just a small memory saving).
 
5270
        [Re-fix bug #391684]
 
5271
 
 
5272
2008-07-02  Jeffrey Stedfast  <fejj@novell.com>
 
5273
 
 
5274
        * text.h (TextBlock::GetBoundingWidth/Height): Use
 
5275
        GetValueNoDefault() so we don't get 0.0 for the width/height if
 
5276
        unset.
 
5277
 
 
5278
        Fixes for bug #404858
 
5279
 
 
5280
        * runtime.cpp: Added SHOW_TEXTBOXES bit flag.
 
5281
 
 
5282
        * layout.cpp: Don't keep track of bbox_width and height anymore,
 
5283
        it was never actually set to anything other than
 
5284
        actual_width/height anyway.
 
5285
 
 
5286
        * text.cpp (TextBlock::Paint): If SHOW_TEXTBOXES, render a green
 
5287
        bounding box around the text (this is to aid in debugging text
 
5288
        which may have a transform applied to it).
 
5289
 
 
5290
        * text.h (class TextBlock): Removed bbox_width and
 
5291
        bbox_height. These were never anything other than
 
5292
        actual_width/height respectively anyway.
 
5293
        (TextBlock::GetBoundingWidth): Return the FrameworkElement::Width
 
5294
        if set, else the ActualWidth.
 
5295
        (TextBlock::GetBoundingHeight): Same.
 
5296
 
 
5297
2008-07-02  Sebastien Pouliot  <sebastien@ximian.com>
 
5298
 
 
5299
        * shape.cpp: Remove cairo_save|restore from [Shape|Path]::Draw
 
5300
        since their callers already do this. Simplify a bit Shape::
 
5301
        InsideObject to check ret only if a Clip is present (instead of
 
5302
        always checking it).
 
5303
 
 
5304
2008-07-02  Chris Toshok  <toshok@ximian.com>
 
5305
 
 
5306
        * runtime.h, runtime.cpp: get rid of the cursor_func,
 
5307
        invalidate_func, render_func stuff.  Instead use 3 virtual
 
5308
        methods: SetCursor(GdkCursor*), Invalidate(Rect), and
 
5309
        ProcessUpdates().  That way the plugin can instantiate a
 
5310
        WindowlessSurface which overrides those methods instead of having
 
5311
        the stupid callback mechanism we had.
 
5312
 
 
5313
2008-07-02  Chris Toshok  <toshok@ximian.com>
 
5314
 
 
5315
        * runtime.h, runtime.cpp: virtualize SetCursor so the plugin can
 
5316
        override the behavior.
 
5317
 
 
5318
2008-07-02  Sebastien Pouliot  <sebastien@ximian.com>
 
5319
 
 
5320
        * moon-path.c: Revert ordering change I made in r105586 to fix
 
5321
        a clipping issue (fillrule bug) as this breaks stroke dash (which
 
5322
        confirm the original behaviour was the correct one).
 
5323
        [Fix most of #404858]
 
5324
 
 
5325
2008-07-01  Jeffrey Stedfast  <fejj@novell.com>
 
5326
 
 
5327
        Fixes for bug #405514.
 
5328
 
 
5329
        * text.cpp (TextBlock::Layout): If the Text property is empty,
 
5330
        default the actualHeight to the font's height.
 
5331
        (TextBlock::OnPropertyChanged): If the FrameworkElement::Width
 
5332
        property changes, we need to set dirty to true (in most cases) so
 
5333
        that the actual width/height values are recalculated.
 
5334
 
 
5335
2008-06-30  Sebastien Pouliot  <sebastien@ximian.com>
 
5336
 
 
5337
        * shape.cpp|h: Use Cairo by default to ComputeBounds. In effect 
 
5338
        this change Polyline and Polygon to use Cairo instead of (faster
 
5339
        but less acurate) custom code. In reality PathGeometry (PML) is 
 
5340
        much more used than those Poly[line|gon] and (upcoming) caching 
 
5341
        negate much of the impact.
 
5342
        * geometry.cpp: Use the more precise (and surviving) 
 
5343
        calc_line_bounds function that accept PenLineCap.
 
5344
 
 
5345
2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
 
5346
 
 
5347
        * shape.cpp (Shape::OnPropertyChanged): If the Stroke property
 
5348
        chanegs between null and an actual brush (in either direction),
 
5349
        invalidate the cached path because the shape may need to
 
5350
        recalculate the stroke offsets.
 
5351
 
 
5352
2008-06-30  Sebastien Pouliot  <sebastien@ximian.com>
 
5353
 
 
5354
        * xaml.cpp: Move reading the first point of C|Q beziers into the 
 
5355
        loop. Fix quite a few misrendering for http://xmldocs.net/ball
 
5356
        [Partial fix for #404858]
 
5357
 
 
5358
2008-06-30  Chris Toshok  <toshok@ximian.com>
 
5359
 
 
5360
        * dirty.cpp: add all the ordering smarts to keep the two dirty
 
5361
        lists partially sorted.  hopefully this won't be a huge
 
5362
        performance hit.
 
5363
 
 
5364
        * uielement.h, uielement.cpp: add 2 new dirty pointers.  a "succ"
 
5365
        pointer for the down dirty list, and a "pred" for the up dirty
 
5366
        list.
 
5367
 
 
5368
2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
 
5369
 
 
5370
        * list.cpp (List::InsertBefore): Handle a NULL @before.
 
5371
 
 
5372
2008-06-30  Geoff Norton  <gnorton@novell.com>
 
5373
 
 
5374
        * mms-downloader.cpp: Rework Fernando's incomplete packet guard to be a little
 
5375
        more sane while we determine how to fix this properly.
 
5376
 
 
5377
2008-06-30  Jeffrey Stedfast  <fejj@novell.com>
 
5378
 
 
5379
        * shape.cpp (Shape::ComputeShapeBounds): Reverted my previous fix,
 
5380
        it's not correct.
 
5381
        (Ellipse::ComputeShapeBounds): Same.
 
5382
 
 
5383
2008-06-30  Michael Dominic K.  <mdk@mdk.am>
 
5384
 
 
5385
        * animation.cpp: Make sure our default KeySplines parameters are correct
 
5386
        to generate a linear dynamics curve as Silverlight. Fixes #404850.
 
5387
 
 
5388
2008-06-30  Fernando Herrera  <fherrera@novell.com>
 
5389
 
 
5390
        * pipeline.cpp: don't use g_queue_clear as is present only in glib >= 2.14
 
5391
 
 
5392
2008-06-30  Fernando Herrera  <fherrera@novell.com>
 
5393
 
 
5394
        * pipeline.h:
 
5395
        * pipeline.cpp: Implement the packet writer MemoryQueueSource.
 
5396
        * asf/asf.h:
 
5397
        * asf/asf.cpp: 
 
5398
        * media.h:
 
5399
        * media.cpp: Use MemoryQueueSource for all mms streams
 
5400
        * mms-downloader.cpp: Don't try to parse/write incomplete data packets.
 
5401
 
 
5402
2008-06-29  Chris Toshok  <toshok@ximian.com>
 
5403
 
 
5404
        * panel.cpp (Panel::OnCollectionChanged): when the ZIndex of a
 
5405
        child changes, invalidate them here.
 
5406
 
 
5407
        * dirty.cpp (Surface::ProcessDownDirtyElements): and remove the
 
5408
        subtree invalidate from the zindex processing here.
 
5409
 
 
5410
2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5411
 
 
5412
        * pipeline-ffmpeg.cpp: Add debug spew.
 
5413
        * media.cpp: Remove debug spew.
 
5414
 
 
5415
2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5416
 
 
5417
        * media.cpp, media.h: Add streamed markers to the media element on the
 
5418
          main thread.
 
5419
 
 
5420
2008-06-28  Geoff Norton  <gnorton@novell.com>
 
5421
 
 
5422
        * downloader.h: The finished event raises a success condition now
 
5423
        so that we can notify failure on unsuccessful downloads.
 
5424
 
 
5425
2008-06-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5426
 
 
5427
        * mplayer.h: Add AudioPlayer::Drain to drain whatever data the audio
 
5428
          has stored, now called by the MediaPlayer when seeking. Execute the
 
5429
          'seeking complete' logic on the main thread (marshalling
 
5430
          SeekCallback to the main thread). Always use the thread-safe
 
5431
          AddTickCallSafe instead of AddTickCall, and override
 
5432
          EventSurface::SetSurface to lock/unlock the required locks.
 
5433
        * mplayer.cpp: Add AudioPlayer::Drain to drain whatever data the audio
 
5434
          has stored, now called by the MediaPlayer when seeking. Execute the
 
5435
          'seeking complete' logic on the main thread (marshalling
 
5436
          SeekCallback to the main thread), and set the previous_position on
 
5437
          the MediaElement to the seeked-to position when the seek is
 
5438
          finished. Always use the thread-safe AddTickCallSafe instead of
 
5439
          AddTickCall, and override EventSurface::SetSurface to lock/unlock
 
5440
          the required locks.
 
5441
        * dependencyobject.cpp, dependencyobject.h: Split AddTickCall into a
 
5442
          thread-safe version (AddTickCallSafe) and don't do any locking in
 
5443
          AddTickCall. Add SetSurfaceLock/Unlock so that types overriding
 
5444
          SetSurface can do the proper locking.
 
5445
        * media.cpp, media.h: CheckMarkers: Don't try to detect seeking by
 
5446
          comparing to/from pts, MediaPlayer will now set previous_position
 
5447
          correctly when seeking. AdvanceFrame: only check markers if we
 
5448
          advanced or if we're not seeking. SetSurface: add proper locking,
 
5449
          and use AddTickCallSafe where appropiate.
 
5450
 
 
5451
2008-06-27  Larry Ewing  <lewing@novell.com>
 
5452
 
 
5453
        * uielement.cpp (UIElement::OnPropertyChanged): opcacity mask
 
5454
        affects the subtree as well.
 
5455
 
 
5456
2008-06-27  Larry Ewing  <lewing@novell.com>
 
5457
 
 
5458
        * uielement.cpp (UIElement::OnPropertyChanged): on things that can
 
5459
        potentially be trapped by the Invalidate visibility check we need
 
5460
        to invalidate the whole subtree before we start processing the
 
5461
        dirty lists to avoid ordering issues.
 
5462
 
 
5463
        Fixes test/xaml/assorted/rendering-glitches2.html.
 
5464
 
 
5465
2008-06-27  Chris Toshok  <toshok@ximian.com>
 
5466
 
 
5467
        * panel.cpp (Panel::FrontToBack): add a special case for
 
5468
        non-translucent (but NULL background) panels - we don't render
 
5469
        them at all.
 
5470
 
 
5471
2008-06-27  Larry Ewing  <lewing@novell.com>
 
5472
 
 
5473
        * panel.cpp (Panel::FrontToBack): treat opacity specially for
 
5474
        panel since we need the right subtree render region in PreRender.
 
5475
 
 
5476
2008-06-27  Jeffrey Stedfast  <fejj@novell.com>
 
5477
 
 
5478
        * downloader.cpp (dummy_downloader_create_web_request): Return
 
5479
        NULL to fix a compile warning about control reaching the end of a
 
5480
        non-void function.
 
5481
 
 
5482
2008-06-27  Stephane Delcroix  <sdelcroix@novell.com>
 
5483
 
 
5484
        * downloader.[h|cpp]: move browserrequest/response from the plugin
 
5485
        as downloaderrequest/response.
 
5486
 
 
5487
2008-06-26  Chris Toshok  <toshok@ximian.com>
 
5488
 
 
5489
        * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): enable
 
5490
        the shape cache.
 
5491
 
 
5492
        * shape.h, shape.cpp (Shape::IsCandidateForCaching): remove the
 
5493
        condition that was keeping small surfaces from being cached, so
 
5494
        bubblemark gets a win from this (from ~38 to 70+ fps on my
 
5495
        laptop).
 
5496
        (Shape::ShiftPosition): if we have a cached surface, set the
 
5497
        device offset to mirror the new bounds x/y.
 
5498
 
 
5499
2008-06-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5500
 
 
5501
        * clock.h, clock.cpp, dependencyobject.h, downloader.cpp,
 
5502
          dependencyobject.cpp, mplayer.h, media.h, mplayer.cpp, media.cpp:
 
5503
          Change AddTickCall to take a TickCallHandler (EventObject*)
 
5504
          function pointer and a EventObject * tick_data instead of untyped
 
5505
          function pointer/tick_data.
 
5506
 
 
5507
2008-06-26  Chris Toshok  <toshok@ximian.com>
 
5508
 
 
5509
        * dependencyobject.h,
 
5510
        dependencyobject.cpp (DependencyProperty::DependencyProperty):
 
5511
        convert the name to downcase prior to registering and prior to
 
5512
        calling g_hash_table_lookup to remove the casecmp overhead from
 
5513
        our key comparisons.  store the converted name in DP::hash_key.
 
5514
 
 
5515
        * runtime.h, runtime.cpp: remove strcase_equal (use g_strcasecmp)
 
5516
        and strcase_hash.
 
5517
 
 
5518
        * type.cpp: strcase_equal -> g_strcasecmp.
 
5519
 
 
5520
        * playlist.cpp (PlaylistParser::OnStartElement): same.
 
5521
 
 
5522
2008-06-26  Jeffrey Stedfast  <fejj@novell.com>
 
5523
 
 
5524
        * pipeline.cpp (ASXDemuxerInfo::Supports): Fix broken boolean
 
5525
        logic/compiler warning and at the same time simplified.
 
5526
 
 
5527
        * shape.cpp (Shape::ComputeShapeBounds): Need to take stroke
 
5528
        thickness into consideration. Fixes bug #400657.
 
5529
        (Ellipse::ComputeShapeBounds): Same.
 
5530
 
 
5531
2008-06-26  Chris Toshok  <toshok@ximian.com>
 
5532
 
 
5533
        * dirty.cpp (Surface::ProcessDownDirtyElements): add code to
 
5534
        re-sort the children by zindex.
 
5535
 
 
5536
        * dirty.h (enum DirtyType): add DirtyChildrenZIndices.
 
5537
 
 
5538
        * panel.cpp (Panel::OnCollectionChanged): don't resort-by-zindex
 
5539
        here.  just add it to the dirty list.
 
5540
 
 
5541
        * transform.h, transform.cpp: move the OnSubPropertyChanged method
 
5542
        to MatrixTransform, so we can notify our listeners with the right
 
5543
        property.
 
5544
 
 
5545
2008-06-26  Chris Toshok  <toshok@ximian.com>
 
5546
 
 
5547
        * transform.h, transform.cpp (Transform::OnSubPropertyChanged): we
 
5548
        need this to deal with sub-dependencyobjects of transforms (in
 
5549
        this case, MatrixTransform's Matrix object.)  when you set
 
5550
        properties on these subobjects, we need to update the transform.
 
5551
 
 
5552
2008-06-26  Chris Toshok  <toshok@ximian.com>
 
5553
 
 
5554
        * brush.h, brush.cpp (Brush::OnSubPropertyChanged): add this (i
 
5555
        think it used to be there and was removed by me in a flurry of
 
5556
        propertychanged event fixing way back) to take care of brushes
 
5557
        properly causing the uielement to invalidate when the Brush's
 
5558
        transform/relativetransform changes.
 
5559
 
 
5560
2008-06-26  Sebastien Pouliot  <sebastien@ximian.com>
 
5561
 
 
5562
        * geometry.h: #ifdef out GeometryFlags until we start using it.
 
5563
        * shape.cpp: Remove unused global variable.
 
5564
 
 
5565
2008-06-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5566
 
 
5567
        * mplayer.cpp: AudioFinished: Check if we still have audio when the
 
5568
          callback is reached. Fixes test-double-stop.html.
 
5569
 
 
5570
2008-06-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5571
 
 
5572
        * mplayer.cpp: When calculating start_time take into account current
 
5573
          position. Fixes test-video-only-seek.html (and fox seeking without
 
5574
          audio).
 
5575
 
 
5576
2008-06-25  Jeffrey Stedfast  <fejj@novell.com>
 
5577
 
 
5578
        * mms-downloader.cpp: Got rid of overuse of this-> and some int vs
 
5579
        uint comparisons.
 
5580
 
 
5581
2008-06-25  Sebastien Pouliot  <sebastien@ximian.com>
 
5582
 
 
5583
        * geometry.cpp: Cache bounds, both logical and "physical" for
 
5584
        PathFigure. This reduce the number of time we need to call 
 
5585
        cairo_[path|stroke|fill]_extents functions and speed up many
 
5586
        sites.
 
5587
        * geometry.h: Add stuff needed for geometry.cpp changes.
 
5588
        * xaml.cpp: Change geometry_from_str to directly create a 
 
5589
        moon_path and avoid the PathFigure[Collection] DO. This match
 
5590
        how Silverlight handle Path Markup Language (PML) and reduce
 
5591
        memory requirements when huge PML are used.
 
5592
 
 
5593
2008-06-24  Chris Toshok  <toshok@ximian.com>
 
5594
 
 
5595
        * shape.cpp (calc_offsets): we don't want to divide by the sin,
 
5596
        because as angle approaches either 0, PI, or PI/2, the sin will
 
5597
        approach 0, and therefore the deltas will grow very, very large.
 
5598
        Turns out multiplying is what we want.
 
5599
 
 
5600
2008-06-24  Larry Ewing  <lewing@novell.com>
 
5601
 
 
5602
        * runtime.cpp (Surface::Resize): set the width and height properly
 
5603
        in the windowless case, let the widget resize logic handle it
 
5604
        otherwise.
 
5605
        (Surface:render_cb): don't process dirty elements if we are in a
 
5606
        zombie state, just clear the dirty lists and move on.  Fixes a
 
5607
        crash we were seeing when calling ForceRender on a zombie plugin.
 
5608
 
 
5609
2008-06-24  Chris Toshok  <toshok@ximian.com>
 
5610
 
 
5611
        * runtime.cpp: in the switch from function pointer to integer in
 
5612
        the HandleMouseEvent stuff, I didn't catch that C++ apparently
 
5613
        doesn't flag NULL as different from 0.  This was causing the
 
5614
        "HandleMouseEvent (NULL" to become effectively become
 
5615
        "HandleMouseEvent (UIElement::DestroyedEvent" which of course
 
5616
        breaks all sorts of things.  In bug 401884 it was causing the
 
5617
        namescope to drop the named item from its hashtable, causing the
 
5618
        tattoo needle to not move vertically.
 
5619
 
 
5620
2008-06-23  Chris Toshok  <toshok@ximian.com>
 
5621
 
 
5622
        * uielement.cpp (UIElement::PreRender): comment from the code is
 
5623
        changelog-worthy:
 
5624
        
 
5625
        we need this check because ::PreRender can (and will) be called
 
5626
        for elements with empty regions.
 
5627
        
 
5628
        The region passed in here is the redraw region intersected with
 
5629
        the render bounds of a given element.  For Panels with no
 
5630
        width/height specified in the xaml, this region will be
 
5631
        empty. (check panel.cpp::FrontToBack - we insert the ::PreRender
 
5632
        calling node if either the panel background or any of the children
 
5633
        intersect the redraw region.)  We can't clip to the empty region,
 
5634
        obviously, as it will keep all descendents from drawing to the
 
5635
        screen.
 
5636
 
 
5637
2008-06-23  Chris Toshok  <toshok@ximian.com>
 
5638
 
 
5639
        * uielement.h, uielement.cpp (UIElement::ShiftPosition): virtualize
 
5640
        the "bounds.x = p.x; bounds.y = p.y" code, since subclasses have
 
5641
        other, more specialized bounds that also need updating.
 
5642
 
 
5643
        * panel.h, panel.cpp (Panel::ShiftPosition): new method, chain up
 
5644
        to UIElement::ShiftPosition and also update bounds_with_children.
 
5645
 
 
5646
        * stylus.h, stylus.cpp (InkPresenter::ShiftPosition): new method,
 
5647
        chain up to Canvas::ShiftPosition, and also update render_bounds.
 
5648
 
 
5649
2008-06-23  Chris Toshok  <toshok@ximian.com>
 
5650
 
 
5651
        * canvas.cpp (Canvas::OnSubPropertyChanged): allow switching
 
5652
        between UpdatePosition and UpdateTransform according to the
 
5653
        updatepos=yes/no override.
 
5654
 
 
5655
        * runtime.h, runtime.cpp: add updatepos=yes/no override.
 
5656
        
 
5657
2008-06-23  Michael Dominic K.  <mdk@mdk.am>
 
5658
 
 
5659
        * clock.cpp: Fixing a problem with repeating animations. Fixes #401983.
 
5660
 
 
5661
2008-06-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5662
 
 
5663
        * media.cpp: Don't check markers if from > to, no markers will ever be
 
5664
          found in that interval. Also detect forward seeks by checking the
 
5665
          difference between from and to, if difference > 1s, behave as a
 
5666
          seek (and don't emit markers in that interval). 
 
5667
        * pipeline-ffmpeg.cpp: Give more missing information to ffmpeg.
 
5668
 
 
5669
2008-06-20  Jeffrey Stedfast  <fejj@novell.com>
 
5670
 
 
5671
        * animation.h: Added "Property Accessor" comments and grouped the
 
5672
        property accessors, etc.
 
5673
 
 
5674
        * dependencyobject.cpp (EventObject::SetSurface): Reworded debug
 
5675
        printf.
 
5676
        (EventObject::AddTickCall): Same.
 
5677
 
 
5678
        * dependencyobject.h (EventObject::GetSurface): Don't amke this
 
5679
        virtual, nothing overrides it currently.
 
5680
 
 
5681
2008-06-20  Michael Dominic K.  <mdk@mdk.am>
 
5682
 
 
5683
        * animation.cpp:
 
5684
        * animation.h:
 
5685
        * clock.cpp:
 
5686
        * clock.h: When detaching/reattaching to Surface execute a special
 
5687
        handler on clocks that (in case of animation clocks) removes the update
 
5688
        property handler. This fixes the (regressed some time ago)
 
5689
        StoryboardEnterLeave semantics test.
 
5690
 
 
5691
2008-06-19  Jackson Harper  <jackson@ximian.com>
 
5692
 
 
5693
        * animation.h: 
 
5694
        * type-generated.cpp: Make sure the content property is set.
 
5695
 
 
5696
2008-06-19  Larry Ewing  <lewing@novell.com>
 
5697
 
 
5698
        * uielement.cpp (UIElement::PreRender): work around what appears
 
5699
        to be a bug in the ftb logic by not clipping to the render region.
 
5700
 
 
5701
        * clock.cpp (SystemTimeSource::Start): make the timer priority
 
5702
        DEFAULT again since otherwise we can get into starvation
 
5703
        situations.
 
5704
 
 
5705
        * uielement.cpp (UIElement::PreRender): don't save/restore around
 
5706
        the clip changes, they restrict the group bounds and speed up
 
5707
        opacity related masking substantially.  (See bubblemark).
 
5708
 
 
5709
2008-06-19  Jeffrey Stedfast  <fejj@novell.com>
 
5710
 
 
5711
        * font.cpp (FontFace::GetExtents): Only set face pixel size if the
 
5712
        requested size is not what we already have set.
 
5713
        (FontFace::LoadGlyph): Same.
 
5714
        (FontFace::Kerning): Need to set pixel sizes here or our kerning
 
5715
        could be off.
 
5716
 
 
5717
2008-06-19  Chris Toshok  <toshok@ximian.com>
 
5718
 
 
5719
        * canvas.cpp (Canvas::OnSubPropertyChanged): call
 
5720
        ui->UpdatePosition instead of UpdateTransform.  Since
 
5721
        UpdateTransform calls UpdateBounds, this should save us a
 
5722
        sometimes costly (in the case of Shape's) trip through
 
5723
        ComputeBounds.
 
5724
 
 
5725
        * uielement.h, uielement.cpp: Add UpdatePosition (adds the dirty
 
5726
        node) and ComputePosition (called from ProcessDownDirtyElements.)
 
5727
        (UIElement::ComputePosition): Apply the inverse absolute transform
 
5728
        to the bounds x/y, compute the new transform, then reapply it to
 
5729
        the bounds x/y to compute our new position.
 
5730
        (UIElement::UpdateTransform): clear the DirtyPosition flag.
 
5731
        (UIElement::UpdatePosition): only add the DirtyPosition flag if
 
5732
        the Dirty*Transform flags aren't already set.
 
5733
 
 
5734
        
 
5735
        * dirty.cpp (Surface::ProcessDownDirtyElements): add blocks for
 
5736
        Clip, LocalClip, and Position (only Position is implemented).
 
5737
 
 
5738
        * dirty.h: clean up the enum some, and add 3 new passes (only one
 
5739
        of which, DirtyPosition, is implemented).
 
5740
 
 
5741
2008-06-19  Jeffrey Stedfast  <fejj@novell.com>
 
5742
 
 
5743
        * transform.cpp: Started adding property accessor methods.
 
5744
 
 
5745
        * canvas.cpp (Canvas::[G,S]etLeft): Implemented.
 
5746
        (Canvas::[G,S]etTop): Same.
 
5747
 
 
5748
        * uielement.cpp (UIElement::[G,S]etLeft): Moved to Canvas.
 
5749
        (UIElement::[G,S]etTop): Same.
 
5750
 
 
5751
2008-06-19  Chris Toshok  <toshok@ximian.com>
 
5752
 
 
5753
        * rect.h: add Get{Top,Bottom}{Left,Right} methods.
 
5754
 
 
5755
        * point.h, point.cpp: add Transform method.
 
5756
 
 
5757
2008-06-19  Michael Dominic K.  <mdk@mdk.am>
 
5758
 
 
5759
        * animation.cpp: In a *AnimationUsingKeyFrames if we don't have any
 
5760
        keyframes specified the duration is 0, not Automatic. This fixes the 
 
5761
        http://www.etonline.com/silverlight/grammys50/ website.
 
5762
 
 
5763
2008-06-18  Sebastien Pouliot  <sebastien@ximian.com>
 
5764
        
 
5765
        * geometry.cpp: Use the new moon-path functions for ArcSegment
 
5766
        and QuadraticBezierSegment
 
5767
        * moon-path.c: Change some validation to use g_return_if_fail
 
5768
 
 
5769
2008-06-18  Jeffrey Stedfast  <fejj@novell.com>
 
5770
 
 
5771
        * runtime.cpp (Surface::ShowFullScreenMessage): Simplified to use
 
5772
        SetLeft().
 
5773
 
 
5774
        * control.cpp (Control::GetTransformFor): Simplified.
 
5775
 
 
5776
        * uielement.cpp (UIElement::SetLeft): Added for setting
 
5777
        Canvas.Left property.
 
5778
        (UIElement::GetLeft): Same.
 
5779
        (UIElement::SetTop): Same.
 
5780
        (UIElement::GetTop): Same.
 
5781
 
 
5782
        * canvas.cpp (Canvas::GetTransformFor): Simplified.
 
5783
 
 
5784
2008-06-18  Sebastien Pouliot  <sebastien@ximian.com>
 
5785
 
 
5786
        * shape.cpp: When possible (i.e. if we won't change the bounds
 
5787
        anyway) avoid the second pass inside Shape::ComputeStretchBounds.
 
5788
        This reduce (but does not eliminate) a BIG bottleneck for SL
 
5789
        applications with many path using stretch (e.g. SL world).
 
5790
 
 
5791
2008-06-18  Geoff Norton  <gnorton@novell.com>
 
5792
 
 
5793
        * media.cpp: The state when Seeking should not be changed to Stopped.
 
5794
        Fixes another test.
 
5795
 
 
5796
2008-06-17  Jeffrey Stedfast  <fejj@novell.com>
 
5797
 
 
5798
        Partial fix for bug #400657.
 
5799
 
 
5800
        * dependencyobject.cpp (DependencyObject::IsValueValid): If the
 
5801
        value is a null dependency object, don't check that the types
 
5802
        match - it doesn't matter.
 
5803
 
 
5804
        * color.cpp (color_to_string): New convenience utility function to
 
5805
        aid in debugging. Returns a pointer to a static string buffer, so
 
5806
        be careful...
 
5807
 
 
5808
2008-06-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5809
 
 
5810
        * playlist.cpp, playlist.h: Only unref/null out the media in
 
5811
          PlaylistEntry::Stop if we're a playlist and not if we're a single
 
5812
          file.
 
5813
 
 
5814
2008-06-17  Sebastien Pouliot  <sebastien@ximian.com>
 
5815
 
 
5816
        * moon-path.c|h: Add moon_quad_curve_to and moon_arc_to so they
 
5817
        can be reused without a PathFigure-derived instance. Refactor
 
5818
        code to expand/realloc paths to reduce duplication.
 
5819
 
 
5820
2008-06-16  Chris Toshok  <toshok@ximian.com>
 
5821
 
 
5822
        * uielement.cpp (UIElement::OnPropertyChanged): call
 
5823
        Invalidate(GetSubtreeBounds()) and UpdateBounds() directly instead
 
5824
        of FullInvalidate.
 
5825
        (UIElement::OnSubPropertyChanged): same.
 
5826
 
 
5827
2008-06-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5828
 
 
5829
        * playlist.cpp: When Merging items only merge duration if the source
 
5830
          has duration.
 
5831
        * media.cpp: MediaElement::MediaOpened: when setting the media on the
 
5832
          current item in the playlist, make sure we set the media on a
 
5833
          PlaylistEntry, not on a (nested) Playlist.
 
5834
 
 
5835
2008-06-16  Jeffrey Stedfast  <fejj@novell.com>
 
5836
 
 
5837
        * yuv-converter.cpp (YUVConverter::YUVConverter): Replace
 
5838
        g_error() with g_warning(). There's really nothing else we can do
 
5839
        here...
 
5840
        (YUVConverter::Convert): Check if rgb_uv is NULL, if it is try
 
5841
        allocating it again? Maybe some resources have been released since
 
5842
        the ctor was called?
 
5843
 
 
5844
        * pipeline-ffmpeg.cpp (FfmpegDecoder::DecodeFrame): Replace
 
5845
        g_error() with a g_warning() and return MEDIA_OUT_OF_MEMORY error.
 
5846
 
 
5847
        * mplayer.cpp (MediaPlayer::Open): Change g_error() into a
 
5848
        g_warning() and return fail.
 
5849
 
 
5850
2008-06-16  Michael Dominic K.  <mdk@mdk.am>
 
5851
        
 
5852
        * clock.cpp: Don't do the ExtraRepeat action when seeking.
 
5853
 
 
5854
2008-06-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5855
 
 
5856
        * media.cpp, media.h: Move Play/Pause due to AutoPlay logic into one
 
5857
          method.
 
5858
        * playlist.cpp: When we stop, clear out our media. This fixes an issue
 
5859
          where we didn't correctly download a file if it was stopped after
 
5860
          it was opened, but before fully downloaded, and then restarted.
 
5861
 
 
5862
2008-06-13  Jeffrey Stedfast  <fejj@novell.com>
 
5863
 
 
5864
        * dependencyobject.cpp (include): stdlib.h for strtol()
 
5865
 
 
5866
        Fix for jumping to the last page in PageTurn.
 
5867
 
 
5868
        * uielement.cpp (UIElement::OnSubPropertyChanged): Need to call
 
5869
        UpdateTotalRenderVisibility() when the clip changes.
 
5870
 
 
5871
2008-06-13  Michael Dominic K.  <mdk@mdk.am>
 
5872
 
 
5873
        * animation.cpp:
 
5874
        * moon-curves.c:
 
5875
        * moon-curves.h: Cleaning up the KeySpline curve implementation a bit.
 
5876
 
 
5877
2008-06-13  Michael Dominic K.  <mdk@mdk.am>
 
5878
 
 
5879
        * Makefile.am:
 
5880
        * animation.cpp:
 
5881
        * animation.h:
 
5882
        * moon-curves.c:
 
5883
        * moon-curves.h: First version of the new algho for calculating the "y
 
5884
        at x" for KeySplines, now with 200% more accuracy guaranteed! Fixes the
 
5885
        AnimationMatrix2 test.
 
5886
 
 
5887
2008-06-12  Jackson Harper  <jackson@ximian.com>
 
5888
 
 
5889
        * xaml.cpp: Remove some cruft.
 
5890
        - Rename Custom to Managed
 
5891
        - We don't need element maps for the namespaces anymore
 
5892
        - Deploy can go into the default list of namespaces.
 
5893
 
 
5894
2008-06-12  Fernando Herrera  <fherrera@novell.com>
 
5895
 
 
5896
        * playlist.cpp: Parse ASX2 files using GKeyFile API to have sane NULL
 
5897
        terminated strings. Also keep any uri paramson the mms Ref.
 
5898
 
 
5899
2008-06-12  Jackson Harper  <jackson@ximian.com>
 
5900
 
 
5901
        * xaml.cpp: Use the new stuff for creating wrapped types.
 
5902
        - make XamlElementInstance pure virtual.
 
5903
 
 
5904
2008-06-12  Jackson Harper  <jackson@ximian.com>
 
5905
 
 
5906
        * xaml.cpp: Clean up API for creating wrapped dependency objects.
 
5907
 
 
5908
2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5909
 
 
5910
        * type.cpp: Fix type verification to not check 2.0 types for 1.0
 
5911
          builds.
 
5912
 
 
5913
2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5914
 
 
5915
        * media.cpp, media.h: Don't AutoPlay playlists which have already been
 
5916
          autoplayed. Make Play/Pause/Stop/Seek async.
 
5917
        * playlist.cpp, playlist.h: Add a AutoPlayed field to Playlist.
 
5918
 
 
5919
2008-06-12  Chris Toshok  <toshok@ximian.com>
 
5920
 
 
5921
        * control.cpp, control.h, deployment.h, frameworkelement.h,
 
5922
        grid.h, runtime.cpp, size.h, type-generated.cpp, type.h,
 
5923
        uielement.h, value.h, xaml.cpp: I was a little too aggressive.  we
 
5924
        can't use SL_2_0 in most places in headers (or rather, shouldn't).
 
5925
        It might be a good idea to remove all references to it, but this
 
5926
        at least gets the ms-tests running and passing again --with-mono.
 
5927
        Switch to using SL_2_0 around the #includes in the .cpp files, and
 
5928
        in value.h/type.h just include the 2.0 types.
 
5929
 
 
5930
        * usercontrol.h, usercontrol.cpp: split out the code from
 
5931
        control.h, control.cpp here.
 
5932
 
 
5933
        * Makefile.am: add usercontrol.[h,cpp]
 
5934
 
 
5935
        * typegen/typegen.cs: fix up the header emission.
 
5936
 
 
5937
2008-06-12  Sebastien Pouliot  <sebastien@ximian.com>
 
5938
 
 
5939
        * geometry.cpp|h: Refactor work between PathGeometry and PathFigure
 
5940
        ComputeBounds to avoid creating/destroying a new cairo context for
 
5941
        each figure (it's now shared). Refactor PathFigure::Build not to scan
 
5942
        the path list twice and rely on moon-path automatic size increase.
 
5943
        Also avoid cairo_fill_extents if the path can't be filled or no fill
 
5944
        brush is present.
 
5945
 
 
5946
2008-06-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
5947
 
 
5948
        * runtime.cpp: CreateDownloader: don't allow creating downloaders if we
 
5949
          can't get a surface, nor if the surface is a zombie.
 
5950
        * text.cpp, playlist.cpp, media.cpp: Surface::CreateDownloader may
 
5951
          return NULL now, add a null check.
 
5952
 
 
5953
2008-06-11  Jackson Harper  <jackson@ximian.com>
 
5954
 
 
5955
        * xaml.cpp: Move GetKind to the info.  Doesn't make sense for
 
5956
        Instances to have a kind (they can access their kind from their
 
5957
        info).
 
5958
 
 
5959
2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
 
5960
 
 
5961
        * geometry.cpp: Remove unneeded cairo_save|restore inside Draw 
 
5962
        methods (since Shape::Draw already does it) and remove
 
5963
        cairo_set_fill_rule (since Shape::Fill does it).
 
5964
 
 
5965
2008-06-11  Jackson Harper  <jackson@ximian.com>
 
5966
 
 
5967
        * xaml.cpp: Clean up the namespace map when destroying the parser.
 
5968
 
 
5969
2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
 
5970
 
 
5971
        * geometry.h: Fix GeometryGround::ComputeBounds so it does
 
5972
        not always returns 0,0,0,0 (from Geometry).
 
5973
 
 
5974
2008-06-11  Geoff Norton <gnorton@novell.com>
 
5975
 
 
5976
        * downloader.cpp: Only Abort if we have a surface.
 
5977
        * runtime.cpp: Detach the downloaders when we zombify.
 
5978
 
 
5979
2008-06-11  Sebastien Pouliot  <sebastien@ximian.com>
 
5980
 
 
5981
        * moon-path.c: Reorder ellipse points so the fill rule can be 
 
5982
        applied correcly (e.g. filling or clipping).
 
5983
 
 
5984
2008-06-11  Michael Dominic K.  <mdk@mdk.am>
 
5985
 
 
5986
        * clock.cpp: Fixing seeking on nested storyboards. Fixes
 
5987
        seek-test-nested-storyboard.xaml in assorted and one more
 
5988
        AnimationMatrix2 block. Now only one left to fix...
 
5989
 
 
5990
2008-06-10  Geoff Norton  <gnorton@novell.com>
 
5991
 
 
5992
        * mms-downloader.cpp: Reset our internal state after seeking so
 
5993
        we can resume the stream in the right place.
 
5994
 
 
5995
2008-06-10  Geoff Norton  <gnorton@novell.com>
 
5996
 
 
5997
        * mms-downlodaer.cpp: Remove some improperly commited debug code
 
5998
 
 
5999
2008-06-10  Chris Toshok  <toshok@ximian.com>
 
6000
 
 
6001
        * control.h, control.cpp, deployment.h, uielement.h,
 
6002
        uielement.cpp, frameworkelement.h, value.h, grid.h, size.h, xap.h,
 
6003
        runtime.cpp: wrap everything SL2.0 with INCLUDE_MONO_RUNTIME (for
 
6004
        now.  I'll be changing that ifdef soon.)  Also, mark all 2.0
 
6005
        specific types with the following typegen pragma: /*
 
6006
        @SilverlightVersion="2" */ so that the generated files contain the
 
6007
        proper ifdefs as well.
 
6008
 
 
6009
        * type-generated.cpp, type.h, value.h: resync with new ifdefs.
 
6010
 
 
6011
2008-06-10  Jackson Harper  <jackson@ximian.com>
 
6012
 
 
6013
        * dependencyobject.cpp: Add todo for Name validation.
 
6014
 
 
6015
2008-06-11  Fernando Herrera  <fherrera@novell.com>
 
6016
 
 
6017
        * xaml.cpp: Accept numbers and strings representing numbers as
 
6018
        values for BOOL properties. Also accept "true" and "false" case
 
6019
        variants.
 
6020
        * playlist.cpp: ASX2 files can use ?MSWMExt=.asf and &MSWMExt=.asf
 
6021
        ending uris, so just check for "MSWMExt=.asf".
 
6022
        Fixes hsn.tv, bug #362328.
 
6023
 
 
6024
2008-06-10  Jackson Harper  <jackson@ximian.com>
 
6025
 
 
6026
        * xaml.cpp: ContentProperty should be on the ElementInfo not the
 
6027
        ElementInstance, since you can only have one content property per
 
6028
        a type.
 
6029
 
 
6030
2008-06-10  Geoff Norton  <gnorton@novell.com>
 
6031
        
 
6032
        * mms-downloader.cpp: Fix some looping logic when seeking (partially
 
6033
        fixed).  Fix a typo when enumerating the streams array to not exceed
 
6034
        the bounds.
 
6035
 
 
6036
2008-06-10  Jackson Harper  <jackson@ximian.com>
 
6037
 
 
6038
        * xaml.cpp: Remove default prefix override check.  This must have
 
6039
        only been in one of the early versions of SL because I can't get
 
6040
        SL to do it anymore.  This helps fix video page turn.
 
6041
 
 
6042
2008-06-10  Jackson Harper  <jackson@ximian.com>
 
6043
 
 
6044
        * xaml.cpp: Remove x:Code since this isn't used in SL 2.0.
 
6045
 
 
6046
2008-06-10  Chris Toshok  <toshok@ximian.com>
 
6047
 
 
6048
        * dependencyobject.h, dependencyobject.cpp: split the Emit()
 
6049
        machinery up into 3 methods.  StartEmit, DoEmit, and FinishEmit.
 
6050
        StartEmit returns a context object passed to the other two
 
6051
        methods.
 
6052
 
 
6053
        * runtime.h, runtime.cpp: use the new
 
6054
        EventObject::{Start,Do,Finish}Emit methods to make event bubbling
 
6055
        more transactional - any changes made to the listener list for the
 
6056
        event we're bubbling up, for any element in our input list, are
 
6057
        delayed until after the event has propagated.  Fixes our test id
 
6058
        191 (test-bubbling.html) as well as bug #351568.
 
6059
 
 
6060
2008-06-10  Sebastien Pouliot  <sebastien@ximian.com>
 
6061
 
 
6062
        * shape.cpp|h: Don't call ComputeShapeBounds(true) unless we need
 
6063
        its value (i.e. Stretch != None). Make Shape::ComputeShapeBounds
 
6064
        reuse it's physical bounds for logical instead of computing it 
 
6065
        twice.
 
6066
 
 
6067
2008-06-10  Michael Dominic K.  <mdk@mdk.am>
 
6068
 
 
6069
        * animation.cpp:
 
6070
        * animation.h:
 
6071
        * clock.cpp:
 
6072
        * clock.h: Replacing CreateClock with AllocateClock implementation and
 
6073
        making sure the latter is called for Storyboards. That fixes the nested
 
6074
        storyboards inside other storyboards...
 
6075
        test-animation-nested-storyboard.xaml and one step more for
 
6076
        AnimationMatrix2.
 
6077
 
 
6078
2008-06-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6079
 
 
6080
        * dependencyobject.h: Another greppable comment.
 
6081
 
 
6082
2008-06-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6083
 
 
6084
        * dependencyobject.cpp: Add comment to assert which shows up while
 
6085
          grepping.
 
6086
 
 
6087
2008-06-06  Geoff Norton  <gnorton@novell.com>
 
6088
 
 
6089
        * file-downloader.h: Fix a bug between argument sending and class
 
6090
        variables that was causing us to free and strdup the free'd pointer.
 
6091
 
 
6092
2008-06-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6093
 
 
6094
        * mms-downloader.cpp: Return NULL from GetDownloadedFilename and
 
6095
          GetResponseText.
 
6096
 
 
6097
2008-06-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6098
 
 
6099
        * src.mdp: Updated.
 
6100
 
 
6101
2008-06-06  Jeffrey Stedfast  <fejj@novell.com>
 
6102
 
 
6103
        * xaml.cpp: Don't use the c++ ctor initializer stuff, it breaks if
 
6104
        members change order (like it did recently).
 
6105
        (wrap_dependency_object): Get rid of unused variables.
 
6106
 
 
6107
        * media.cpp (Image): Made bools share a single int.
 
6108
 
 
6109
2008-06-06  Jackson Harper  <jackson@ximian.com>
 
6110
 
 
6111
        * xaml.cpp: Use the Type system for looking up elements, make
 
6112
        things a little more OOP so we can easily add some of the 2.0
 
6113
        features.  Note:  This is going to break x:Code and deployment
 
6114
        temporarily.
 
6115
        
 
6116
2008-06-05  Geoff Norton  <gnorton@novell.com>
 
6117
 
 
6118
        * downloader.cpp, downloader.h: More refactoring to hide the zip related
 
6119
        details in the FileDownloader.  NOTE: The exposure of the file downloader
 
6120
        to the Text side is ugly and should be cleaned up.
 
6121
        * text.cpp: Access obfuscated font details thru the FileDownloader API.
 
6122
        * file-downloader.cpp, mms-downloader.cpp, internal-downloader.h: Expose
 
6123
        the filename thru the downlodaer api.
 
6124
        * downloader.cpp: No longer leak InternalDownloaders.
 
6125
 
 
6126
2008-06-05  Geoff Norton <gnorton@novell.com>
 
6127
 
 
6128
        * mms-downloader.cpp, mms-downloade.h: Implement time measuring of
 
6129
        the $P packet pair, and implement and initial algorithm to do proper
 
6130
        bandwidth stream selection.
 
6131
 
 
6132
2008-06-05  Geoff Norton <gnorton@novell.com>
 
6133
        
 
6134
        * downloader.cpp:  Remove some left over unused variables, and the
 
6135
        is_valid_mms_type inline.
 
6136
 
 
6137
2008-06-05  Geoff Norton <gnorton@novell.com>
 
6138
 
 
6139
        * Makefile.am: Add file-downloader and mms-downloader to the build.
 
6140
        * file-downloader.(cpp|h): This class is a implementation of the new
 
6141
        InternalDownloader class utilized by the downloader to differentiate
 
6142
        between MMS and regular requests.  We should move the zip logic here.
 
6143
        * mms-downloader.(cpp|h): This class is the MMS implementation of the
 
6144
        InternalDownloader class.
 
6145
        * internal-downloader.h: Route callbacks from the plugin thru this class
 
6146
        to their appropriate file (NPStream) / MMS based implementations.
 
6147
        * downloader.cpp: Update the API to call the InternalDownloader based
 
6148
        representation instead of large if (mms) branches.
 
6149
 
 
6150
2008-06-05  Geoff Norton  <gnorton@novell.com>
 
6151
 
 
6152
        * downloader.cpp, downloader.h:  Initial implementation of MMS inside
 
6153
        libmoon.  The API has been extended to register two additional callbacks
 
6154
        to set HTTP headers, and the HTTP body.
 
6155
 
 
6156
2008-06-05  Michael Dominic K.  <mdk@mdk.am>
 
6157
 
 
6158
        * xaml.cpp: Removing the "broken parsing" of RepeatBehavior in
 
6159
        --with-compatibility-bugs mode. It looks like the parsing is fine. The
 
6160
        bug is now "implemented" in clock.cpp.
 
6161
 
 
6162
2008-06-05  Michael Dominic K.  <mdk@mdk.am>
 
6163
 
 
6164
        * clock.cpp: In ComputeNewTime when we're going over our duration time
 
6165
        and we're AutoReversed, check actually how big the diff is cause it
 
6166
        might be that we need to "wrap around self" and switch to forward time
 
6167
        direction anyways (such is the case with seeking). 
 
6168
 
 
6169
        In other words, allow to seek into particular interation of
 
6170
        RepeatBehavior="XXXx", not only the first one. Fixes one more
 
6171
        AnimationMatrix2 block and seek-test-multiple-repeat.xaml in assorted.
 
6172
 
 
6173
        This prolly needs a littlbe bit more work still, similiar mechanism
 
6174
        needs to be present in DoRepeat etc.
 
6175
 
 
6176
2008-06-05  Stephane Delcroix  <sdelcroix@novell.com>
 
6177
 
 
6178
        * stylus.cpp: fixing a bug. stupid me.
 
6179
 
 
6180
2008-06-05  Stephane Delcroix  <sdelcroix@novell.com>
 
6181
 
 
6182
        * rect.h: new Rect (Point, Point) ctor, new ExtendTo (point) and
 
6183
        ExtendTo (double, double) methods.
 
6184
 
 
6185
        * stylus.h|cpp: new StylusPointCollection::GetBounds (), check for
 
6186
        intersection of bounds and StylusPointCollection::GetBounds in HitTest
 
6187
        to avoid checking for stroke intersection in most of the cases. Speed
 
6188
        up erasing in inkJournal.
 
6189
 
 
6190
2008-06-04  Michael Dominic K.  <mdk@mdk.am>
 
6191
 
 
6192
        * clock.cpp: Interesting -- looks like in SL the timespan-based 
 
6193
        RepeatBehavior is scaled by the SpeedRatio. Ie. 00:00:10 with SpeedRatio
 
6194
        0.5 becomes 00:00:05. I wonder if it's a bug or intended feature?
 
6195
        Anyways, implementing this and fixing two more blocks in
 
6196
        AnimationMatrix2.
 
6197
 
 
6198
2008-06-04  Michael Dominic K.  <mdk@mdk.am>
 
6199
 
 
6200
        * clock.cpp: Slightly reworking the seek offsett calculations to include
 
6201
        the SpeeRatio multiplier but do not apply it to BeginTime. Fixes one
 
6202
        more block in AnimationMatrix2 and the test-seek-spee-ratio-begin.xaml
 
6203
        assorted test.
 
6204
 
 
6205
2008-06-04  Michael Dominic K.  <mdk@mdk.am>
 
6206
 
 
6207
        * clock.cpp: When seeking include the SpeedRatio calculations. Fixes the
 
6208
        test-seeking-speed-ratio.xaml from assorted tests and one more block in
 
6209
        the AnimationMatrix2 test. 
 
6210
 
 
6211
2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
 
6212
 
 
6213
        * control.cpp (user_control_new): %p does what %x was trying to do
 
6214
        in this case, but without compile warnings :)
 
6215
 
 
6216
2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
 
6217
 
 
6218
        Glyphs rendering optimization.
 
6219
 
 
6220
        * text.cpp (Glyphs::Layout): Accumulate the glyph paths here
 
6221
        instead of re-looping this logic again in Glyphs::Render().
 
6222
        (Glyphs::Render): Just blit the path.
 
6223
 
 
6224
2008-06-03  Chris Toshok  <toshok@ximian.com>
 
6225
 
 
6226
        * dependencyobject.cpp (DependencyObject::SetValue): Simplify this
 
6227
        a bunch and remove all the redundant checks.
 
6228
        
 
6229
        (DependencyObject::MergeTemporaryNameScopes): merge both DO and
 
6230
        Collection versions into the same method to reduce code
 
6231
        duplication.
 
6232
 
 
6233
        * dependencyobject.h: no need to provide multiple overloads for
 
6234
        MergeTemporaryNameScopes.
 
6235
 
 
6236
2008-06-03  Jeffrey Stedfast  <fejj@novell.com>
 
6237
 
 
6238
        Text rendering optimization via reduction of font loading.
 
6239
 
 
6240
        * font.cpp (FontFace): A new abstraction for FT_Face which is
 
6241
        meant to prevent Moonlight from ahving to load the same font face
 
6242
        multiple times just because the FontSize attributes don't match.
 
6243
        (TextFont): Greatly simplified this class by using FontFace.
 
6244
 
 
6245
2008-06-02  Jackson Harper  <jackson@ximian.com>
 
6246
 
 
6247
        * xaml.cpp: Make sure we don't try to look up Content Properties
 
6248
        on anything but elments.  Property elements are given the
 
6249
        XamlElementInfo of their parent so GetContentProperty on a
 
6250
        PROPERTY element will return the parent's content property.
 
6251
 
 
6252
2008-06-02  Michael Dominic K.  <mdk@mdk.am>
 
6253
 
 
6254
        * clock.cpp: If we have duration-based RepeatBehavior set the
 
6255
        repeat_count to 1 in bug-mode (--with-compatibility-bugs).
 
6256
 
 
6257
2008-06-02  Michael Dominic K.  <mdk@mdk.am>
 
6258
        
 
6259
        * xaml.cpp: SL seems to correctly parse 0:0:0 TimeSpans in "bug-mode"
 
6260
        even.
 
6261
 
 
6262
        * clock.cpp: Remove the RepeatBehavior=1.0 forcing in Validate when
 
6263
        RepeatBehavior=0:0:0.
 
6264
 
 
6265
2008-06-02  Michael Dominic K.  <mdk@mdk.am>
 
6266
 
 
6267
        * clock.cpp: Even more timeline validation rules.
 
6268
 
 
6269
2008-06-02  Sebastien Pouliot  <sebastien@ximian.com>
 
6270
 
 
6271
        * font.cpp: Use the existing DOUBLE_FROM_26_6 instead of dividing
 
6272
        by 64.0 since this makes it clear why we're doing it.
 
6273
 
 
6274
2008-05-30  Michael Dominic K.  <mdk@mdk.am>
 
6275
 
 
6276
        * clock.cpp: Don't validate animations that have Duration of "00:00:00"
 
6277
        and RepeatBehavior="Stop". That is what SL does. Fixes the clock41.xaml
 
6278
        test.
 
6279
 
 
6280
2008-05-30  Michael Dominic K.  <mdk@mdk.am>
 
6281
 
 
6282
        * xaml.cpp: Adding a compatibility option
 
6283
        (--with-compatibility-bugs=yes) that introduces a Silverlight 1.0
 
6284
        RepeatBehavior bug.
 
6285
 
 
6286
2008-05-30  Michael Dominic K.  <mdk@mdk.am>
 
6287
 
 
6288
        * clock.cpp: Ceil the delta and ret_time. This is a very poor-man's
 
6289
        protection against the desync's coming from integers (TimeSpan) being
 
6290
        multiplied by floating values (SpeedRatio). Better to be non-precise
 
6291
        forward than backward.
 
6292
 
 
6293
2008-05-30  Michael Dominic K.  <mdk@mdk.am>
 
6294
 
 
6295
        * clock.cpp: The initial ticking difference needs to be multiplied by
 
6296
        the SpeedRatio as well. This fixes few timing desyncs. Fixes
 
6297
        clock40.xaml, test-animation-hold-stop-speed.xaml and the RoyalBlue
 
6298
        block from the AnimationMatrix2.
 
6299
 
 
6300
2008-05-29  Jeffrey Stedfast  <fejj@novell.com>
 
6301
        
 
6302
        * media.cpp (Image::OnPropertyChanged): Just like MediaElement, if
 
6303
        you set an Image's Source property to an empty string (or null),
 
6304
        it stops rendering the image.
 
6305
 
 
6306
2008-05-29  Stephane Delcroix  <sdelcroix@novell.com>
 
6307
 
 
6308
        * stylus.cpp: fix intersect_line_2d to fix the inkJournal thing.
 
6309
 
 
6310
2008-05-29  Jeffrey Stedfast  <fejj@novell.com>
 
6311
 
 
6312
        * layout.cpp|h (TextRun::IsUnderlined): Replacement for
 
6313
        TextLayout::IsUnderline().
 
6314
        (TextLayout::IsUnderline): Removed.
 
6315
 
 
6316
        * font.h (enum TextDecorations): Add a comment explaining that
 
6317
        this is meant to be used as bit flags and not a normal
 
6318
        enumeration.
 
6319
 
 
6320
2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
 
6321
 
 
6322
        * font.h: Revert TextWrapping change as it regress DRT tests
 
6323
        (it's possible that the value were right, but did not match
 
6324
        the managed value used by Silverlight 1.1).
 
6325
 
 
6326
2008-05-29  Jackson Harper  <jackson@ximian.com>
 
6327
 
 
6328
        * type.cpp: INVALID types don't have content properties.
 
6329
        * dependencyobject.h: Content properties are stored on the Type so
 
6330
        we don't need to store them here.
 
6331
        * xaml.cpp: Get content properties from the Type system instead of
 
6332
        the parser's internal type map.
 
6333
        - We don't need to do any special handling in the start_element
 
6334
        handler for content properties anymore.
 
6335
        * control.cpp|h: We don't need to expose the content property
 
6336
        anymore.
 
6337
        - Mark the content property for controls.
 
6338
        
 
6339
2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
 
6340
 
 
6341
        * font.h: Fix enum values for TextWrapping
 
6342
        * layout.cpp: Fix regression (in earlier commit) for wrapping.
 
6343
 
 
6344
2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6345
 
 
6346
        * debug.cpp: Fix an invalid read issue found with valgrind.
 
6347
 
 
6348
2008-05-29  Sebastien Pouliot  <sebastien@ximian.com>
 
6349
 
 
6350
        * layout.h|cpp: Handle invalid values for TextDecorations and
 
6351
        TextWrapping like Silverlight does.
 
6352
 
 
6353
2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6354
 
 
6355
        * runtime.cpp: When setting the background color delete any previoys
 
6356
          background color.
 
6357
 
 
6358
2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6359
 
 
6360
        * uielement.cpp: Fix minor leak.
 
6361
 
 
6362
2008-05-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6363
 
 
6364
        * src.mdp: Updated.
 
6365
 
 
6366
2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6367
 
 
6368
        * http-streaming.cpp: Handle quoted feature strings.
 
6369
 
 
6370
2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6371
 
 
6372
        * downloader.cpp: Null out request_position in the ctor.
 
6373
 
 
6374
2008-05-28  Michael Dominic K.  <mdk@mdk.am>
 
6375
 
 
6376
        * clock.cpp: Reverting the change that invalidates the timelines which
 
6377
        have 00:00:00 duration. It is actually supported by SL. 
 
6378
 
 
6379
2008-05-28  Michael Dominic K.  <mdk@mdk.am>
 
6380
 
 
6381
        * clock.cpp: In Clock::ComputeNewTime all those checks are useless.
 
6382
        Multiply always instead of recursing down into properties.
 
6383
 
 
6384
2008-05-28  Michael Dominic K.  <mdk@mdk.am>
 
6385
 
 
6386
        * animation.cpp: If "To" and "By" are not specified use the
 
6387
        defaultOriginValue always instead of "start" (which might be "From").
 
6388
        Fixes the test-animation-only-from.xaml and the green block in
 
6389
        AnimationMatrix2.
 
6390
 
 
6391
2008-05-28  Michael Dominic K.  <mdk@mdk.am>
 
6392
 
 
6393
        * clock.cpp: When Validating the timeline, if RepeatBehavior is
 
6394
        incorrect make it 1.0 instead of marking the timeline as invalid.
 
6395
 
 
6396
2008-05-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6397
        
 
6398
        * downloader.cpp: Fix typo.
 
6399
 
 
6400
2008-05-28  Sebastien Pouliot  <sebastien@ximian.com>
 
6401
 
 
6402
        * enums.c: Fix None value in style_simulations_map and remove
 
6403
        unneeded one (they exists only in WPF but SL parser does not like
 
6404
        them).
 
6405
        * font.cpp|h: Fix FontStyle and FontWeigth properties when the 
 
6406
        supplied value are invalid. Add new constants specific to SL.
 
6407
        * text.h: Add simulation_none. Share an integer between all bool
 
6408
        flags.
 
6409
        * text.cpp: Invalid values for StyleSimulation does not render
 
6410
        the Glyphs.
 
6411
        * runtime.cpp: Invalid MouseCursor values hides the cursor.
 
6412
 
 
6413
2008-05-27  Jeffrey Stedfast  <fejj@novell.com>
 
6414
 
 
6415
        Fixes the Legend (Space Invaders) demo without breaking
 
6416
        storyboard_EnterLeaveSemantics.htm.
 
6417
 
 
6418
        * clock.cpp|h (Clock::Completed): New virtual method which gets
 
6419
        called when a clock completes.
 
6420
        (Clock::ComputeNewTime): If a clock completes (has no more
 
6421
        repeats, etc) then call ::Complete().
 
6422
        (ClockGroup::ClockGroup): Changed the name of emitted_complete to
 
6423
        emit_completed which has also changed the meaning a bit.
 
6424
        (ClockGroup::Begin): Updated.
 
6425
        (ClockGroup::RaiseAccumulatedEvents): If emit_completed is true,
 
6426
        then emit the Completed event and reset emit_completed back to
 
6427
        false so we don't re-emit.
 
6428
        (ClockGroup::Completed): Set emit_completed to true.
 
6429
 
 
6430
2008-05-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6431
 
 
6432
        * media.cpp: MediaElement: Fix refcounting for our 'media' field. In
 
6433
          DownloaderComplete only emit DownloadProgressChangedEvent if we
 
6434
          have a surface.
 
6435
 
 
6436
2008-05-27  Michael Dominic K.  <mdk@mdk.am>
 
6437
 
 
6438
        * xaml.cpp: Adding a comment/explanation about the RepeatBehavior and
 
6439
        Silverlight 1.0/2.0 situation.
 
6440
 
 
6441
2008-05-26  Michael Dominic K.  <mdk@mdk.am>
 
6442
 
 
6443
        * clock.cpp: Don't validate timelines that have specified duration of
 
6444
        00:00:00. Fixes the test-animation-zero-duration test.xaml.
 
6445
 
 
6446
2008-05-26  Michael Dominic K.  <mdk@mdk.am>
 
6447
 
 
6448
        * clock.cpp:
 
6449
        * clock.h: When Validating the Timeline also make sure that the
 
6450
        RepeatBehavior is correct, otherwise don't start the anim. Fixes the
 
6451
        test-animation-zero-repeat-behavior test and brings us closer with
 
6452
        AnimationMatrix2 test.
 
6453
 
 
6454
2008-05-26  Michael Dominic K.  <mdk@mdk.am>
 
6455
 
 
6456
        * clock.cpp: When Validating TimelineGroup don't forget to call parent's
 
6457
        base validation method.
 
6458
 
 
6459
2008-05-26  Michael Dominic K.  <mdk@mdk.am>
 
6460
 
 
6461
        * xaml.cpp: Reverting spouliot's commit from 2008-05-08. It looks like
 
6462
        SL supports the RepeatBehavior="XX:XX:XX" just fine. This fixes the
 
6463
        test-aniamtion-repeat-behavior.xaml test.
 
6464
 
 
6465
2008-05-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6466
 
 
6467
        * src.mdp: Updated.
 
6468
 
 
6469
2008-05-23  Sebastien Pouliot  <sebastien@ximian.com>
 
6470
 
 
6471
        * text.cpp: (Glyphs::InsideObject) Avoid expensive, and unneeded,
 
6472
        cairo_save/cairo_restore since we don't use the context.
 
6473
 
 
6474
2008-05-23  Stephane Delcroix  <sdelcroix@novell.com>
 
6475
 
 
6476
        * dependencyobject.[h|cpp]: merge namescopes on SetValue.
 
6477
 
 
6478
2008-05-23  Jeffrey Stedfast  <fejj@novell.com>
 
6479
 
 
6480
        * font.cpp (TextFont::PixelsPerEM): Removed, the logic was broken.
 
6481
 
 
6482
        * text.cpp (Glyphs::Layout): Reverted previous commit and go back
 
6483
        to the magic math.
 
6484
        (Glyphs::Render): Same.
 
6485
 
 
6486
2008-05-22  Chris Toshok  <toshok@ximian.com>
 
6487
 
 
6488
        * stylus.h, stylus.cpp (Stroke::HitTest): correct our width/height
 
6489
        code.  Only include the +2 to each side if the outline color is
 
6490
        non-transparent.
 
6491
        (Stroke::AddStylusPointToBounds): same.
 
6492
        (Stroke::OnPropertyChanged): new method.  we need to recompute the
 
6493
        bounds if our DrawingAttributes change.
 
6494
        (Stroke::OnSubPropertyChanged): same, if width/height/online-color
 
6495
        of the drawing attributes change.
 
6496
 
 
6497
2008-05-22  Sebastien Pouliot  <sebastien@ximian.com>
 
6498
 
 
6499
        * brush.cpp: Fix defaults when wrong values are being used for
 
6500
        enumerations from Javascript.
 
6501
        [Fix part of #340799]
 
6502
 
 
6503
2008-05-22  Jackson Harper  <jackson@ximian.com>
 
6504
 
 
6505
        * dependencyobject.cpp: Only merge temp namescopes.
 
6506
 
 
6507
2008-05-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6508
 
 
6509
        * dependencyobject.cpp, dependencyobject.h: EventObject: instead of
 
6510
          surrounding event emission with ref/unref, set a flag specifying
 
6511
          that we're doing event emission, and catch unrefs which would cause
 
6512
          object destruction replacing them with a delayed unref.
 
6513
 
 
6514
2008-05-21  Chris Toshok  <toshok@ximian.com>
 
6515
 
 
6516
        * collection.cpp (Collection::Add): remove the check for AddToList
 
6517
        returning -1.  It never will.  Also, call SetSurface() on the new
 
6518
        child *before* we create the Collection::Node for it, so we can
 
6519
        tell (in SetSurface) if it's being added individually to the
 
6520
        surface, or as part of a subtree.  This is required to fix
 
6521
        storyboard_EnterLeaveSemantics.
 
6522
 
 
6523
        * animation.cpp (Storyboard::SetSurface): resume the clock when
 
6524
        we're reattached to the surface, but *only* if we're being added
 
6525
        as part of a subtree (that is, we already have a logical parent
 
6526
        when we hit this method.)
 
6527
 
 
6528
        * clock.cpp (Clock::Begin): revert the previous
 
6529
        change (has_started needs to be initialized to false).  Required
 
6530
        to fix storyboard_EnterLeaveSemantics.htm.  We'll need to figure
 
6531
        out another way to fix the site (or a better way that fixes one
 
6532
        without breaking the other.)
 
6533
 
 
6534
2008-05-21  Jeffrey Stedfast  <fejj@novell.com>
 
6535
 
 
6536
        * text.cpp (Glyphs::Layout): Use PixelsPerEM() instead of
 
6537
        hard-coding the EM units ourselves.
 
6538
        (Glyphs::Render): Same.
 
6539
 
 
6540
        * font.cpp (TextFont::PixelsPerEM): New convenience function.
 
6541
 
 
6542
        * clock.cpp (Clock::Begin): Init has_started to true. Fixes
 
6543
        http://www.tek.co.jp/Legend
 
6544
 
 
6545
        * animation.cpp (Storyboard::storyboard_completed): Merged
 
6546
        teardown_clockgroup() and invoke_completed() into a single
 
6547
        callback. Also makes it so that we don't have to remove 2
 
6548
        CompletedEvent handlers (which we were not doing properly afaict
 
6549
        in Storyboard::Stop).
 
6550
        (Storyboard::Stop): After unregistering the CompletedEvent handler
 
6551
        and stopping the root_clock, tear down the clock group.
 
6552
 
 
6553
2008-05-21  Larry Ewing  <lewing@novell.com>
 
6554
 
 
6555
        * shape.cpp (Ellipse::BuildPath): try to shape our degenerate
 
6556
        ellipses a little better.
 
6557
        (Shape::ComputeStretchBounds): modify the needs_clip logic a
 
6558
        little to catch the degenerate ellipse cases we were running into.
 
6559
 
 
6560
        Fixes test-shape-ellipse-stroke*.xaml.
 
6561
 
 
6562
2008-05-21  Michael Dominic K.  <mdk@mdk.am>
 
6563
 
 
6564
        * clock.cpp: Include the offsett coming from the BeginTime in the
 
6565
        seek_time calculations. Fixes seek-test-begin-time and
 
6566
        seek-test-wrapping-set tests. Brings us closer with AnimationMatrix2.
 
6567
 
 
6568
2008-05-21  Michael Dominic K.  <mdk@mdk.am>
 
6569
 
 
6570
        * clock.cpp: Actually do set the seek_time before using it.
 
6571
 
 
6572
2008-05-21  Michael Dominic K.  <mdk@mdk.am>
 
6573
 
 
6574
        * clock.cpp: When seeking ClockGroup, don't seek children as weel
 
6575
        (results in cumulative behavior).
 
6576
 
 
6577
2008-05-21  Sebastien Pouliot  <sebastien@ximian.com>
 
6578
 
 
6579
        * font.cpp: (TextFont::Path) Avoid expensive save of cairo 
 
6580
        context since only the transform is changed (current point 
 
6581
        location is not part of the context).
 
6582
 
 
6583
2008-05-20  Larry Ewing  <lewing@novell.com>
 
6584
 
 
6585
        * runtime.cpp (Surface::motion_notify_callback): always return
 
6586
        true in the windowed motion handler otherwise we something steals
 
6587
        mouse events from us.
 
6588
 
 
6589
        Fixes most of MouseInput.htm
 
6590
 
 
6591
2008-05-20  Michael Dominic K.  <mdk@mdk.am>
 
6592
 
 
6593
        * clock.cpp: Fixing a problem where timeline with BeginTime set do not
 
6594
        respond at all to Seek. Brings us closer with AnimationMatrix2.
 
6595
 
 
6596
2008-05-19  Jackson Harper  <jackson@ximian.com>
 
6597
 
 
6598
        * xaml.cpp: Only do the type wrapping if we are dealing with
 
6599
        collection types, otherwise we just ignore the property decl.
 
6600
 
 
6601
2008-05-19  Jackson Harper  <jackson@ximian.com>
 
6602
 
 
6603
        * xaml.cpp: When we wrap a property we need to ignore the property
 
6604
        element so that the children get added to the wrapped object
 
6605
        properly.
 
6606
        * dependencyobject.cpp: We also need to merge the collection's
 
6607
        namescope because collections can be created with their own temp
 
6608
        namescope using createFromXaml.
 
6609
        
 
6610
2008-05-19  Michael Dominic K.  <mdk@mdk.am>
 
6611
 
 
6612
        * animation.cpp:
 
6613
        * animation.h:
 
6614
        * clock.cpp:
 
6615
        * clock.h: Changing ExtraRepeatHandler to ExtraRepeatAction to avoid
 
6616
        confusion.
 
6617
 
 
6618
2008-05-19  Michael Dominic K.  <mdk@mdk.am>
 
6619
 
 
6620
        * animation.cpp:
 
6621
        * animation.h: Adding an implementation for ExtraRepeatHandler to
 
6622
        AnimationClock that fetches target value and sets it on
 
6623
        AnimationStorage. Fixes clock37.xaml test.
 
6624
 
 
6625
2008-05-19  Michael Dominic K.  <mdk@mdk.am>
 
6626
 
 
6627
        * animation.cpp:
 
6628
        * animation.h: Adding helper methods to get target value out of the
 
6629
        given AnimationTimeline. We're still missing implementations for
 
6630
        keyframe-based anims. Coming soon.
 
6631
 
 
6632
2008-05-19  Michael Dominic K.  <mdk@mdk.am>
 
6633
 
 
6634
        * animation.cpp:
 
6635
        * animation.h: Adding two helper methods to AnimationStorage:
 
6636
        GetStopValue (get's current base or (if set) stop value) and
 
6637
        UpdatePropertyWithValue to manually force prop to a given state.
 
6638
 
 
6639
2008-05-19  Michael Dominic K.  <mdk@mdk.am>
 
6640
 
 
6641
        * clock.cpp:
 
6642
        * clock.h: Addin a virtual ExtraRepeatHandler to Clock class fired on
 
6643
        repeat. By default does nothing.
 
6644
 
 
6645
2008-05-19  Jackson Harper  <jackson@ximian.com>
 
6646
 
 
6647
        * xaml.cpp: When createFromXaml ('<some property>...</property>')
 
6648
        is called, we need to create and return an object that represents
 
6649
        that property.  ie createFromXaml ('<Canvas.Triggers>...); should
 
6650
        return a ResourceDictionary object.
 
6651
 
 
6652
2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6653
 
 
6654
        * downloader.cpp: Fix warnings.
 
6655
 
 
6656
2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6657
 
 
6658
        * clock.cpp: Added comment.
 
6659
 
 
6660
2008-05-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6661
 
 
6662
        * runtime.cpp: Destroy EventObject::objects_alive upon runtime
 
6663
          shutdown.
 
6664
 
 
6665
2008-05-16  Miguel de Icaza  <miguel@novell.com>
 
6666
 
 
6667
        * dependencyobject.h (DependencyObject::GetContentProperty):
 
6668
        returns a DependencyProperty that is the target for the content of
 
6669
        a XAML content assignment. 
 
6670
 
 
6671
        * xaml.cpp (XNamespace::SetAttribute): while hydrating, ignore the
 
6672
        Class attribute as the object has already been created. 
 
6673
 
 
6674
        (start_element): Add support for the ContentPropertyAttribute on
 
6675
        DependencyObjects to the XAML parser.       This is very primitive
 
6676
        support at this point, and does not support collections, or type
 
6677
        conversions as specified on the docs. 
 
6678
 
 
6679
        * control.cpp (Control::SetContent): Refactor setting the
 
6680
        real_object into its own routine.     Currently takes a Surface
 
6681
        parameter, not clear that this is even needed, but kept for
 
6682
        compatibility with the old code. 
 
6683
 
 
6684
        (UserControl::OnPropertyChanged): Hook up setting the Content
 
6685
        property.
 
6686
 
 
6687
        * runtime.cpp (Surface::Attach): Let the widget be UIElement.
 
6688
 
 
6689
2008-05-16  Larry Ewing  <lewing@novell.com>
 
6690
 
 
6691
        * shape.cpp: draw ellipses with no width/height specified as the
 
6692
        ms tests indicate.
 
6693
 
 
6694
        Fixes StretchAndShapes.xaml.
 
6695
 
 
6696
2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6697
 
 
6698
        * media.cpp: Abort the downloader when we emit MediaFailed, and always
 
6699
          emit a DownloadProgressChangedEvent with 1.0 when we're finished
 
6700
          downloading (we won't get any writes if the file has already been
 
6701
          downloaded and mozilla just gives us the filename).
 
6702
 
 
6703
2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6704
 
 
6705
        * src.mdp: Updated.
 
6706
 
 
6707
2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6708
 
 
6709
        * downloader.cpp: Don't emit any events if we don't have a surface. Add
 
6710
          warnings to Send(Internal) when we have no surface (the plugin is
 
6711
          already checking for it, so if the warning is printed we're doing
 
6712
          something else wrong).
 
6713
        * runtime.h, runtime.cpp: Surface: keep a list of the downloaders we
 
6714
          create, and when the toplevel canvas changes or the surface is
 
6715
          destroyed clear the downloader's surface pointer.
 
6716
 
 
6717
2008-05-16  Jeffrey Stedfast  <fejj@novell.com>
 
6718
 
 
6719
        * downloader.cpp (Downloader::Abort): Set download progress to 0.
 
6720
 
 
6721
2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6722
 
 
6723
        * downloader.cpp: Don't emit nor set DownloadProgress(ChangedEvent) in
 
6724
          NotifySize, mozilla calls NotifySize for every write.
 
6725
 
 
6726
2008-05-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6727
 
 
6728
        * type.cpp, type.h, type.h.in: Added Type::LookupEventName.
 
6729
 
 
6730
2008-05-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6731
 
 
6732
        * playlist.cpp: If we're stopping a playlist, reopen the first entry.
 
6733
        * media.h: MediaElement: Make EmitMediaOpened and Reinitialize public
 
6734
          so that Playlist can call them.
 
6735
 
 
6736
2008-05-15  Larry Ewing  <lewing@novell.com>
 
6737
 
 
6738
        * runtime.cpp (Surface::button_press_callback): stop firefox from
 
6739
        stealing our focus in the widget case by always returning true on
 
6740
        button press events.  There may be a better way to handle this by
 
6741
        only returning true if the press lands on and element but this at
 
6742
        least improves the situation.
 
6743
 
 
6744
        Fixes FullScreenKey.htm.
 
6745
 
 
6746
2008-05-15  Michael Dominic K.  <mdk@mdk.am>
 
6747
 
 
6748
        * clock.cpp: Also apply the idle_hint when the ClockGroup itself goes to
 
6749
        Filling state, this makes the idle optimization cover all the cases. Big
 
6750
        perf boost expected.
 
6751
        
 
6752
2008-05-14  Jeffrey Stedfast  <fejj@novell.com>
 
6753
 
 
6754
        Fix for tests/xaml/test-directory-in-zip.html
 
6755
 
 
6756
        * media.cpp (Image::Image): Initialize some new state variables to
 
6757
        keep track of whether or not the FrameworkElement::Width and
 
6758
        Height values are ever manually set.
 
6759
        (Image::DownloaderComplete): Properly set the Width/Height
 
6760
        property values based on whether a particular Width/Height have
 
6761
        been requested. Use the image's native width/height if not.
 
6762
        (Image::OnPropertyChanged): Listen for changes to Width/Height
 
6763
        properties.
 
6764
 
 
6765
2008-05-14  Larry Ewing  <lewing@novell.com>
 
6766
 
 
6767
        * src/uielement.cpp (UIElement::PostRender): clear any existing
 
6768
        paths when rendering the bounds rectangle.
 
6769
 
 
6770
2008-05-14  Jeffrey Stedfast  <fejj@novell.com>
 
6771
 
 
6772
        * media.cpp (MediaElement::MediaOpened): Use GetAutoPlay() instead
 
6773
        of the more complex GetValue API.
 
6774
 
 
6775
        * pipeline.cpp (IMediaSource::ReadSome): Don't return false on
 
6776
        error, return -1 (since this is an int32 return value, not bool).
 
6777
 
 
6778
2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6779
 
 
6780
        * media.cpp, media.h: Added MediaElement::IsLive, and move
 
6781
          initialization of this field to before our MediaPlayer is opened.
 
6782
        * mplayer.cpp, mplayer.h: For live sources the first frame might not
 
6783
          come with pts = 0, so store that pts so that later we can correctly
 
6784
          calculate how much we've actually played.
 
6785
 
 
6786
2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6787
 
 
6788
        * mplayer.cpp, mplayer.h: Add support for Duration tags in ASX files.
 
6789
        * playlist.h, playlist.cpp: Added a PlaylistEntry::HasDuration method,
 
6790
          and skip entries with zero duration.
 
6791
 
 
6792
2008-05-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6793
 
 
6794
        * dependencyobject.cpp: EventObject::AddTickCall: make sure we release
 
6795
          the read lock if don't have a surface or timemanager.
 
6796
 
 
6797
2008-05-14  Michael Dominic K.  <mdk@mdk.am>
 
6798
 
 
6799
        * clock.cpp: No need to SoftStop the ClockGroup itself (unlike the
 
6800
        children) on DoRepeat (). Fixes a small regression in clock21.xaml
 
6801
        introduced with last commit.
 
6802
 
 
6803
2008-05-14  Michael Dominic K.  <mdk@mdk.am>
 
6804
 
 
6805
        * clock.cpp:
 
6806
        * clock.h: Fixing a case for Clock when the clock has RepeatBehavior but
 
6807
        it doesn't start from 00:00:00. Fixes #388745 (clock22.xaml test).
 
6808
 
 
6809
2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6810
 
 
6811
        * runtime.cpp: Don't call Attach (NULL) in Surface::Zombify, it causes
 
6812
          crashes when javascript removes the plugin in an eventhandler.
 
6813
 
 
6814
2008-05-13  Jeffrey Stedfast  <fejj@novell.com>
 
6815
 
 
6816
        * media.cpp (MediaElement::DownloaderFailed): Make this more
 
6817
        easily extensible.
 
6818
 
 
6819
2008-05-13  Fernando Herrera  <fherrera@novell.com>
 
6820
 
 
6821
        * media.cpp: Fix mms:// and rtsp:// fallback uri rewrite.
 
6822
 
 
6823
2008-05-13  Jeffrey Stedfast  <fejj@novell.com>
 
6824
 
 
6825
        * media.cpp (MediaBase::SetSourceAsyncCallback): Prevent memory
 
6826
        corruption of the source.* variables by creating local references
 
6827
        to them and setting source.* to NULL before calling
 
6828
        SetSourceInternal().
 
6829
 
 
6830
2008-05-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6831
 
 
6832
        * clock.cpp, clock.h: Remove InvokeOnMainThread.
 
6833
        * dependencyobject.cpp, dependencyobject.h: EventObject: added
 
6834
          AddTickCall. Requred when adding ticks from other than the 
 
6835
          main thread.
 
6836
        * downloader.cpp: Send: use a TimeManager to add the timeout.
 
6837
        * media.cpp, media.h, mplayer.h, mplayer.cpp: Don't use
 
6838
          TimeManager::InvokeOnMainThread anymore, add the timeouts using a
 
6839
          TimeManager instance.
 
6840
 
 
6841
2008-05-12  Jeffrey Stedfast  <fejj@novell.com>
 
6842
 
 
6843
        * list.cpp (List::List): Init length to 0.
 
6844
        (List::Clear): Reset length to 0.
 
6845
        (List::Append): length++
 
6846
        (List::Prepend): length++
 
6847
        (List::Insert): length++
 
6848
        (List::InsertBefore): length++
 
6849
        (List::Unlink): length--
 
6850
        (List::Length): Fixed to be O(0) instead of O(n)
 
6851
 
 
6852
        * stylus.cpp (StrokeCollection::HitTest): Use List::IsEmpty()
 
6853
        instead of comparing List::Length() to 0.
 
6854
        (Stroke::HitTest): Same.
 
6855
 
 
6856
2008-05-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6857
 
 
6858
        * media.cpp: Set the MediaOpenedEmitted flag before emitting the event,
 
6859
          prevents us from emitting the event again as a consequence of what
 
6860
          any of the event handlers do.
 
6861
 
 
6862
2008-05-12  Michael Dominic K.  <mdk@mdk.am>
 
6863
 
 
6864
        * animation.cpp:
 
6865
        * dependencyobject.cpp: Fix a crash due to bad destroy recursion.
 
6866
 
 
6867
2008-05-12  Michael Dominic K.  <mdk@mdk.am>
 
6868
 
 
6869
        * animation.cpp:
 
6870
        * animation.h:
 
6871
        * dependencyobject.cpp:
 
6872
        * dependencyobject.h: Float the AnimationStorage only when it's the
 
6873
        current storage.
 
6874
 
 
6875
2008-05-12  Michael Dominic K.  <mdk@mdk.am>
 
6876
 
 
6877
        * animation.cpp:
 
6878
        * animation.h: Introduce floating state for animation storage that has
 
6879
        it's clock destroyed but it hasn't been stopped before. We need to keep the
 
6880
        animation storage (reffed from the DependencyProperty hash) around to be
 
6881
        able to get proper value for the next (continous) Storyboard on same
 
6882
        property. Fixes #383879 and #375275.
 
6883
 
 
6884
2008-05-09  Geoff Norton <gnorton@novell.com>
 
6885
 
 
6886
        * mplayer.cpp, pipeline.cpp, pipeline.h:  When iterating streams
 
6887
        ensure that we select the stream with the highest available bit
 
6888
        rate, opposed to the first stream that we come across.
 
6889
 
 
6890
2008-05-09  Jeffrey Stedfast  <fejj@novell.com>
 
6891
 
 
6892
        * dependencyobject.cpp (DependencyObject::FindName): Don't need
 
6893
        nested if/elses.
 
6894
 
 
6895
        * namescope.cpp (NameScope::FindName): Simplify.
 
6896
 
 
6897
2008-05-08  Larry Ewing  <lewing@novell.com>
 
6898
 
 
6899
        * shape.cpp: silence some warnings.
 
6900
 
 
6901
2008-05-08  Larry Ewing  <lewing@novell.com>
 
6902
 
 
6903
        * shape.h: remove ClipOnWidthAndHeight method, replace with
 
6904
        needs_clip variable.
 
6905
        
 
6906
        * shape.cpp (Shape::ComputeStretchBounds): set needs_clip based on
 
6907
        the actual size of the object before and after the stretch and the
 
6908
        stretch flags.  
 
6909
 
 
6910
        Speeds up Sprawl and a lot of other applications that use stretch
 
6911
        extensively.
 
6912
 
 
6913
2008-05-08  Larry Ewing  <lewing@novell.com>
 
6914
 
 
6915
        * runtime.cpp (Surface::expose_to_drawable): fill the background
 
6916
        instead of painting and don't create the clip until the rendering
 
6917
 
 
6918
2008-05-08  Miguel de Icaza  <miguel@novell.com>
 
6919
 
 
6920
        * xaml.cpp (xaml_hydrate_from_str): New method to hydrate an
 
6921
        existing DependencyObject with the contents of a XAML string.  
 
6922
 
 
6923
        Needed for Silverlight 2.0 support, for the new model:
 
6924
        create object then do LoadComponent on it.
 
6925
 
 
6926
2008-05-08  Sebastien Pouliot  <sebastien@ximian.com>
 
6927
 
 
6928
        * xaml.cpp: RepeatBehavior does not use the (documented) 0:0:0
 
6929
        notation.
 
6930
 
 
6931
2008-05-07  Jeffrey Stedfast  <fejj@novell.com>
 
6932
 
 
6933
        * font.cpp: Removed old layout code.
 
6934
        (TextFont::GetGlyphInfo): Updated to use some handy Fixed->Double
 
6935
        conversion macros to make understanding the code easier. Also,
 
6936
        added FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH bit flag to fix layout
 
6937
        of broken fixed-width CJK fonts.
 
6938
 
 
6939
        * clock.cpp (TimeManager::Stop): Added for convenience.
 
6940
        (SystemTimeSource::SystemTimeSource): Init frequency to -1 so we
 
6941
        can make sure it is init'd properly via SetTimerFrequency() before
 
6942
        Start()ing.
 
6943
 
 
6944
        * runtime.cpp (Surface::Attach): Call our time_manager's Start(),
 
6945
        not it's source's Start(). We need things like frequency to be
 
6946
        setup and other values to be initialized properly.
 
6947
        (Surface::Attach): After calling canvas->OnLoaded(), check that we
 
6948
        are not zombied - if we are, return.
 
6949
 
 
6950
2008-05-07  Larry Ewing  <lewing@novell.com>
 
6951
 
 
6952
        * runtime.cpp (Surface::Zombify): call Attach (NULL) to notify the
 
6953
        objects that the surface is undead.
 
6954
 
 
6955
2008-05-06  Jeffrey Stedfast  <fejj@novell.com>
 
6956
 
 
6957
        * animation.cpp (animation_shutdown): Renamed from
 
6958
        animation_destroy().
 
6959
 
 
6960
        * text.cpp (text_shutdown): Renamed from text_destroy().
 
6961
 
 
6962
        * clock.cpp: Don't include gtk.h for just gtk_timeout_add(),
 
6963
        include glib.h and use g_timeout_add() instead.
 
6964
        (SystemTimeSource::SystemTimeSource): Init the timeout_id to 0,
 
6965
        not -1 (the timeout ids are uint, not int).
 
6966
        (SystemTimeSource::SetTimerFrequency): Updated.
 
6967
        (SystemTimeSource::Start): Updated.
 
6968
        (SystemTimeSource::Stop): Updated.
 
6969
 
 
6970
        * list.cpp (List::Remove): Don't need to search for the node, we
 
6971
        already have a pointer to it.
 
6972
 
 
6973
2008-05-07  Larry Ewing  <lewing@novell.com>
 
6974
 
 
6975
        * runtime.cpp (Surface::Resize): handle a resize in windowless mode
 
6976
        gracefully.
 
6977
 
 
6978
        Fixes part of windowless resizing.
 
6979
        
 
6980
2008-05-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
6981
 
 
6982
        * media.cpp: Handle the rtsp protocol too.
 
6983
        * playlist.cpp, playlist.h: Store base and source_name as Uris.
 
6984
          Implement GetFullSourceName better, and do some uri validation.
 
6985
        * uri.h, uri.cpp: Added a allow_trailing_sep flag to Uri::Parse,
 
6986
          disables canonicalization of trailing directory separators since
 
6987
          asx playlists may treat urls differently depending on the presence
 
6988
          or absence of any trailing directory separators. Added Clone ().
 
6989
 
 
6990
2008-05-06  Michael Dominic K.  <mdk@mdk.am>
 
6991
 
 
6992
        * animation.cpp:
 
6993
        * animation.h: When attaching new animation storage and previous storage
 
6994
        exist, flag it as non-resetable (meaning that the storage will never
 
6995
        reset animated property to base/stop value). This fixes the
 
6996
        storyboard-stopping-two.html test.
 
6997
 
 
6998
2008-05-06  Michael Dominic K.  <mdk@mdk.am>
 
6999
 
 
7000
        * dependencyobject.cpp:
 
7001
        * dependencyobject.h: DependencyProperty::AttachAnimationStorage now
 
7002
        returns the previously attached AnimationStorage.
 
7003
 
 
7004
        * animation.cpp:
 
7005
        * animation.h: When attaching new animation storage try to inherit the
 
7006
        resetValue from the previously attached storage. Reset value is the
 
7007
        value that we reset to when storyboard is stopped (originally it always
 
7008
        used to be the base value of the current AnimationStorage). 
 
7009
 
 
7010
        This replicates the bahavior of SL where starting a new (second)
 
7011
        storyboard on a property renders the prev storyboard useless
 
7012
        (non updating the prop) but keeps it's "starting value" for storyboard
 
7013
        reset. In other words we can say that starting a new storyboard on a
 
7014
        prop makes this new storyboard a "continuation" of the prev storyboard.
 
7015
 
 
7016
2008-05-05  Larry Ewing  <lewing@novell.com>
 
7017
 
 
7018
        * runtime.cpp (Surface::render_cb): only call ForceRender if we
 
7019
        dirtied something.
 
7020
 
 
7021
2008-05-05  Larry Ewing  <lewing@novell.com>
 
7022
 
 
7023
        * runtime.cpp: update the (almost unused) frame count where it can
 
7024
        get hit in windowless.  Clear existing paths before rendering the
 
7025
        expose box.
 
7026
 
 
7027
        Minor cleanups to help with debugging the expose regions.
 
7028
 
 
7029
2008-05-05  Jeffrey Stedfast  <fejj@novell.com>
 
7030
 
 
7031
        * clock.cpp (TimeManager::Shutdown): Renamed from
 
7032
        TimeManager::Stop() and also updated to remove all registered
 
7033
        timeouts.
 
7034
 
 
7035
        * runtime.cpp (Surface): We no longer keep track of signal ids, we
 
7036
        simply remove all signals on the widgets with 'this' as the user
 
7037
        data.
 
7038
 
 
7039
        * clock.cpp (TimeManager::Stop): Added. New method to stop the
 
7040
        time manager.
 
7041
 
 
7042
        * runtime.cpp (Surface::Zombify): Stop the time manager, prevents
 
7043
        emission of timeout events.
 
7044
 
 
7045
2008-05-05  Michael Dominic K.  <mdk@mdk.am>
 
7046
 
 
7047
        * src/shape.cpp: Reverting sde's stretch thing for now, breaks a lot of
 
7048
        other stuff.
 
7049
 
 
7050
2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7051
 
 
7052
        * media.cpp, media.h, playlist.cpp, playlist.h: MediaElement: when
 
7053
          playing playlists, we only emit MediaEnded if we're playing the
 
7054
          last entry in the playlist. Call Playlist::OnEntryEnded manually
 
7055
          instead of letting the playlist rely on the MediaEnded event, since
 
7056
          the MediaEnded event isn't raised for all entries. Playlist: Added
 
7057
          IsCurrentEntryLastEntry.
 
7058
 
 
7059
2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7060
 
 
7061
        * media.cpp: MediaElement::UpdateProgress: Don't call BufferingComplete
 
7062
          until the pipeline got all the data it was waiting for.
 
7063
 
 
7064
2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7065
 
 
7066
        * media.cpp, media.h: Add an EmitMediaOpened method and emit
 
7067
          MediaOpened somewhat more aggressively, but only once.
 
7068
 
 
7069
2008-05-05  Jeffrey Stedfast  <fejj@novell.com>
 
7070
 
 
7071
        * text.cpp (Glyphs::GetSizeForBrush): Use this->width and
 
7072
        this->height for the brush size - fixes TextTransforms.xaml once
 
7073
        again.
 
7074
 
 
7075
2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7076
 
 
7077
        * media.cpp: Don't emit any BufferingProgressChanged events in
 
7078
          OnPropertyChanged.
 
7079
 
 
7080
2008-05-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7081
 
 
7082
        * pipeline-ffmpeg.cpp: Give more information to ffmpeg, otherwise
 
7083
          ffmpeg won't decode any wma audio.
 
7084
 
 
7085
2008-05-05  Stephane Delcroix  <sdelcroix@novell.com>
 
7086
 
 
7087
        * shape.cpp: draw the line caps with the stretch_transform matrix.
 
7088
        Finetune the stretch computation again.
 
7089
 
 
7090
2008-05-05  Miguel de Icaza  <miguel@novell.com>
 
7091
 
 
7092
        * src/control.cpp: Add a skeleton UserControl, to get a bit
 
7093
        further on the loading of a Silverlight 2 application. 
 
7094
 
 
7095
        See the TODO, there are still many limitations.
 
7096
 
 
7097
2008-05-04  Larry Ewing  <lewing@novell.com>
 
7098
 
 
7099
        * runtime.cpp: restrict invalidations to the active windowless
 
7100
        bounds.
 
7101
 
 
7102
        Fixes massive drawing issues on http://my.liveatedu.com/ where
 
7103
        were creating invalidations with a negative coords.
 
7104
 
 
7105
2008-05-04  Miguel de Icaza  <miguel@novell.com>
 
7106
 
 
7107
        * xap.cpp: Expose xap_unpack, include when Mono runtime is
 
7108
        included. 
 
7109
 
 
7110
        * deployment.cpp: Small fixups.
 
7111
 
 
7112
        * xaml.cpp (deploy_namespace): New namespace used to parse
 
7113
        AppManifest.xaml files that start with a <Deployment> tag on the
 
7114
        http://schemas.microsoft.com/client/2007/deployment namespace. 
 
7115
        
 
7116
        (xaml_init): Register the deployment classes.
 
7117
 
 
7118
        * type.cpp (type_is_dependency_object): Add new helper method
 
7119
        to determine if a Kind is a DEPENDENCYOBJECT, the list is no
 
7120
        longer separated in value-types and DependencyObjects, so its not
 
7121
        possible to do a fast lookup from managed code. 
 
7122
 
 
7123
2008-05-04  Chris Toshok  <toshok@ximian.com>
 
7124
 
 
7125
        [ fixes #361906, while simultaneously keeping halo3,
 
7126
        ControlLife.htm, and ControlState.htm happy ]
 
7127
        
 
7128
        * runtime.h, runtime.cpp, type-generated.cpp: move back to the
 
7129
        LoadEvent instead of the broken Attaching event, reverting
 
7130
        r102288.
 
7131
 
 
7132
        * panel.h, panel.cpp: add a "emitting_loaded" guard around the
 
7133
        body of OnLoaded so we don't end up re-entering this method.
 
7134
        Also, revert r102196 as the ordering of parent-to-child was
 
7135
        correct originally, there were just other ordering constraints we
 
7136
        weren't handling.
 
7137
 
 
7138
        * control.h, control.cpp: same.
 
7139
 
 
7140
        * dependencyobject.h, dependencyobject.cpp: add a count field to
 
7141
        EventClosure so we can support the "only_unemitted" arg in
 
7142
        EventObject::Emit.  The idea is that the Loaded event seems to
 
7143
        only be emitted on those events that haven't yet been emitted.
 
7144
        This may also be implemented just by making Loaded event handlers
 
7145
        one-shot (removing themselves after they fire), but this is easy
 
7146
        enough and works.  The only event with this odd behavior (that I
 
7147
        know of) is Loaded.
 
7148
 
 
7149
        * uielement.cpp (UIElement::OnLoaded): set the IS_LOADED
 
7150
        flag (which may actually be useless now, given the Emit change)
 
7151
        but don't emit Loaded only when the flag is unset.
 
7152
 
 
7153
        * collection.cpp: remove the last bit of closure access from
 
7154
        VisualCollection.  The OnLoaded call now happens in
 
7155
        Panel::OnCollectionChanged, in 1 spot as opposed to 3 different
 
7156
        spots in VisualCollection.
 
7157
 
 
7158
2008-05-02  Sebastien Pouliot  <sebastien@ximian.com>
 
7159
 
 
7160
        * text.cpp|h: Adjust Glyphs::InsideObject with bounds changes.
 
7161
        [Complete the fix for #383870]
 
7162
 
 
7163
2008-05-02  Jeffrey Stedfast  <fejj@novell.com>
 
7164
 
 
7165
        * text.cpp (Glyphs::Layout): Take negative vOffset attr's for
 
7166
        glyphs into account when calculating extents. Fix usage of OriginX
 
7167
        and OriginY as far as extents goes.
 
7168
        (Glyphs::GetOriginPoint): Don't leak the TextFont.
 
7169
        (Glyphs::GetTransformOrigin): Always use 0.0,0.0 as the
 
7170
        RenderTransformOrigin, Microsoft's implementation for Glyphs
 
7171
        doesn't seem to take into account the width/height of the bounding
 
7172
        box.
 
7173
        (Glyphs::Layout): Use OriginX,OriginY as the bounding box origin
 
7174
        rather than MIN (OriginX, 0), Min (OriginY, 0)
 
7175
 
 
7176
2008-05-02  Sebastien Pouliot  <sebastien@ximian.com>
 
7177
 
 
7178
        * text.cpp|h: Add Glyphs::InsideObject so Mouse events will work.
 
7179
        [Partial fix for #383870, bounds are not always correct]
 
7180
 
 
7181
2008-05-02  Jeffrey Stedfast  <fejj@novell.com>
 
7182
 
 
7183
        * text.cpp (Glyphs::Render): Cache the glyph string in a moon-path
 
7184
        rather than copying it from the cairo context for the same reason
 
7185
        we did this for TextBlock segment path caching.
 
7186
 
 
7187
2008-05-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7188
 
 
7189
        * playlist.h, playlist.cpp: Implemented ClientSkip.
 
7190
        * media.cpp: Handle playlists entry with ClientSkip set correctly.
 
7191
 
 
7192
2008-05-02  Michael Dominic K.  <mdk@mdk.am>
 
7193
 
 
7194
        * animation.cpp:
 
7195
        * animation.h: For the KeySpline: getting rid of the ugly lookup-table
 
7196
        with x -> y values and instead using a two-way curve approximation
 
7197
        methodology for calculating the Spline progress. This is not 100% accurate
 
7198
        (same as original bezier) for fine-grained values but removes all the
 
7199
        precision problems and greatly improves the quality for long KeySpline
 
7200
        animations (no more jags). 
 
7201
 
 
7202
2008-05-01  Larry Ewing  <lewing@novell.com>
 
7203
 
 
7204
        * uielement.cpp (UIElement::OnPropertyChanged): go ahead and
 
7205
        invalidate here as changes in the upstream opacity could make us
 
7206
        unable to invalidate later.
 
7207
 
 
7208
        Fixes invalidation of last hex in a sprawl run.
 
7209
 
 
7210
2008-05-01  Larry Ewing  <lewing@novell.com>
 
7211
 
 
7212
        * runtime.cpp: Fix a bunch of rendering bugs in windowless mode.
 
7213
        Previously there were no time manager handlers listening to events
 
7214
        in windowless mode so we were missing expose events.  Make all
 
7215
        invalidations go throw Invalidate so that they get picked up in
 
7216
        windowless.  Take into account that exposes go to a full size
 
7217
        window in windowless mode so we don't need to subtract the device
 
7218
        offsets.
 
7219
 
 
7220
        Fixes most of the issues with
 
7221
        http://silverlight.r2musings.com/weatherwidget/default.aspx and
 
7222
        fixes the harness failure on ZIndex.htm.
 
7223
        
 
7224
2008-05-01  Chris Toshok  <toshok@ximian.com>
 
7225
 
 
7226
        * runtime.h, runtime.cpp: remove the LoadEvent and instead add an
 
7227
        AttachingEvent, which is emitted after the toplevel control is set
 
7228
        on the surface, but before UIElement::LoadedEvent is emitted on
 
7229
        it.  Used by the plugin for hooking up the plugin onLoad handler.
 
7230
 
 
7231
2008-05-01  Jeffrey Stedfast  <fejj@novell.com>
 
7232
 
 
7233
        * layout.cpp (RenderLine): Instead of grabbing the cairo_path_t
 
7234
        from the cairo_t after pathing out all of the glyphs for a segment
 
7235
        of text, keep our own moon_path for caching. Apparently the path
 
7236
        gotten from cairo_copy_path() has whatever transforms are on the
 
7237
        context pre-applied which is the cause for the breakage in bug
 
7238
        #375279.
 
7239
 
 
7240
        * font.cpp (TextFont::AppendPath): New method to append a glyph's
 
7241
        path to a moon_path for caching purposes.
 
7242
 
 
7243
2008-04-30  Fernando Herrera  <fherrera@novell.com>
 
7244
 
 
7245
        * media.cpp: at MediaElement::DownloaderFailed if the uri was a mms://
 
7246
        stream, fallback to http:// uri
 
7247
 
 
7248
2008-04-30  Michael Dominic K.  <mdk@mdk.am>
 
7249
 
 
7250
        * panel.cpp:
 
7251
        * panel.h: Adding the panel_add_child helper method used by the ancient
 
7252
        demo. It actually makes sense.
 
7253
 
 
7254
2008-04-30  Michael Dominic K.  <mdk@mdk.am>
 
7255
 
 
7256
        * Makefile.am:
 
7257
        * collection.h:
 
7258
        * text.cpp:
 
7259
        * xaml.cpp: Include the utils.h locally in .cpp file and remove it from
 
7260
        the install. This way we don't need to bundle the zip includes.
 
7261
 
 
7262
2008-04-30  Stephane Delcroix  <sdelcroix@novell.com>
 
7263
 
 
7264
        * shape.cpp: calc_line_bounds: compute the start|end caps in the
 
7265
        bounds.
 
7266
 
 
7267
2008-04-30  Sebastien Pouliot  <sebastien@ximian.com>
 
7268
 
 
7269
        * panel.cpp: Emit Loaded on Canvas before it's child.
 
7270
        [Fix part #361906 - i.e. back to original issue]
 
7271
 
 
7272
2008-04-30  Fernando Herrera  <fherrera@novell.com>
 
7273
 
 
7274
        * downloader.cpp:
 
7275
        * downloader.h: export downloader_get_downloaded_file without the
 
7276
        partName.
 
7277
 
 
7278
2008-04-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7279
 
 
7280
        * pipeline.cpp: Mp3FrameReader/Demuxer: Calculate frame duration
 
7281
          correctly, and calculate file duration as MS seems to be doing it.
 
7282
          SkipFrame: when seeking don't take into account the size of the
 
7283
          mpeg header, since we only peaked it. 
 
7284
 
 
7285
2008-04-29  Michael Dominic K.  <mdk@mdk.am>
 
7286
 
 
7287
        * shape.cpp: Clipping is not taken into account with cairo_in_*
 
7288
        functions therefore do the hit-test in two steps -- first check if
 
7289
        within clipping bounds and then check if within shape bounds. Fixes
 
7290
        #383894 and test-shape-cursor-clipping.xaml test. 
 
7291
 
 
7292
2008-04-28  Chris Toshok  <toshok@ximian.com>
 
7293
 
 
7294
        * runtime.cpp (Surface::Attach): emit the canvas's Loaded event
 
7295
        before we emit our own Load event (and trigger the plugin's onLoad
 
7296
        handler).
 
7297
 
 
7298
2008-04-28  Chris Toshok  <toshok@ximian.com>
 
7299
 
 
7300
        * runtime.cpp (Surface::Attach): always emit Resize on Attach.
 
7301
        fixes ControlState.htm.
 
7302
 
 
7303
2008-04-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7304
 
 
7305
        * typegen/typegen.cs: Minor fix to support C constructors immediately
 
7306
          prepended with *.
 
7307
        * type-generated.cpp: Regenerated (includes a lot more C constructors
 
7308
          now).
 
7309
 
 
7310
2008-04-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7311
 
 
7312
        * geometry.h: Include glib.h before using glib macros.
 
7313
 
 
7314
2008-04-28  Michael Dominic K.  <mdk@mdk.am>
 
7315
 
 
7316
        * xaml.cpp: Silently skip the attributes that are empty instead of
 
7317
        throwing an error. Fixes the test-parser-empty-property.xaml and
 
7318
        #383904.
 
7319
 
 
7320
2008-04-28  Michael Dominic K.  <mdk@mdk.am>
 
7321
 
 
7322
        * brush.cpp: Make sure to use proper width for image stretching params.
 
7323
        Fixes the image-brush-stretch-set.html and bug #383938.
 
7324
 
 
7325
2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
 
7326
 
 
7327
        * shape.cpp: Added property accessors.
 
7328
 
 
7329
2008-04-25  Chris Toshok  <toshok@ximian.com>
 
7330
 
 
7331
        * type-generated.cpp: add the Surface Loaded event.
 
7332
 
 
7333
        * runtime.cpp (Surface::widget_destroyed): null out s->widget if
 
7334
        it matches too.  no more dangling pointers.
 
7335
 
 
7336
        * runtime.h, runtime.cpp: give the Surface class a Load
 
7337
        event (used to run the JS OnLoad event in the plugin) and an
 
7338
        IsLoaded accessor.
 
7339
 
 
7340
        * xaml.cpp (dependency_object_hookup_event): raise a parser error
 
7341
        if an event is specified with a javascript: prefix.
 
7342
        
 
7343
2008-04-25  Larry Ewing  <lewing@novell.com>
 
7344
 
 
7345
        * stylus.cpp (InkPresenter::OnCollectionChanged): wrap the stroke
 
7346
        changed logic inside a type check.
 
7347
 
 
7348
2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
 
7349
 
 
7350
        * xaml.cpp (geometry_from_str): Use the new gemoetry property
 
7351
        accessor methods.
 
7352
 
 
7353
        * geometry.cpp: Added property accessor methods
 
7354
 
 
7355
2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7356
 
 
7357
        * media.cpp: Always emit DownloadProgressEvents, even if we're
 
7358
          buffering.
 
7359
 
 
7360
2008-04-25  Stephane Delcroix  <sdelcroix@novell.com>
 
7361
 
 
7362
        * stylus.cpp: InkPresenter::OnCollectionChanged: call the parent 
 
7363
        method, so the Canvas.Top, Canvas.Left properties are read. Fixes
 
7364
        inkJournal.
 
7365
 
 
7366
2008-04-25  Geoff Norton  <gnorton@novell.com>
 
7367
 
 
7368
        * pipeline-ffmpeg.cpp, pipeline-ffmpeg.h:  Support using ffmpeg's
 
7369
        new libavcodec/avcodec.h
 
7370
 
 
7371
2008-04-25  Jeffrey Stedfast  <fejj@novell.com>
 
7372
 
 
7373
        * runtime.cpp (runtime_init): No longer need to call
 
7374
        assembly_part_init().
 
7375
 
 
7376
        * deployment.cpp (assembly_part_init): Moved into
 
7377
        deployment_init().
 
7378
 
 
7379
        * deployment.h: Added missing virtual dtors.
 
7380
 
 
7381
        * collection.cpp (Collection::GetCount): Added.
 
7382
 
 
7383
2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7384
 
 
7385
        * media.cpp: Set DownloadProgress to 0 when media fails to load.
 
7386
 
 
7387
2008-04-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7388
 
 
7389
        * media.cpp: MediaElement::CheckMarkers: if the marker is from a live
 
7390
          stream, emit it even if we missed it by up to 0.1 s. Refactored
 
7391
          parts of UpdateProgress into GetBufferedSize. Emit MediaOpened only
 
7392
          after we've either started playing or finished buffering. Emit
 
7393
          MediaFailed/InvalidFileFormat if we failed to initialize the media.
 
7394
          Reinitialize the media synchronously in SetSource.
 
7395
        * media.h: Added
 
7396
 
 
7397
2008-04-25  Michael Dominic K.  <mdk@mdk.am>
 
7398
 
 
7399
        * runtime.cpp:
 
7400
        * uielement.cpp:
 
7401
        * uielement.h: Also include the IsHitTestVisible status when checking
 
7402
        our input_list after handling the mouse event. This fixes the
 
7403
        mouse-enter-leave-hit-test-visibility.html test.
 
7404
 
 
7405
2008-04-25  Stephane Delcroix  <sdelcroix@novell.com>
 
7406
 
 
7407
        * runtime.cpp: move the hotspot for the eraser, Fixes bnc 375213.
 
7408
 
 
7409
2008-04-24  Jeffrey Stedfast  <fejj@novell.com>
 
7410
 
 
7411
        * clock.cpp: Added property accessor methods for TimelineMarker
 
7412
        and added c-bindings.
 
7413
 
 
7414
        * downloader.cpp: Same.
 
7415
 
 
7416
        * media.cpp: Added property accessors so that it isn't
 
7417
        necessary to use long-winded c-function names to get property
 
7418
        values. Also made all c-wrappers call the c++ property accessor
 
7419
        methods.
 
7420
 
 
7421
2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7422
 
 
7423
        * mplayer.cpp: When a video-only media reaches its end, set target_pts
 
7424
          to the last rendered pts, since that's what is reported as our
 
7425
          current position.
 
7426
 
 
7427
2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7428
 
 
7429
        * mplayer.cpp: When a video-only media reaches its end, set target_pts
 
7430
          to the last rendered pts, since that's what is reported as our
 
7431
          current position.
 
7432
 
 
7433
2008-04-24  Michael Dominic K.  <mdk@mdk.am>
 
7434
 
 
7435
        * runtime.cpp:
 
7436
        * uielement.cpp:
 
7437
        * uielement.h: Renaming UIElement::GetActualRenderVisibility to
 
7438
        UIElement::GetActualTotalRenderVisibility for better name matching.
 
7439
 
 
7440
2008-04-24  Michael Dominic K.  <mdk@mdk.am>
 
7441
 
 
7442
        * runtime.cpp: Another perf fix for the fix -- make it a corner case
 
7443
        when the new_input_list needs to be copied. In most cases we can just
 
7444
        reuse it. 
 
7445
 
 
7446
2008-04-24  Michael Dominic K.  <mdk@mdk.am>
 
7447
 
 
7448
        * runtime.cpp:
 
7449
        * uielement.cpp:
 
7450
        * uielement.h: Ooops, so my prev fix was correct but *totally* dumb from
 
7451
        the perf/sanity point of view. Here goes a better refactor.
 
7452
 
 
7453
        Adding UIElement::GetActualRenderVisibility which returns the visibility
 
7454
        (like UIElement::ComputeTotalRenderVisibility) without setting the
 
7455
        flags.
 
7456
 
 
7457
2008-04-24  Michael Dominic K.  <mdk@mdk.am>
 
7458
 
 
7459
        * runtime.cpp: After emitting the events make sure to update our
 
7460
        input_list since it can be changed -- as a result of somebody ie.
 
7461
        changing element's visibility in the enter/leave callback. Fixes the
 
7462
        #375220 (Microsoft downloads index chars).
 
7463
 
 
7464
2008-04-24  Michael Dominic K.  <mdk@mdk.am>
 
7465
 
 
7466
        * animation.cpp: Do a slightly more precise generation of key-spline
 
7467
        tables. Improves smoothness ie. in test-animation-slow-keyspline.xaml.
 
7468
 
 
7469
2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7470
 
 
7471
        * media.cpp, media.h: MediaElement: add a handler for DownloaderFailed
 
7472
          and raise MediaFailed.
 
7473
 
 
7474
2008-04-24  Stephane Delcroix  <sdelcroix@novell.com>
 
7475
 
 
7476
        * geometry.h:
 
7477
        * geometry.cpp:
 
7478
        * shape.cpp:
 
7479
        * shape.h: override some Compute[Shape]Bounds method to pass a matrix
 
7480
        argument. Allows measuration of transformed Pathes and a 2nd pass to 
 
7481
        refines the guesses we're doing for Stretches.
 
7482
 
 
7483
2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7484
 
 
7485
        * src.mdp: Updated.
 
7486
 
 
7487
2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7488
 
 
7489
        * media.cpp, pipeline.cpp, pipeline.h: Addded
 
7490
          ProgressiveSource::NotifyFinished to notify that the download has
 
7491
          finished. This is required for streaming downloads which download 0
 
7492
          bytes, otherwise the pipeline will hang waiting for data.
 
7493
 
 
7494
2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7495
 
 
7496
        * collection.cpp, collection.h: TimelineMarkerCollection needs to be
 
7497
          sorted at all times, added a virtual Collection::AddToList method
 
7498
          which appends the item to the list (and overriden by
 
7499
          TimelineMarkerCollection to add it in the correct position to keep
 
7500
          the collection ordered).
 
7501
 
 
7502
2008-04-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7503
 
 
7504
        * clock.cpp, clock.h: Added property accessors to TimelineMarker.
 
7505
 
 
7506
2008-04-23  Jeffrey Stedfast  <fejj@novell.com>
 
7507
 
 
7508
        * panel.cpp: Add property accessors and added c-bindings.
 
7509
 
 
7510
2008-04-23  Geoff Norton  <gnorton@novell.com>
 
7511
 
 
7512
        * Makefile.am: Fix make dist when building with ffmpeg.
 
7513
 
 
7514
2008-04-23  Jeffrey Stedfast  <fejj@novell.com>
 
7515
 
 
7516
        * frameworkelement.cpp: Added property accessors so that it isn't
 
7517
        necessary to use long-winded c-function names to get property
 
7518
        values. Also made all c-wrappers call the c++ property accessor
 
7519
        methods.
 
7520
 
 
7521
        * text.cpp: Added property accessors to all text classes so that
 
7522
        it isn't necessary to use long-winded c-function names to get
 
7523
        property values. Also made all c-wrappers call the c++ property
 
7524
        accessor methods.
 
7525
        (TextBlock::LayoutSilverlight): Removed, logic moved into
 
7526
        ::Layout().
 
7527
 
 
7528
        * animation.h: Make sure all c-API _new() functions take void as
 
7529
        argument.
 
7530
 
 
7531
        * uielement.cpp: Added some property accessors.
 
7532
 
 
7533
        * text.cpp: Use the new SolidColorBrush ctor.
 
7534
 
 
7535
        * brush.cpp: Added property accessors to all brush classes so that
 
7536
        it isn't encessary to use long-winded c-function names to get
 
7537
        property values. Also made all c-wrappers call the c++ property
 
7538
        accessor methods.
 
7539
        (SolidColorBrush::SolidColorBrush): New .ctor to make life
 
7540
        simpler.
 
7541
 
 
7542
2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7543
 
 
7544
        * mplayer.cpp: AudioPlayer: prevent calling SetTargetPts on the
 
7545
          MediaPlayer with a negative pts.
 
7546
 
 
7547
2008-04-23  Geoff Norton  <gnorton@novell.com>
 
7548
 
 
7549
        * libmoon.h: Drop mango.h
 
7550
        
 
7551
2008-04-23  Geoff Norton  <gnorton@novell.com>
 
7552
 
 
7553
        * runtime.cpp: Remove pango support.
 
7554
        
 
7555
2008-04-23  Geoff Norton  <gnorton@novell.com>
 
7556
 
 
7557
        * Makefile.h, text.cpp, text.h, mango.cpp, mango.h:  Remove pango 
 
7558
        support.
 
7559
        
 
7560
2008-04-23  Geoff Norton  <gnorton@novell.com>
 
7561
 
 
7562
        * swscale-converter.cpp, pipeline-ffmpeg.cpp, Makefile.am: Only
 
7563
        include swscale and ffmpeg cpp files in the build if their configure
 
7564
        flags are set.
 
7565
        
 
7566
2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7567
 
 
7568
        * type.cpp: When looking for types use case-insensitive type
 
7569
          comparison. Fixes #375230 and #375231.
 
7570
 
 
7571
2008-04-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7572
 
 
7573
        * pipeline.cpp, pipeline.h: MediaClosure: add SetContextUnsafe which
 
7574
          don't take a ref to the context, and add a context_refcounted field
 
7575
          to keep track of refcounting. This is required for long-living
 
7576
          closures which would otherwise cause circular references. Add and
 
7577
          implemetn a ASFMarkerDecoderInfo class, and implement notification
 
7578
          of found markers back to listeners.
 
7579
        * src.mdp: Updated.
 
7580
        * downloader.cpp, downloader.h: Downloader: Add a streaming_features
 
7581
          field, so that the plugin can return information about mms streams.
 
7582
        * http-streaming.cpp, http-streaming.h: Added
 
7583
          parse_http_streaming_features.
 
7584
        * mplayer.h: Add property accessors for CanSeek and CanPause, and
 
7585
          implement them. Select any marker streams.
 
7586
        * media.h, media.cpp: MediaElement: store the marker closure in the
 
7587
          instance, so that we can delete it upon destruction. Read the
 
7588
          streaming features from the downloader in order to set
 
7589
          CanSeek/CanPause properly. TryOpen: if we don't have a filename,
 
7590
          but we do have a downloaded file, use the downloaded file as the
 
7591
          source (might happen if streaming stops before TryOpen is called).
 
7592
        * mplayer.cpp: Add property accessors for CanSeek and CanPause, and
 
7593
          implement them. Select any marker streams. Don't check if we can
 
7594
          pause in Pause (), since MediaElement implements Buffering calling
 
7595
          Pause on us. MediaElement is already checking if media can be
 
7596
          paused or not.
 
7597
        * Makefile.am: Added http-streaming.h|cpp.
 
7598
 
 
7599
2008-04-22  Stephane Delcroix  <sdelcroix@novell.com>
 
7600
 
 
7601
        * rect.h: overrides for Union and IsEmpty to take a logical bool,
 
7602
        allowing logical bounds computation.
 
7603
        * geometry.cpp: use the overrided Union () in Computebounds
 
7604
        * shape.cpp: This is the stretches' Holy Grail !
 
7605
 
 
7606
2008-04-22  Jeffrey Stedfast  <fejj@novell.com>
 
7607
 
 
7608
        * eventargs.cpp (MouseEventArgs::GetStylusPoints): Make sure
 
7609
        event->device non-NULL.
 
7610
 
 
7611
2008-04-22  Larry Ewing  <lewing@novell.com>
 
7612
 
 
7613
        * playlist.h: remove expat references from public symbols.
 
7614
        * playlist.cpp: Wrap XML_Parser in simple class to hide the symbol
 
7615
        from the plublic headers.
 
7616
 
 
7617
        Start cleaning things up for ff3.
 
7618
 
 
7619
2008-04-22  Chris Toshok  <toshok@ximian.com>
 
7620
 
 
7621
        * runtime.h, runtime.cpp: add Zombify() which sets the zombie
 
7622
        flag.  basically this allows us to unwind gracefully from an event
 
7623
        that has caused the surface to be destroyed.  when the flag is
 
7624
        set, we basically stop emitting UI events that we're in the
 
7625
        process of emitting.
 
7626
        (Surface::widget_destroyed) simplify this, and zero out the
 
7627
        widgets here so we don't destroy them again in ~Surface().
 
7628
        
 
7629
        * dependencyobject.h, dependencyobject.cpp: make unref_delayed
 
7630
        public again, and don't warn about calling it on the main thread.
 
7631
        we need it in the plugin.
 
7632
 
 
7633
2008-04-22  Jeffrey Stedfast  <fejj@novell.com>
 
7634
 
 
7635
        * shape.cpp (Shape::DoDraw): Cast extents to int for
 
7636
        AddToCacheSizeCounter().
 
7637
        (Shape::IsCandidateForCaching): Same for
 
7638
        VerifyWithCacheSizeCounter().
 
7639
 
 
7640
2008-04-22  Michael Dominic K.  <mdk@mdk.am>
 
7641
 
 
7642
        * animation.cpp: Safely allow now the KeyTime property to be nullable.
 
7643
        Fixes the Animation_NegativeTst.htm test.
 
7644
 
 
7645
2008-04-22  Michael Dominic K.  <mdk@mdk.am>
 
7646
 
 
7647
        * animation.cpp:
 
7648
        * animation.h: Making the Storyboard::Begin return bool (true if
 
7649
        storyboard started correctly, false otherwise).
 
7650
 
 
7651
2008-04-22  Michael Dominic K.  <mdk@mdk.am>
 
7652
 
 
7653
        * animation.cpp:
 
7654
        * animation.h:
 
7655
        * clock.cpp:
 
7656
        * clock.h: Adding a 'bool Validate ()' virtual to Timeline which is used
 
7657
        to validate the Timeline before starting it. Timelines are always valid
 
7658
        by default except for KeyFrame-based animations where we perform a
 
7659
        check on the keyframes. 
 
7660
 
 
7661
        Storyboard doesn't start if any of it's timelines are not valid. This
 
7662
        fixes the test-animation-invalid-keyframe-keytime.xaml test.
 
7663
 
 
7664
2008-04-22  Michael Dominic K.  <mdk@mdk.am>
 
7665
 
 
7666
        * animation.cpp: Don't initialize the KeyTime for KeyFrame to a default
 
7667
        value, make it be NULL by default. This currently causes a segfault in
 
7668
        the just-added test-animation-invalid-keyframe-keytime.xaml which is
 
7669
        fine.
 
7670
 
 
7671
2008-04-22  Fernando Herrera  <fherrera@novell.com>
 
7672
 
 
7673
        * pipeline.h:
 
7674
        * pipeline.cpp: set the new read position after Seeking to pts.
 
7675
        Added ProgressiveSource::SeekInternal that refuses to Seek to a
 
7676
        non-filled position.
 
7677
 
 
7678
2008-04-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7679
 
 
7680
        * dependencyobject.cpp, dependencyobject.h: Added another SetValue
 
7681
          overload, to enable calling all SetValues with stack objects.
 
7682
        * xaml.cpp: Fix a Value leak.
 
7683
 
 
7684
2008-04-21  Jeffrey Stedfast  <fejj@novell.com>
 
7685
 
 
7686
        Fixes a double-destroy bug in FullScreen.htm
 
7687
 
 
7688
        * runtime.cpp (Surface::Surface): Initialize normal_widget - never
 
7689
        let it be NULL unless we are in windowless mode.
 
7690
        (Surface::.dtor): Don't call DestroyWidget on 'widget', call it on
 
7691
        'widget_normal' instead, this way we can't accidently destroy the
 
7692
        fullscreen widget twice (e.g. if we are in fullscreen mode).
 
7693
        (Surface::ConnectEvents): Record the unrealize signal id so that
 
7694
        we can later disconnect from it.
 
7695
        (Surface::DestroyWidget): Now takes a SignalIds argument so that
 
7696
        we can disconnect from unrealize/destroy signals which may fire in
 
7697
        response to destroying the widget.
 
7698
        (Surface::InitializeWidget): Now takes a SignalIds argument so
 
7699
        that we can save the destroy signal id.
 
7700
 
 
7701
2008-04-21  Geoff Norton  <gnorton@novell.com>
 
7702
 
 
7703
        * runtime.cpp: Guard against freeing a list in a sub-event
 
7704
        loop when crossings are invoked.  Fixes bug#378902
 
7705
        
 
7706
2008-04-20  Miguel de Icaza  <miguel@roxanne.site>
 
7707
 
 
7708
        * deployment.cpp: new dependency property objects for the
 
7709
        Deployment class.
 
7710
 
 
7711
        * xap.cpp: XAP loader, unpacks and instantiates deployment, but
 
7712
        does not load assemblies in VM.  Not sure if this should be done
 
7713
        here (and add a VM dependency) or in the plugin and later as well
 
7714
        on mopen.
 
7715
 
 
7716
        * runtime.cpp: Deployment initialization.
 
7717
 
 
7718
        * downloader.cpp Moved some code from here into utils.cpp: Expose
 
7719
        CreateTempDir instead of MakeTempDir that takes care of creating
 
7720
        the directory with a unique signature.
 
7721
 
 
7722
2008-04-21  Geoff Norton  <gnorton@novell.com>
 
7723
 
 
7724
        * yuv-converter.cpp: Emit a warning on unaliged memory and fall back
 
7725
        to the C implementation.
 
7726
 
 
7727
2008-04-18  Larry Ewing  <lewing@novell.com>
 
7728
 
 
7729
        * dirty.cpp (Surface::ProcessDownDirtyElements): When visibility
 
7730
        changes invalidate our parents bounds to notify them that their
 
7731
        subtree may have changed.
 
7732
 
 
7733
        Fixes the status boxes on MouseInput.htm
 
7734
 
 
7735
2008-04-18  Jeffrey Stedfast  <fejj@novell.com>
 
7736
 
 
7737
        * runtime.cpp (Surface::ConnectEvents): Connect to focus-in-event
 
7738
        and focus-out-event.
 
7739
        (Surface::focus_in_callback): If we have a toplevel canvas, emit a
 
7740
        GotFocus event on it.
 
7741
        (Surface::focus_out_callback): If we have a toplevel canvas, emit
 
7742
        a LostFocus event on it.
 
7743
        (Surface::Attach): If our widget has focus, emit GotFocus event on
 
7744
        our canvas right after we emit the Loaded event.
 
7745
 
 
7746
        * uielement.cpp (UIElement::EmitGotFocus): New method.
 
7747
        (UIElement::EmitLostFocus): New method.
 
7748
 
 
7749
2008-04-18  Geoff Norton  <gnorton@novell.com>
 
7750
 
 
7751
        * yuv-converter.cpp:  It seems that ffmpeg will occasionally
 
7752
        over-pad the YUV buffers with a SIMD aligned amount (see
 
7753
        timecode-*.wmv)
 
7754
        
 
7755
2008-04-18  Michael Dominic K.  <mdk@mdk.am>
 
7756
 
 
7757
        * animation.cpp: Make sure we always return targetValue when
 
7758
        progress >= 1.0 for Spline*KeyFrame's.
 
7759
 
 
7760
        This fixes the clock36.xaml test and PopFly bug of "line dirt
 
7761
        leftovers" when collapsing block list or tutorial list.
 
7762
 
 
7763
2008-04-17  Larry Ewing  <lewing@novell.com>
 
7764
 
 
7765
        * xaml.cpp (xaml_init): register MouseEventArgs as a dependency object.
 
7766
 
 
7767
2008-04-17  Larry Ewing  <lewing@novell.com>
 
7768
 
 
7769
        * src/eventargs.cpp:
 
7770
        * src/eventargs.h: 
 
7771
        * src/type-generated.cpp:
 
7772
        * src/value.h: add a default ctor for MouseEventArgs.
 
7773
 
 
7774
2008-04-17  Larry Ewing  <lewing@novell.com>
 
7775
 
 
7776
        * typegen/typegen.cs: don't require an svn repo for proper
 
7777
        functioning, try to make the error messages functional still.
 
7778
 
 
7779
2008-04-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7780
 
 
7781
        * media.cpp: MediaElement::MediaOpened: Advance state to Buffering
 
7782
          before trying to play/pause, otherwise nothing will happen (if
 
7783
          coming from the Opening state). Fix printf.
 
7784
 
 
7785
2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7786
 
 
7787
        * dependencyobject.cpp, dependencyobject.h: Add an always_change flag
 
7788
          for DependencyProperty, if a property has this flag, it will always
 
7789
          be changed, even if the new value is the same as the old value.
 
7790
          DependencyObject::SetValue: honor the new always_change flag.
 
7791
        * media.cpp: Set the always_change flag to true for
 
7792
          MediaBase::SourceProperty.
 
7793
 
 
7794
2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7795
 
 
7796
        * media.cpp: MediaElement: Move the Play/Pause/AutoPlay logic to
 
7797
          MediaOpened, so that it also happens when TryLoadFinished opens the
 
7798
          media. Fixes media not starting to play when the media was
 
7799
          downloaded between the moment we tried to open it and it was
 
7800
          successfully opened.
 
7801
 
 
7802
2008-04-17  Jeffrey Stedfast  <fejj@novell.com>
 
7803
 
 
7804
        * color.cpp (color_from_str): Handle uint32 color values that are
 
7805
        not hex.
 
7806
 
 
7807
2008-04-17  Larry Ewing  <lewing@novell.com>
 
7808
 
 
7809
        * dependencyobject.cpp (DependencyProperty::DependencyProperty):
 
7810
        initialize is_nullable.
 
7811
 
 
7812
        Fixes random failure of ParserErrors.htm.
 
7813
 
 
7814
2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7815
 
 
7816
        * media.cpp: MediaElement::TryOpen: always unref the FileSource we
 
7817
          create when we're done with it.
 
7818
 
 
7819
2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7820
 
 
7821
        * dependencyobject.cpp, dependencyobject.h: EventObject: we need to
 
7822
          remember how many events the current type has, since in our
 
7823
          destructor we can't get that information anymore. Add a new
 
7824
          EventLists class which does the book-keeping.
 
7825
 
 
7826
2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7827
 
 
7828
        * media.cpp: MediaElement::Reinitialize: don't call SetValue if we're
 
7829
          in the destructor. MediaElement::SetMedia: call ComputeBounds at
 
7830
          the end. Fixes xaml/test-canvas-no-size.html
 
7831
 
 
7832
2008-04-17  Michael Dominic K.  <mdk@mdk.am>
 
7833
 
 
7834
        * animation.cpp: It turns out that KeyFrames doesn't have default Value
 
7835
        of NULL but rather 0/Black/etc.  
 
7836
 
 
7837
        This fixes the the test-animation-null-defaults-*.xaml tests and the bug
 
7838
        in PopFly where clicking the block list collapser wouldn't do anything
 
7839
        (it collapses now properly like the tutorial right pane). 
 
7840
 
 
7841
2008-04-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7842
        
 
7843
        * src.mdp: Updated.
 
7844
 
 
7845
2008-04-16  Larry Ewing  <lewing@novell.com>
 
7846
 
 
7847
        * type.cpp: avoid an infinite recursion in LookupEvent.
 
7848
 
 
7849
        Fixes a crash in RuntimeErrors.htm.
 
7850
 
 
7851
2008-04-16  Larry Ewing  <lewing@novell.com>
 
7852
 
 
7853
        * shape.cpp (Shape::ComputeStretchBounds): get another test working.
 
7854
 
 
7855
2008-04-16  Larry Ewing  <lewing@novell.com>
 
7856
 
 
7857
        * shape.cpp (Shape::ComputeStretchBounds): an incomplete fix to
 
7858
        try to resolve the regression in stretch that had crept in.  Still
 
7859
        working on a more complete patch.
 
7860
 
 
7861
2008-04-16  Larry Ewing  <lewing@novell.com>
 
7862
 
 
7863
        * geometry.cpp (RectangleGeometry::ComputeBounds): rectangles have
 
7864
        a logical size.
 
7865
 
 
7866
2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
 
7867
 
 
7868
        * dependencyobject.cpp (free_value): value argument may be NULL.
 
7869
 
 
7870
2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7871
 
 
7872
        * dependencyobject.cpp: DependencyObject: Emit DestroyedEvent before
 
7873
          decreasing refcount, so that ref in event emission doesn't abort.
 
7874
          Reenable ref/unref in event emission.
 
7875
 
 
7876
2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
 
7877
 
 
7878
        * dependencyobject.cpp (set_surface): value argument can be NULL.
 
7879
        (DependencyObject::IsValueValid): Fixed compile warnings.
 
7880
 
 
7881
        * downloader.cpp: Properly set/reset Status and StatusText
 
7882
        properties.
 
7883
        (Downloader::Open): Properly reinitialize all state.
 
7884
        (Downloader::Write): Clamp progress to 1.0 (altho it should never
 
7885
        go above, especially not that I've fixed resetting 'total' state).
 
7886
 
 
7887
        * enums.c (initialize_enums): Don't cast arrays using
 
7888
        GINT_TO_POINTER(), doesn't make any sense.
 
7889
 
 
7890
2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7891
 
 
7892
        * collection.cpp: Collection::EmitChanged: don't create a
 
7893
          ChangeEventArgs if we don't need one, and unref it when we're
 
7894
          finished with it.
 
7895
 
 
7896
2008-04-16  Michael Dominic K.  <mdk@mdk.am>
 
7897
 
 
7898
        * clock.cpp: Add protection against division by 0.
 
7899
 
 
7900
2008-04-16  Michael Dominic K.  <mdk@mdk.am>
 
7901
 
 
7902
        * animation.cpp:
 
7903
        * animation.h: Don't detach the ClockGroup from parent on the Completed
 
7904
        event. This is now finally no longer needed. While keeping the
 
7905
        clockgroup means little perf difference it makes the whole thing much
 
7906
        more simple to read (there is just one place that explains why Filling
 
7907
        groups are no longer processed after Completed).
 
7908
 
 
7909
2008-04-16  Larry Ewing  <lewing@novell.com>
 
7910
 
 
7911
        * shape.cpp: tweak the origin tweak again.  This should pass
 
7912
        test-shape-path-stretch[34].xaml.
 
7913
 
 
7914
2008-04-16  Jeffrey Stedfast  <fejj@novell.com>
 
7915
 
 
7916
        Fix for OMPackagingSource.htm
 
7917
 
 
7918
        * media.cpp (MediaElement::OnPropertyChanged): If the new source
 
7919
        is empty, Invalidate().
 
7920
        (MediaElement::Render): Render nothing if our downloader is NULL.
 
7921
 
 
7922
2008-04-16  Larry Ewing  <lewing@novell.com>
 
7923
 
 
7924
        * shape.cpp: don't adjust the origin unless we are adjusting that
 
7925
        axis.
 
7926
 
 
7927
2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7928
 
 
7929
        * playlist.cpp: Simplify printf.
 
7930
 
 
7931
2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7932
 
 
7933
        * src.mdp: Updated to (mostly) compile.
 
7934
 
 
7935
2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7936
 
 
7937
        * src.mdp: Updated.
 
7938
 
 
7939
2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7940
 
 
7941
        * typegen/typegen.sh: Updated to work correctly independently of
 
7942
        the current directory when executed.
 
7943
 
 
7944
2008-04-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7945
 
 
7946
        * animation.cpp, animation.h, brush.cpp, brush.h, clock.cpp, clock.h,
 
7947
          collection.cpp, collection.h, dependencyobject.h, downloader.cpp,
 
7948
          downloader.h, Makefile.am, media.cpp, media.h, runtime.cpp, runtime.h,
 
7949
          type.cpp, type.h, type.h.in, typegen/typegen.cs, type-generated.cpp,
 
7950
          uielement.cpp, uielement.h: Initialize our type system statically.
 
7951
        * dependencyobject.cpp: Initialize our type system statically. Comparing a
 
7952
          Kind value to another to determine type hierarchy isn't supported
 
7953
          anymore, use Value::Is or Type::IsSubclassOf, which are doing the right
 
7954
          thing.
 
7955
        * src.mdp: Updated.
 
7956
        * type.cpp.in: Removed, no longer required.
 
7957
        * value.cpp, value.h, value.h.in: Comparing a Kind value to another to
 
7958
          determine type hierarchy isn't supported anymore, use Value::Is or
 
7959
          Type::IsSubclassOf, which are doing the right thing.
 
7960
 
 
7961
2008-04-16  Larry Ewing  <lewing@novell.com>
 
7962
 
 
7963
        * shape.cpp (Shape::ComputeStretchBounds): fix typo.
 
7964
 
 
7965
2008-04-16  Larry Ewing  <lewing@novell.com>
 
7966
 
 
7967
        * shape.cpp (Shape::ComputeStretchBounds): fix the centering logic
 
7968
        that got accidentally lost when fixing other bits.
 
7969
 
 
7970
        Fixes regression in StretchAndShapes.xaml.
 
7971
 
 
7972
2008-04-16  Jackson Harper  <jackson@ximian.com>
 
7973
 
 
7974
        * xaml.cpp: {x:Null} evaluates to NULL, if we encounter this value
 
7975
        we need to check if the property is Nullable and raise an error if
 
7976
        it isn't.
 
7977
 
 
7978
2008-04-16  Jackson Harper  <jackson@ximian.com>
 
7979
 
 
7980
        * dependencyobject.h|cpp: SetValue now validates values and
 
7981
        returns false with a GError when invalid values are used.
 
7982
        Subclasses can (and should) override IsValidValue to do their own
 
7983
        value validation.
 
7984
        * xaml.cpp: Use new SetValue that returns errors.
 
7985
        
 
7986
2008-04-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7987
 
 
7988
        * media.cpp: MediaBase::SetSourceAsyncCallback: don't do anything if we
 
7989
          don't have a surface anymore. We're probably executing after the surface
 
7990
          has been destroyed.
 
7991
 
 
7992
2008-04-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
7993
 
 
7994
        * src.mdp: Updated to include typegen/*.
 
7995
        * type.cpp, type.cpp.in, type.h, type.h.in: Added type_get_name, and fix
 
7996
          Behaviour/Behavior inconsistency.
 
7997
 
 
7998
2008-04-15  Jeffrey Stedfast  <fejj@novell.com>
 
7999
 
 
8000
        * media.cpp (MediaElement::OnPropertyChanged): Moved the
 
8001
        PositionProperty seek logic into here so we could get rid of
 
8002
        MediaElement::SetValue() overload.
 
8003
 
 
8004
        * dependencyobject.h (class DependencyObject): SetValue() is no
 
8005
        longer a virtual method.
 
8006
 
 
8007
2008-04-15  Michael Dominic K.  <mdk@mdk.am>
 
8008
 
 
8009
        * clock.cpp: ret_time is 0 when reaching repeat_count == 0. Fixes the
 
8010
        clock35.xaml test.
 
8011
 
 
8012
2008-04-15  Michael Dominic K.  <mdk@mdk.am>
 
8013
 
 
8014
        * clock.cpp: Clock::ComputeNewTime - make sure to take the speed ratio 
 
8015
        into account also when moving back in time. 
 
8016
 
 
8017
        Fixes the clock34.xaml test.
 
8018
 
 
8019
2008-04-15  Michael Dominic K.  <mdk@mdk.am>
 
8020
 
 
8021
        * animation.cpp: Make sure to clamp the progress to 0.0 - 1.0 when we're
 
8022
        calculating it ourselves (instead of using the CalcProgress). Otherwise
 
8023
        we're bypassing the clamping and extending animations/values beyond
 
8024
        their bounds. 
 
8025
 
 
8026
        This is a real fix for the Popfly #378390 (cannot configure the box in
 
8027
        Popfly). Also fixes the clock34.xaml test-case.
 
8028
 
 
8029
2008-04-15  Michael Dominic K.  <mdk@mdk.am>
 
8030
 
 
8031
        * clock.cpp: Since we're at it, small fix in Clock::Tick -- Clamp time
 
8032
        when previous OR current state is Clock::Active.
 
8033
 
 
8034
2008-04-15  Michael Dominic K.  <mdk@mdk.am>
 
8035
 
 
8036
        * clock.cpp: Reverting the change that was supposed to fix popfly. It's
 
8037
        actually totally bad. I knew I was too fast with this one.
 
8038
 
 
8039
2008-04-15  Michael Dominic K.  <mdk@mdk.am>
 
8040
 
 
8041
        * clock.cpp: The time needs to be clamped always. Fixes #378390 (cannot
 
8042
        configure the box in Popfly). Whoah, that was a nasty one.
 
8043
 
 
8044
2008-04-14  Chris Toshok  <toshok@ximian.com>
 
8045
 
 
8046
        * runtime.cpp (Surface::Attach): don't clear the up/down dirty
 
8047
        lists here.  Calling toplevel->SetSurface(NULL) ensures that all
 
8048
        elements from the previous tree have their dirty elements removed,
 
8049
        so what's left will correspond to 1) things that are about replace
 
8050
        the current hierarchy, or 2) things that haven't actually been
 
8051
        added to the hierarchy yet, but need to be associated with a
 
8052
        surface.
 
8053
 
 
8054
        * collection.cpp (Collection::Clear): emit
 
8055
        CollectionChangeTypeChanging event before we do the actual change
 
8056
        so the owner can do something with the children if it needs to.
 
8057
        (VisualCollection::VisualAdded, VisualCollection::VisualRemoved):
 
8058
        nuke.
 
8059
        (VisualCollection::Add): remove call to VisualAdded.  that
 
8060
        behavior will be handled by Panel in its OnCollectionChanged
 
8061
        method.
 
8062
        (VisualCollection::SetVal): same.
 
8063
        (VisualCollection::Insert): same.
 
8064
        (VisualCollection::Remove): same, but with VisualRemoved.
 
8065
        (VisualCollection::RemoveAt): same.
 
8066
        (VisualCollection::Clear): remove the loop calling VisualRemoved.
 
8067
        this will be handled by the additional
 
8068
        CollectionChangeTypeChanging handling in panel.cpp.
 
8069
 
 
8070
        * enums.h (enum CollectionChangeType): add
 
8071
        CollectionChangeTypeChanging.
 
8072
 
 
8073
        * panel.h, panel.cpp (Panel::OnPropertyChanged): handle the case
 
8074
        where the ChildrenProperty is changed, by calling ChildRemoved on
 
8075
        all the old children, and ChildAdded on all the new ones.
 
8076
        (Panel::ChildAdded): new home for VisualCollection::VisualAdded.
 
8077
        (Panel::ChildRemoved): new home for
 
8078
        VisualCollection::VisualRemoved.
 
8079
        (Panel::OnCollectionChanged): add support for
 
8080
        CollectionChangeTypeChanging, so we can remove all children.  this
 
8081
        change type is generated by Collection::Clear.
 
8082
 
 
8083
        * stylus.cpp (Stroke::OnCollectionChanged): add empty handler for
 
8084
        CollectionChangeTypeChanging.
 
8085
        (InkPresenter::OnCollectionChanged): same.
 
8086
 
 
8087
2008-04-14  Jeffrey Stedfast  <fejj@novell.com>
 
8088
 
 
8089
        * media.cpp (Image::CreateSurface): Robustification of image
 
8090
        loading.
 
8091
 
 
8092
2008-04-14  Michael Dominic K.  <mdk@mdk.am>
 
8093
 
 
8094
        * clock.cpp:
 
8095
        * clock.h: When calculating the new time in DoRepeat use modulo on new
 
8096
        value. Otherwise we're 'losing' a little bit of time on every repeat and
 
8097
        end time doesn't match with parent. This fixes a few more "jags" on
 
8098
        animations ie. clock13.xaml.
 
8099
 
 
8100
2008-04-11  Larry Ewing  <lewing@novell.com>
 
8101
 
 
8102
        * xaml.cpp (value_from_str): make sure we propogate the error if
 
8103
        color_from_string returns NULL.
 
8104
 
 
8105
        * color.cpp (color_from_str): return NULL on invalid color values
 
8106
        rather than simply returning black.
 
8107
 
 
8108
        Add an error condition to color_from_string so that we pass the
 
8109
        color tests in ParserErrors test.
 
8110
        
 
8111
2008-04-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8112
 
 
8113
        * dependencyobject.cpp: Surround event emission with ref/unref of ourselves.
 
8114
 
 
8115
2008-04-11  Jeffrey Stedfast  <fejj@novell.com>
 
8116
 
 
8117
        * playlist.cpp: Disable debugging spew unless DEBUG_PLAYLISTS is
 
8118
        defined.
 
8119
 
 
8120
        * downloader.cpp (Downloader::Send): Use
 
8121
        TimeManager::InvokeOnMainThread() here like Rolf did in
 
8122
        MediaBase. Simplifies things by not needing a surface.
 
8123
 
 
8124
        * text.cpp (TextBlock::SetFontSource): Now takes a Downloader
 
8125
        object as opposed to a DependencyObject.
 
8126
 
 
8127
2008-04-11  Michael Dominic K.  <mdk@mdk.am>
 
8128
 
 
8129
        * clock.cpp: in Clock, make sure we CalcProgress on the last tick before
 
8130
        we go Filling/Stopped. Without this we never "finish off" our animations
 
8131
        and depending on the framerate we get "jags". Fixes the clock32.xaml
 
8132
        test.
 
8133
 
 
8134
2008-04-11  Jeffrey Stedfast  <fejj@novell.com>
 
8135
 
 
8136
        * runtime.cpp: Make the dot and eraser cursors const to avoid
 
8137
        compiler warnings.
 
8138
 
 
8139
2008-04-11  Michael Dominic K.  <mdk@mdk.am>
 
8140
 
 
8141
        * enums.c: Removing bolox comment and behavior. Always return -1 on
 
8142
        fail.
 
8143
 
 
8144
        * xaml.cpp: Push a g_warning when we're hitting bad enums on bad props.
 
8145
        Should make it a little bit easier to spot problems.
 
8146
 
 
8147
2008-04-11  Michael Dominic K.  <mdk@mdk.am>
 
8148
 
 
8149
        * dependencyobject.cpp: When calling RegisterAllNamesRootedAt be
 
8150
        actually recursive (I'm not sure why this was commented out? Toshok?). 
 
8151
        Fixes the sprawl end-game animation, #378748.
 
8152
 
 
8153
2008-04-11  Stephane Delcroix  <sdelcroix@novell.com>
 
8154
 
 
8155
        * runtime.cpp: create the stylus and eraser cursors from xpm. Fixes 
 
8156
        bnc #375213. Implemented the MouseCursorNone too.
 
8157
 
 
8158
2008-04-10  Larry Ewing  <lewing@novell.com>
 
8159
 
 
8160
        * xaml.cpp (start_element): throw an error if there is an xml
 
8161
        attribute on a dependency property.
 
8162
 
 
8163
2008-04-10  Larry Ewing  <lewing@novell.com>
 
8164
 
 
8165
        * enums.c (enum_from_str): return -1 on an invalid enum string so
 
8166
        that we can catch it as a ParserError fixes
 
8167
        Parser_Invalid_Enum.xaml.
 
8168
 
 
8169
2008-04-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8170
 
 
8171
        * media.cpp: MediaBase::SetSource: no need to get a
 
8172
          Surface/TimeManager instance to do an asynchronous call, just
 
8173
          call TimeManager::InvokeOnMainThread.
 
8174
 
 
8175
2008-04-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8176
 
 
8177
        * mplayer.h, mplayer.cpp: Added MediaPlayer::AudioFinished, called
 
8178
          by the audio thread when the audio finishes.
 
8179
 
 
8180
        * media.h, media.cpp: Added MediaElement::AudioFinished, called by
 
8181
          the media player when the audio finishes. Enables us to raise
 
8182
          MediaEnded for audio-only media.
 
8183
 
 
8184
2008-04-10  Jeffrey Stedfast  <fejj@novell.com>
 
8185
 
 
8186
        * brush.cpp|media.cpp: All SetSource() entry points now take
 
8187
        Downloader objects rather than DependencyObject arguments - the
 
8188
        same as MSDN defines.
 
8189
 
 
8190
        * media.cpp (SetSourceInternal): More cleanup /
 
8191
        simplification. Since *::SetSource() already takes steps to be
 
8192
        async, no need to use Downloader::Send() which would introduce
 
8193
        another delay in downloading. It should be plenty safe to call
 
8194
        Downloader::SendNow() in all ::SetSourceInternal()
 
8195
        implementations. Also, we now need to handle NULL downloader which
 
8196
        we get called with if the original SetSource() was passed a NULL
 
8197
        downloader.
 
8198
        (Image::SetSource): Don't cleanup the surface here, do that in
 
8199
        SetSourceInternal() so that we delay until appropriate.
 
8200
        (Image::SetSourceInternal): If there is a downloader, delay
 
8201
        CleanupSurface() even longer until the new image has been
 
8202
        downloaded.
 
8203
        (Image::DownloaderComplete): Call CleanupSurface() here.
 
8204
 
 
8205
2008-04-10  Jeffrey Stedfast  <fejj@novell.com>
 
8206
 
 
8207
        * media.cpp: Consolidated Image and MediaElement downloader bits
 
8208
        by putting them into MediaBase.
 
8209
 
 
8210
2008-04-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8211
 
 
8212
        * dependencyobject.cpp: Guard against calling closures which have
 
8213
          been removed during emission of previous events in the same
 
8214
          event list: when we're emitting and a closure is removed, mark
 
8215
          the closure as pending removal, don't call it anymore, and only
 
8216
          remove it when we're finished emitting.
 
8217
 
 
8218
        * dependencyobject.h: Guard against calling closures which have
 
8219
          been removed during emission of previous events in the same
 
8220
          event list.
 
8221
 
 
8222
2008-04-10  Michael Dominic K.  <mdk@mdk.am>
 
8223
 
 
8224
        * downloader.cpp:
 
8225
        * downloader.h:
 
8226
        * media.cpp: A straight-forward fix for "gray flashes" in comic and
 
8227
        slideshow (#375275). It's circumventing a change to make downloaders
 
8228
        async for Image. Jeff, maybe you can figure more?
 
8229
 
 
8230
        (The commit that broke the the slideshow was r99065, Jeff from
 
8231
        2008-03-26).
 
8232
 
 
8233
2008-04-10  Michael Dominic K.  <mdk@mdk.am>
 
8234
 
 
8235
        * shape.cpp: Little fix for new stretching algho by Stephane. Fixes the
 
8236
        Showcase and test-shape-path-stretch2.xaml.
 
8237
 
 
8238
2008-04-09  Chris Toshok  <toshok@ximian.com>
 
8239
 
 
8240
        * stylus.cpp (Stroke::HitTestEndcapSegment): don't fail if root_1
 
8241
        is invalid, as root_2 might be.
 
8242
 
 
8243
2008-04-09  Chris Toshok  <toshok@ximian.com>
 
8244
 
 
8245
        [ Fixes some odd behavior in
 
8246
          http://www.thedatafarm.com/silverink/, and also fixes bug
 
8247
          #375229 ]
 
8248
        
 
8249
        * panel.cpp (Panel::FrontToBack): Kind of a screwy change - we
 
8250
        intersect the expose region with our RenderBounds, not our normal
 
8251
        Bounds.  This forces us to add the ink presenter to the render
 
8252
        list even when the exposed area is just going to redraw a stroke,
 
8253
        not the actual canvas rectangle.  When we go to subtract, however,
 
8254
        we still only subtract the canvas rectangle.
 
8255
 
 
8256
        * stylus.cpp (InkPresenter::OnPropertyChanged): invalidate the old
 
8257
        stroke collection's bounds as well as the new stroke collection's
 
8258
        bounds.
 
8259
        (InkPresenter::OnCollectionChanged): when the collection has
 
8260
        changed, we can't just use Invalidate() since that only
 
8261
        invalidates the canvas bounds.  We need to invalidate our render
 
8262
        bounds to get rid of strokes that are outside the canvas bounds.
 
8263
        Also, make sure to also invalidate the new bounds of the stroke
 
8264
        collection (it will usually be empty, but do it anyway).
 
8265
        (InkPresenter::ComputeBounds): add logic to compute the
 
8266
        render_bounds here.
 
8267
        (InkPresenter::GetRenderBounds): new method.
 
8268
 
 
8269
        * stylus.h (class InkPresenter): add GetRenderBounds, and also add
 
8270
        an OnPropertyChanged method so we can deal with the stroke
 
8271
        collection being assigned to something else.
 
8272
 
 
8273
        * uielement.h (class UIElement): as much as I hate to do this, add
 
8274
        yet another type of bounds (RenderBounds).  this is only here for
 
8275
        the special case of the inkpresenter, which has the normal canvas
 
8276
        bounds (the rectangle), the subtree bounds (which unions the
 
8277
        canvas bounds with the bounds of strokes and children) and render
 
8278
        bounds (which unions canvas bounds and stroke bounds.)
 
8279
 
 
8280
2008-04-09  Jeffrey Stedfast  <fejj@novell.com>
 
8281
 
 
8282
        * dependencyobject.cpp (resolve_property_path): Alias TextElement
 
8283
        to TextBlock to work around some buggy beta versions of Blend.
 
8284
 
 
8285
2008-04-09  Stephane Delcroix  <sdelcroix@novell.com>
 
8286
 
 
8287
        * shape.cpp: Shape::ComputeStretchBounds: compute the stretch assuming
 
8288
        the logical/shape bounds diff stays the same. It's IMHO as close as we
 
8289
        can go without drawing and recalculating.
 
8290
 
 
8291
2008-04-08  Jeffrey Stedfast  <fejj@novell.com>
 
8292
 
 
8293
        * xaml.cpp: Cleaned up some of the debugging printf's and and
 
8294
        wrapped them in d() to declutter console spewage when unneeded.
 
8295
        (xaml_create_from_str): ctype functions take int arguments, where
 
8296
        normal char values are in the range 0-255 - in order to work with
 
8297
        non-GNU, need to cast from char to unsigned char.
 
8298
 
 
8299
        * error.h (class ParserErrorEventArgs): Avoid using the c++ ctor
 
8300
        initializer stuff to be consistent with other classes.
 
8301
 
 
8302
2008-04-08  Sebastien Pouliot  <sebastien@ximian.com>
 
8303
 
 
8304
        * xaml.cpp: Fix (yesterday's fix) on parsing properties. Thanks 
 
8305
        to Jackson.
 
8306
 
 
8307
2008-04-08  Michael Dominic K.  <mdk@mdk.am>
 
8308
 
 
8309
        * clock.cpp:
 
8310
        * clock.h: SkipToFill the automatic duration clock groups except if 
 
8311
        this is the root of all roots clock (the TimeManager's clock). Due to
 
8312
        the idle_hint optimization, we don't process those clocks anyways.
 
8313
 
 
8314
2008-04-08  Michael Dominic K.  <mdk@mdk.am>
 
8315
 
 
8316
        * value.h: 
 
8317
        * animation.cpp:
 
8318
        * animation.h:
 
8319
        * dependencyobject.cpp:
 
8320
        * dependencyobject.h: Making sure that each property is animated only by
 
8321
        a single animation at a time (the last one started). 
 
8322
        From Silverlight forums:
 
8323
 
 
8324
        "Keep in mind Silverlight only supports a single animation on a
 
8325
        property at a time, so if you begin multiple animations on the same
 
8326
        property, the last one will prevail."
 
8327
 
 
8328
        This prevents us from overriding Filling/HoldEnd animations by sb's
 
8329
        started before. 
 
8330
 
 
8331
        The implementation is: for each prop we create a hash table (when
 
8332
        needed) which stores objects (keys) + last AnimationStorage attached
 
8333
        (values). When new AnimationStorage is attached to a prop, the last one
 
8334
        is notified to stop updating the target (we don't touch the clock
 
8335
        structure). And then there is some magic to handle destroy's etc. 
 
8336
 
 
8337
        This fixes PopFly mouse enter/leave problems in the toolbox and the 
 
8338
        http://www.designwithsilverlight.com/tutorials/photoGallery/gallery.html
 
8339
        problems. Fixes #375231, #362363.
 
8340
 
 
8341
2008-04-07  Jeffrey Stedfast  <fejj@novell.com>
 
8342
 
 
8343
        Fixes needed for Zombomatic
 
8344
 
 
8345
        * downloader.cpp (Downloader::GetDownloadedFilePart): When
 
8346
        creating the full pathname for parts we are extracting, convert
 
8347
        everything to lowercase since we need to treat archived filenames
 
8348
        case-insensitively.
 
8349
        (Downloader::GetUnzippedPath): Convert filenames from the zip
 
8350
        archive to lowercase so that it is easier for us to find them
 
8351
        case-insensitively on the filesystem once they are extracted.
 
8352
 
 
8353
2008-04-07  Sebastien Pouliot  <sebastien@ximian.com>
 
8354
 
 
8355
        * xaml.cpp: Fix parsing properties by ensure they start with the 
 
8356
        element name (and not something else). Fix crasher.
 
8357
 
 
8358
2008-04-07  Michael Dominic K.  <mdk@mdk.am>
 
8359
 
 
8360
        * src/shape.cpp:
 
8361
        * src/shape.h: Compute the origin point as a separate step after
 
8362
        computing the shape bounds and the stretch bounds. This fixes the
 
8363
        recently broken sprawl.
 
8364
 
 
8365
        I think it also fixes other things. Before, given the way code was,
 
8366
        the stretch_bounds would affect the origin *only* in the case of Path,
 
8367
        in other cases (Line, Polygon, Polyline...) they would be ignored.
 
8368
 
 
8369
2008-04-04  Chris Toshok  <toshok@ximian.com>
 
8370
 
 
8371
        * stylus.cpp (Stroke::HitTestEndcapSegment): fix this method.  it
 
8372
        was missing a bunch of tests (basically it was intersecting
 
8373
        infinite lines with ellipses, not segments), and some of the math
 
8374
        was wrong.
 
8375
 
 
8376
2008-04-04  Jeffrey Stedfast  <fejj@novell.com>
 
8377
 
 
8378
        Intended to fix bug #373462, but something else is preventing that
 
8379
        site from working now...
 
8380
 
 
8381
        * media.cpp (MediaElement::SetSourceInternal): PartName is no
 
8382
        longer a const char * argument, which means we take ownership of
 
8383
        the PartName string.
 
8384
        (MediaElement::SetSourceAsyncCallback): New method which is the
 
8385
        async callback for SetSource().
 
8386
        (MediaElement::SetSource): Reinitialize() right away.
 
8387
        (MediaElement::SetSource): Clear out any pending SetSource async
 
8388
        data, replacing it with the new downloader/part name info.
 
8389
        (MediaElement::SetSource): Allow a NULL downloader object but make
 
8390
        sure we don't crash in that case either.
 
8391
 
 
8392
2008-04-04  Sebastien Pouliot  <sebastien@ximian.com>
 
8393
 
 
8394
        * dependencyobject.cpp (resolve_property_path): Avoid crash on 
 
8395
        invalid syntax and leaks in other error cases. Fix #377039 (more
 
8396
        test cases coming soon).
 
8397
 
 
8398
2008-04-04  Jeffrey Stedfast  <fejj@novell.com>
 
8399
 
 
8400
        * animation.cpp (KeyFrameCollection::GetKeyFrameForTime): Return
 
8401
        immediately if the array len is 0, prevents a crash accessing
 
8402
        sorted_list->pdata[0] when working backwards in the second
 
8403
        for-loop. Fixes one of the crashes I found while investigating bug
 
8404
        #362561.
 
8405
 
 
8406
2008-04-04  Sebastien Pouliot  <sebastien@ximian.com>
 
8407
 
 
8408
        * runtime.cpp: Don't crash in strcase_hash if the hashtable 
 
8409
        contains NULL values.
 
8410
 
 
8411
2008-04-03  Chris Toshok  <toshok@ximian.com>
 
8412
 
 
8413
        * runtime.cpp (Surface::InitializeWidget): disable the
 
8414
        GDK_POINTER_MOTION_HINT_MASK stuff for now.  we're not passing
 
8415
        tests with it enabled.
 
8416
        (Surface::motion_notify_callback): force the emission of a motion
 
8417
        event.
 
8418
 
 
8419
2008-04-03  Jeffrey Stedfast  <fejj@novell.com>
 
8420
 
 
8421
        * runtime.cpp (Surface::SetCursor): Stylus cursor should map to
 
8422
        the pencil cursor. Also updated Hand (which should be a
 
8423
        left-pointing hand, not right-pointing) and also Eraser (we need
 
8424
        to make our own icon for this, but I suck at art so I'll pass for
 
8425
        now).
 
8426
 
 
8427
2008-04-03  Michael Dominic K.  <mdk@mdk.am>
 
8428
 
 
8429
        * shape.cpp:
 
8430
        * shape.h: Calculate the logical extents when computing the shape bounds
 
8431
        and pass them to the ComputeStretchBounds. They're currently not used in
 
8432
        any way.
 
8433
 
 
8434
2008-04-03  Michael Dominic K.  <mdk@mdk.am>
 
8435
 
 
8436
        * shape.cpp: Don't init the stretch matrix to identity on each
 
8437
        Shape::ComputeShapeBounds. We want to be able to call it freely.
 
8438
 
 
8439
2008-04-02  Michael Dominic K.  <mdk@mdk.am>
 
8440
 
 
8441
        * geometry.cpp: Use the cairo_path_extents to calculate the logical
 
8442
        bounds instead of faking small stroke.
 
8443
 
 
8444
2008-04-02  Michael Dominic K.  <mdk@mdk.am>
 
8445
 
 
8446
        * shape.cpp:
 
8447
        * shape.h: Adding new parameter (bool logical) to all the
 
8448
        Shape::ComputeShapeBounds functions and overrides. See prev commit for
 
8449
        explanation of what is logical bounds.
 
8450
 
 
8451
        Currently all clients use logical == false. Just adding this
 
8452
        functionality.
 
8453
 
 
8454
2008-04-02  Michael Dominic K.  <mdk@mdk.am>
 
8455
 
 
8456
        * geometry.cpp:
 
8457
        * geometry.h:
 
8458
        * shape.cpp:
 
8459
        * uielement.cpp: Adding new parameter (bool logical) to all the
 
8460
        Geometry::ComputeBounds functions and overrides. Calculating logical
 
8461
        bounds means calculating bounds without stroke included. Ie. a line
 
8462
        (0,0) - (100, 0) has logical bounds of width=100, height=0, no matter
 
8463
        what the stroke is. 
 
8464
 
 
8465
        Not used right now, will be used in just a few commits (all current
 
8466
        ComputeBounds clients call it will logical == false).
 
8467
 
 
8468
2008-04-02  Michael Dominic K.  <mdk@mdk.am>
 
8469
 
 
8470
        * shape.cpp: Don't automatically compute the stretch bounds when
 
8471
        computing shape bounds. Instead, compute it as a separate step in
 
8472
        Shape::ComputeBounds.
 
8473
 
 
8474
2008-04-03  Chris Toshok  <toshok@ximian.com>
 
8475
 
 
8476
        * uielement.cpp (UIElement::EmitMouseLeave): turns out that,
 
8477
        contrary to msdn2, MS *is* indeed emitting this event with
 
8478
        non-null eventargs.  it's just an EventArgs object, not a
 
8479
        MouseEventArgs.
 
8480
 
 
8481
2008-04-03  Jeffrey Stedfast  <fejj@novell.com>
 
8482
 
 
8483
        * dependencyobject.cpp (EventObject::Emit): Unref the calldata
 
8484
        even in the "no such event" exception case.
 
8485
 
 
8486
2008-04-03  Larry Ewing  <lewing@novell.com>
 
8487
 
 
8488
        * xaml.cpp: (expat_parser_error): translate XML_ERROR_NO_ELEMENTS
 
8489
        into appropriate error code.
 
8490
 
 
8491
2008-04-03  Larry Ewing  <lewing@novell.com>
 
8492
 
 
8493
        * xaml.cpp: Generate errors when trying to set readonly properties.
 
8494
 
 
8495
2008-04-03  Larry Ewing  <lewing@novell.com>
 
8496
 
 
8497
        * xaml.cpp: make sure we set an error if the property name isn't
 
8498
        valid.
 
8499
 
 
8500
        * runtime.cpp: make it legal to attach to a NULL toplevel, hook up
 
8501
        the needed events.
 
8502
 
 
8503
2008-04-03  Larry Ewing  <lewing@novell.com>
 
8504
 
 
8505
        * runtime.cpp (Surface::expose_to_drawable): make sure we take
 
8506
        allocation.x and allocation.y into account when deciding not to
 
8507
        draw.  Should fix the disappearing gtksilver widget reported on irc.
 
8508
 
 
8509
2008-04-02  Larry Ewing  <lewing@novell.com>
 
8510
 
 
8511
        * xaml.cpp: flush character data at the end of property elements
 
8512
        too.
 
8513
 
 
8514
2008-04-02  Jackson Harper  <jackson@ximian.com>
 
8515
 
 
8516
        * xaml.cpp: Add the element name for this error.
 
8517
 
 
8518
2008-04-02  Chris Toshok  <toshok@ximian.com>
 
8519
 
 
8520
        * stylus.cpp (Stroke::HitTestEndcapSegment): fix up some math.
 
8521
        (Stroke::HitTestEndcapPoint): same.
 
8522
        (point_gte_line): new method.
 
8523
        (point_lte_line): new method.
 
8524
        (Stroke::HitTestSegmentPoint): use point_gte_line and
 
8525
        point_lte_line to determine if the point is inside the segment.
 
8526
        (global): wrap all spew in DEBUG_HITTEST.
 
8527
        
 
8528
2008-04-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8529
 
 
8530
        * pipeline.cpp, mplayer.cpp, pipeline.h: Remove SeekToStart completely, it's
 
8531
          just plain broken.
 
8532
 
 
8533
2008-04-02  Jeffrey Stedfast  <fejj@novell.com>
 
8534
 
 
8535
        * media.cpp (MediaElement::UpdatePlayerPosition): Cast to same
 
8536
        integer type when comparing.
 
8537
 
 
8538
        * playlist.cpp (Playlist::OnMediaEnded): Prevent a segfault in the
 
8539
        debugging printfs. Fixes bug #375273.
 
8540
 
 
8541
2008-04-01  Chris Toshok  <toshok@ximian.com>
 
8542
 
 
8543
        * xaml.cpp: back out the SetSurface call removal.
 
8544
 
 
8545
        * dependencyobject.cpp (EventObject::unref): instead,
 
8546
        SetSurface(NULL) here before we delete the object.
 
8547
 
 
8548
2008-04-01  Chris Toshok  <toshok@ximian.com>
 
8549
 
 
8550
        * control.cpp (Control::InitializeFromXaml): make sure to call
 
8551
        SetSurface(NULL) on the old real_object since we're detaching it
 
8552
        from the tree.  Call SetSurface on ourselves (really, should just
 
8553
        be the real_object, right?) before calling the real_object methods
 
8554
        that would cause dirty stuff to happen.
 
8555
 
 
8556
        * xaml.cpp (create_custom_element): don't call SetSurface here, it
 
8557
        will cause problems if there's a parser error (since elements
 
8558
        can/will be on the surface's dirty list after they're destroyed.)
 
8559
        (default_create_element_instance): same.
 
8560
 
 
8561
2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8562
 
 
8563
        * playlist.cpp, playlist.h: A lot of fixes according to the tests.
 
8564
        * mplayer.h, mplayer.cpp: Initialize the rgb buffer. Add a start_pts to
 
8565
          specify where in the stream we start and (playlists can specify a
 
8566
          starting point which isn't in the beginning), and set the duration from
 
8567
          the playlist (if the playlist has it).
 
8568
        * media.cpp: MediaElement::SetMedia: Handle the case if mplayer returns
 
8569
          false from MediaPlayer::Open. MediaElement::MediaOpened: Handle the case
 
8570
          if the recursive playlist couldn't be replaced.
 
8571
 
 
8572
2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8573
 
 
8574
        * media.h: Added MediaElement::GetPlaylist.
 
8575
 
 
8576
2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8577
 
 
8578
        * type.cpp, type.cpp.in, type.h, type.h.in, value.cpp, value.h, value.h.in:
 
8579
          Remove Type::NPOBJ, it's not needed.
 
8580
 
 
8581
2008-04-01  Michael Dominic K.  <mdk@mdk.am>
 
8582
 
 
8583
        * animation.cpp: Since now the clocks are synced we don't need to
 
8584
        recursively check the states in the teardown on completed.
 
8585
 
 
8586
2008-04-01  Michael Dominic K.  <mdk@mdk.am>
 
8587
 
 
8588
        * clock.cpp:
 
8589
        * clock.h: Getting rid of the nasty clock desyncing (setting ClockGroup
 
8590
        manually to Stopped but not touching the state of children).
 
8591
 
 
8592
        We do this by introducing a new idle_hint on ClockGroup. If idle_hint is
 
8593
        set, we don't tick the ClockGroup no matter what the state is. Idle_hint
 
8594
        is set when all children of ClockGroup have state != Active (ie. are
 
8595
        filling). This can be seen as "optimization" -- not to dumbly process
 
8596
        filling clocks which keep setting same value all the time (it creates
 
8597
        insane recursion ie. in Showcase making it unusable). Silverlight seems
 
8598
        to do something very similiar.
 
8599
 
 
8600
        Before this commit a same effect was achieved by the said "desyncing" --
 
8601
        forcing the ClockGroup to Stopped. This approach however is a bit more
 
8602
        clean. 
 
8603
 
 
8604
2008-04-01  Michael Dominic K.  <mdk@mdk.am>
 
8605
 
 
8606
        * animation.cpp: Chain to parent's Clock::Stop in AnimationClock::Stop.
 
8607
 
 
8608
2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8609
 
 
8610
        * pipeline.cpp: Use base_unref, base_unref_delayed doesn't exist anymore.
 
8611
 
 
8612
2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8613
 
 
8614
        * value.cpp: Remove a few warnings which might give false positives now.
 
8615
 
 
8616
2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8617
 
 
8618
        * dependencyobject.h, dependencyobject.cpp: EventObject::unref: check if
 
8619
          we're being unreffed on the main thread, if not, call unref_delayed.
 
8620
 
 
8621
2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8622
 
 
8623
        * runtime.cpp, runtime.h: Added a Surface::InMainThread.
 
8624
 
 
8625
2008-04-01  Fernando Herrera  <fherrera@novell.com>
 
8626
 
 
8627
        * media.cpp: Remove the request position function when aborting the
 
8628
        downloader.
 
8629
 
 
8630
2008-04-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8631
 
 
8632
        * media.cpp, media.h, mplayer.cpp, mplayer.h: Add a dtor parameter to
 
8633
          MediaElement::Reinitialize and MediaPlayer::Close to specify if we're
 
8634
          being called from the destructor, and if so, null out the element field
 
8635
          of the MediaPlayer, so that we don't access a destructed media element.
 
8636
          Add an async version of MediaPlayer::EnqueueFrames, so that the audio
 
8637
          threads can request more data in a thread-safe manner.
 
8638
 
 
8639
2008-04-01  Fernando Herrera  <fherrera@novell.com>
 
8640
 
 
8641
        * asf/asf.cpp:
 
8642
        * pipeline.h: Support for live mms streams, that have packet_count as
 
8643
        0 and return false for CanSeekToPts.
 
8644
 
 
8645
2008-03-31  Chris Toshok  <toshok@ximian.com>
 
8646
 
 
8647
        * namescope.h, namescope.cpp: make no semblance of having a
 
8648
        superior namescope implementation (where they get transported
 
8649
        around with the subtree they're attached to when it's
 
8650
        removed/re-added to the hierarchy.)  Instead follow MS's broken
 
8651
        implementation where temporary namescopes are completely removed
 
8652
        when merged into another one.
 
8653
 
 
8654
        * collection.h, collection.cpp (Collection::MergeNames): factor
 
8655
        out some common code from Add, Insert, and SetVal. Also, deal with
 
8656
        the fact that merging namescopes now really adds all the names to
 
8657
        the parent namescope, so clear the old namescope.
 
8658
        (Collection::SetVal): don't just unregister the old toplevel name,
 
8659
        but all the names in the subtree.
 
8660
        (Collection::Remove): same.
 
8661
        (Collection::Clear): same.
 
8662
        (Collection::UnregisterAllNamesRootedAt): override DO's method,
 
8663
        recursing into all our children.
 
8664
        (Collection::RegisterAllNamesRootedAt): same.
 
8665
        (VisualCollection::VisualRemoved): clear the IS_LOADED flag so
 
8666
        UIElement::OnLoaded is called again, and <BeginStoryboard>
 
8667
        elements restart when the subtree is added to the hierarchy again.
 
8668
 
 
8669
        * control.h, control.cpp (Control::UnregisterAllNamesRootedAt):
 
8670
        override and forward onto real_object.
 
8671
        (Control::RegisterAllNamesRootedAt): same.
 
8672
        
 
8673
        * dependencyobject.cpp (DependencyObject::ClearValue): add a
 
8674
        parameter to allow us to specify *not* to notify listeners of the
 
8675
        property change.  we do this with the NameScope property, which
 
8676
        noone should be listening too.  It was causing a tremendous
 
8677
        performance hit when merging a lot of namescopes (as we do in
 
8678
        inkStylusPointCount.htm)
 
8679
        (DependencyObject::UnregisterAllNamesRootedAt): used when a DO is
 
8680
        removed from the hierarchy, we need to unregister all the names
 
8681
        beneath it.
 
8682
        (DependencyObject::RegisterAllNamesRootedAt): used when a DO is
 
8683
        added to the hierarchy, if it doesn't have a temporary
 
8684
        namescope (in which case we just merge it).
 
8685
 
 
8686
2008-03-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8687
 
 
8688
        * pipeline.cpp, pipeline.h: MemorySource: Add a value specifying if the
 
8689
          MemorySource owns the memory or not (if it will be freed upon
 
8690
          destruction or not).
 
8691
 
 
8692
2008-03-31  Jeffrey Stedfast  <fejj@novell.com>
 
8693
 
 
8694
        * stylus.cpp (Stroke::HitTestEndcap): Fixed a bug where the
 
8695
        for-loop would only use every other point as a starting point for
 
8696
        a segment. E.g. if you had points a, b, c, d and e - the code only
 
8697
        checked segments ab, cd, and e when it should have been checking
 
8698
        ab, bc, cd, and de.
 
8699
 
 
8700
2008-03-31  Fernando Herrera  <fherrera@novell.com>
 
8701
 
 
8702
        * downloader.cpp: Check if aborted before cheking for requested
 
8703
        position.
 
8704
 
 
8705
2008-03-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8706
 
 
8707
        * pipeline.cpp, pipeline.h: Moved locking down to IMediaSource from
 
8708
          ProgressiveSource.
 
8709
        * playlist.cpp: Updated according to pipeline changes.
 
8710
        * mplayer.h: Fix SetState to not overwrite current bits, only current state.
 
8711
        * media.h, media.cpp: Rework buffering progress to use the available time of
 
8712
          media available (pts) instead of doing some funny math on file
 
8713
          positions.
 
8714
        * mplayer.cpp: Don't allow SetTargetPts if we're waiting for a seek.
 
8715
 
 
8716
2008-03-31  Michael Dominic K.  <mdk@mdk.am>
 
8717
 
 
8718
        * animation.cpp: Don't Stop the Storyboard root_clock before begining
 
8719
        the Storyboard again, just silently tear it down.
 
8720
 
 
8721
        Calling Stop resets the property values to base which is something we
 
8722
        don't want. When Begin () is called on Sb in SL, the last animated
 
8723
        values are used. 
 
8724
 
 
8725
2008-03-31  Michael Dominic K.  <mdk@mdk.am>
 
8726
 
 
8727
        * animation.cpp:
 
8728
        * animation.h: Adding Storyboard::DetachClockGroupFromParent () that
 
8729
        works similar to Teardown but doesn't destroy the clock/animation
 
8730
        hierarchy. We need this hierarchy to ie. reset prop values to base when
 
8731
        Storyboard::Stop is called manually. 
 
8732
 
 
8733
        When Storyboard is completed, call DetachClockGroupFromParent (if not
 
8734
        Teardown). Otherwise the Storyboard will ghostly change state with parent 
 
8735
        state changes.
 
8736
 
 
8737
2008-03-31  Michael Dominic K.  <mdk@mdk.am>
 
8738
 
 
8739
        * animation.cpp: Slightly reworking the clock_is_fully_stopped_recursive
 
8740
        to check for NULL and report stopped == true when both ClockGroup state
 
8741
        is Stopped and all children are Stopped. 
 
8742
 
 
8743
        To be honest, this never currently reports Stopped == true as we do
 
8744
        intentional state desync when storyboard reaches end -- setting the
 
8745
        ClockGroup state to Stopped but keeping the children in Active/Filling.
 
8746
        This *has* to go away.
 
8747
 
 
8748
2008-03-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8749
 
 
8750
        * src.mdp: Updated.
 
8751
 
 
8752
2008-03-28  Jeffrey Stedfast  <fejj@novell.com>
 
8753
 
 
8754
        * utils.cpp (TextStream::Read): Better handling of iconv() failure
 
8755
        cases.
 
8756
 
 
8757
2008-03-28  Chris Toshok  <toshok@ximian.com>
 
8758
 
 
8759
        * animation.cpp, animation.h: remove Storyboard::FindSurface -
 
8760
        EventObject::GetSurface() always returns the right thing.
 
8761
        Override SetSurface to check whether we're being detached from or
 
8762
        attached to a surface, and pause or resume the clock in response.
 
8763
        This fixes some issues in storyboard_EnterLeaveSemantics.
 
8764
 
 
8765
2008-03-28  Chris Toshok  <toshok@ximian.com>
 
8766
 
 
8767
        * dependencyobject.h,
 
8768
        dependencyobject.cpp (DependencyObject::SetSurface): new method,
 
8769
        set the surface for all our DependencyObject subclassed property
 
8770
        values.
 
8771
 
 
8772
        * collection.h, collection.cpp (Collection::Add): SetSurface work.
 
8773
        (Collection::Insert): same.
 
8774
        (Collection::SetVal): same.
 
8775
        (Collection::Remove): same.
 
8776
        (Collection::RemoveAt): same.
 
8777
        (Collection::Clear): same.
 
8778
        (Collection::SetSurface): new method, iterate over all children
 
8779
        setting the surface.
 
8780
        (VisualCollection): remove surface logic here.
 
8781
        (VisualCollection::VisualAdded): same.
 
8782
        (VisualCollection::VisualRemoved): same.
 
8783
 
 
8784
2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8785
 
 
8786
        * mplayer.cpp: Clear all queues after a seek has completed.
 
8787
 
 
8788
2008-03-28  Jeffrey Stedfast  <fejj@novell.com>
 
8789
 
 
8790
        * text.cpp (deobfuscate_font): Updated for CopyFileTo() rename.
 
8791
 
 
8792
        * downloader.cpp (Downloader::CleanupUnzipDir): Updated for
 
8793
        RemoveDir() rename.
 
8794
        (create_unzipdir): Updated for MakeTempDir() rename.
 
8795
 
 
8796
        * utils.cpp (MakeTempDir): Renamed from make_tmpdir() to try and
 
8797
        be more consistent with moonlight API naming convensions.
 
8798
        (RemoveDir): Renamed from moon_rmdir().
 
8799
        (CopyFileTo): Renamed from moon_copy_file()
 
8800
 
 
8801
2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8802
 
 
8803
        * debug.cpp: Fix warning.
 
8804
 
 
8805
2008-03-28  Michael Dominic K.  <mdk@mdk.am>
 
8806
 
 
8807
        * clock.cpp: Fixing the clock repeat for duration-based
 
8808
        RepeatBehavior. 
 
8809
        
 
8810
        Fixes the clock14.xaml and clock31.xaml tests. All 31 clock tests are
 
8811
        passing now (same behavior as in SL).
 
8812
 
 
8813
2008-03-28  Michael Dominic K.  <mdk@mdk.am>
 
8814
 
 
8815
        * clock.cpp: In ComputeNewTime: when we're moving backward and hitting
 
8816
        the bound decrease the repeat_count no matter what (if auto-reversed or
 
8817
        not). This makes the auto-reversed storyboard work.
 
8818
 
 
8819
        Fixes the clock7.xaml and clock30.xaml. The only clock test broken now
 
8820
        is clock14.xaml.
 
8821
 
 
8822
2008-03-28  Michael Dominic K.  <mdk@mdk.am>
 
8823
 
 
8824
        * animation.cpp: Teardown the storyboard in Completed only if the root
 
8825
        clock is stopped AND all the children are stopped too. After teardown we
 
8826
        loose the ability to reset-back the values and Completed is
 
8827
        fired always, even if the clock is filling (a filling clock should reset
 
8828
        on Stop).
 
8829
        
 
8830
        This ie. fixes http://www.idcorporate.com.ar/ and other sites that use
 
8831
        the popular methodology of beginning a filling Storyboard on MouseEnter
 
8832
        and stopping it on MouseLeave.
 
8833
 
 
8834
2008-03-27  Michael Dominic K.  <mdk@mdk.am>
 
8835
 
 
8836
        * runtime.cpp: Ignore the enter/leave crossing events coming as a 
 
8837
        result of grab/press started/finished.
 
8838
 
 
8839
2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8840
 
 
8841
        * uielement.cpp, pipeline.h, media.cpp, brush.cpp: Update according to
 
8842
          MediaPlayer changes.
 
8843
        * mplayer.cpp, mplayer.h: Major cleanup in MediaPlayer: make all fields
 
8844
          private, and add public accessors when required. Remove all boolean
 
8845
          fields and add a single bit/state field with its corresponding enum and
 
8846
          public accessors. Removed IncTargetPts, StopThreads and PauseInternal,
 
8847
          no longer used. Removed unused defines. Made video and audio structures
 
8848
          nested inside MediaPlayer instead of pointers (and queue inside
 
8849
          video/audio), avoids pointer accesses and additional malloc/frees, since
 
8850
          they were always created anyways. Don't seek to anywhere in Stop if
 
8851
          we're stopping because we're closing, since it may cause crashes if
 
8852
          we're closing because the MediaElement is being destructed (it may cause
 
8853
          the MediaElement to be resurrected). Made public methods private
 
8854
          whenever possible.
 
8855
 
 
8856
2008-03-28  Fernando Herrera  <fherrera@novell.com>
 
8857
 
 
8858
        * asf/asf.cpp: Use the pts == 0 optimization before trying to
 
8859
        SeekToPts.
 
8860
 
 
8861
        * downloader.cpp:
 
8862
        * downloader.h: Add functions to allow request a remote postition.
 
8863
 
 
8864
        * media.cpp:
 
8865
        * media.h:
 
8866
        * pipeline.cpp:
 
8867
        * pipeline.h: Implement SeekToPts for mms:// sources.
 
8868
 
 
8869
2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8870
        
 
8871
        * dependencyobject.h: Detect an unrecoverable error condition with
 
8872
          refcounting (reffing an object with refcount of 0), and abort instead of
 
8873
          crashing randomly and insecurely later on.
 
8874
 
 
8875
2008-03-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8876
 
 
8877
        * mplayer.h, mplayer.cpp: Remove more unused fields in MediaPlayer.
 
8878
 
 
8879
2008-03-27  Jeffrey Stedfast  <fejj@novell.com>
 
8880
 
 
8881
        * downloader.cpp (Downloader::GetResponseText): Use the new
 
8882
        TextStream class.
 
8883
 
 
8884
        * utils.cpp (TextStream::Open): Fixed the BOM checking, had LE/BE
 
8885
        reversed.
 
8886
 
 
8887
        * xaml.cpp (xaml_create_from_file): Oops, if we read 0 bytes, make
 
8888
        sure to exit the loop ;-)
 
8889
 
 
8890
2008-03-27  Jeffrey Stedfast  <fejj@novell.com>
 
8891
 
 
8892
        * xaml.cpp (xaml_create_from_file): Use the new TextStream class
 
8893
        instead of doing things the hard way. Might be more performant,
 
8894
        definitely won't malloc/free nearly as much. Also fixed a bug
 
8895
        where leading lwsp might be larger than our read buffer.
 
8896
 
 
8897
        * utils.cpp (TextStream): New class for reading text input
 
8898
        streams, converting them to UTF-8 as they are read.
 
8899
 
 
8900
        * downloader.cpp (Downloader::Send): Handle the case where the
 
8901
        attached surface is NULL.
 
8902
        (Downloader::GetResponseText): Handle zero-length files. Also,
 
8903
        nul-terminate the returned buffer (which is now a char* rather
 
8904
        than a void*) since it is clear that the javascript expects to be
 
8905
        able to use this value as a string buffer.
 
8906
 
 
8907
2008-03-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8908
        
 
8909
        * mplayer.h, mplayer.cpp: Don't create any audio threads until we're
 
8910
          requested to play audio. Don't hold the lock when polling.
 
8911
 
 
8912
2008-03-26  Jeffrey Stedfast  <fejj@novell.com>
 
8913
 
 
8914
        * downloader.cpp (Downloader::SendInternal): New method that is
 
8915
        basically the same as the old ::Send().
 
8916
        (Downloader::Send): Queue the SendInternal() call via
 
8917
        TimeManager's TickCall API.
 
8918
 
 
8919
2008-03-26  Chris Toshok  <toshok@ximian.com>
 
8920
 
 
8921
        * dependencyobject.h, dependencyobject.cpp (class EventObject):
 
8922
        add RemoveMatchingHandlers variants that let you pass in a
 
8923
        predicate to test event handlers with.
 
8924
 
 
8925
2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8926
 
 
8927
        * pipeline.cpp, pipeline.h: ASFDemuxer: updated according to asf
 
8928
          changes.  Added a MemoryStream.
 
8929
 
 
8930
        * media.cpp: Updated according to API changes.
 
8931
 
 
8932
2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8933
 
 
8934
        * mplayer.cpp, mplayer.h: Add a new state to the audio:
 
8935
          WaitingForData, in which case we don't poll on that audio
 
8936
          node (since the hardware will just tell us it's ready to recieve
 
8937
          data). Fixes audio using 100% cpu after when it runs out of
 
8938
          data (either because of network hiccup or the stream finished).
 
8939
 
 
8940
2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8941
 
 
8942
        * pipeline.cpp, mplayer.cpp, pipeline.h: Made
 
8943
          IMediaStream::selected private and add accessors.
 
8944
 
 
8945
2008-03-26  Stephane Delcroix  <sdelcroix@novell.com>
 
8946
 
 
8947
        * shape.h:
 
8948
        * shape.cpp: set the dash caps for all the shapes, draw start/end caps
 
8949
        on line and polylines.
 
8950
 
 
8951
2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8952
 
 
8953
        * mplayer.cpp: Remove unused fields.
 
8954
 
 
8955
2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8956
 
 
8957
        * debug.cpp: Correctly compute base addresses of libraries, and use a
 
8958
          thread-safe version of strtok.
 
8959
 
 
8960
2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8961
 
 
8962
        * runtime.h, runtime.cpp, pipeline.cpp: Reverse the meaning of our YUV flag
 
8963
          - it's now necessary to explicitly disable it in order to get rid of it
 
8964
          instead of relying on a default flag to have the right value in order to
 
8965
          get it. Makes video work with mopen again.
 
8966
 
 
8967
2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8968
 
 
8969
        * pipeline.cpp: Fix a crash.
 
8970
 
 
8971
2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8972
 
 
8973
        * mplayer.cpp: Remove Instance (), it's redundant.
 
8974
        * mplayer.h: AudioPlayer: Remove Instance (), it's redundant. Synchronize
 
8975
          everything in the audio player with one semaphore, it simplifies things
 
8976
          and removes a couple of problems helgrind found.
 
8977
        * pipeline.cpp: ~Media: Add a nullcheck. Media::Initialize: Initialize the
 
8978
          audio player as well. Use delayed unreffing in destructors which may be
 
8979
          called on worker threads.
 
8980
 
 
8981
2008-03-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
8982
 
 
8983
        * runtime.cpp, runtime.h: Remove the pending unref stuff from Surface.
 
8984
        * dependencyobject.cpp: Remove the surface-based delayed unloading, it's not
 
8985
          thread-safe and making it thread-safe isn't worth it. Also use a pthread
 
8986
          mutex instead of a glib mutex, since helgrind reports a lot of false
 
8987
          positives for glib mutexes. Hold the mutex for the smallest amount of
 
8988
          time possible, making it unnecessary to use a recursive mutex.
 
8989
 
 
8990
2008-03-26  Michael Dominic K.  <mdk@mdk.am>
 
8991
 
 
8992
        * shape.cpp: Reverting the clip changes, it was bolox.
 
8993
 
 
8994
2008-03-25  Jeffrey Stedfast  <fejj@novell.com>
 
8995
 
 
8996
        * pipeline.cpp (Mp3FrameReader::EstimatePtsPosition): Get rid of
 
8997
        the assert - it was only needed during implementation to make sure
 
8998
        the bsearch worked correctly.
 
8999
        (Mp3FrameReader::Seek): Same.
 
9000
 
 
9001
2008-03-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9002
 
 
9003
        * media.cpp: Don't access any TimeManager instance from another thread, just
 
9004
          call the static TimeManager::InvokeOnMainThread.
 
9005
 
 
9006
2008-03-25  Michael Dominic K.  <mdk@mdk.am>
 
9007
 
 
9008
        * src/shape.cpp: Shape is empty always when it's bounds are <= 0.0, even
 
9009
        if Width/Height was specified. Fixes a bogus warning about infinity
 
9010
        transformations.
 
9011
 
 
9012
2008-03-25  Michael Dominic K.  <mdk@mdk.am>
 
9013
 
 
9014
        * src/shape.cpp: When setting the clipping for the shape also include
 
9015
        the transformations coming from stretching. This fixes
 
9016
        test-shape-line-stretch3 test and the missing stripes on Silverlight
 
9017
        showcase.
 
9018
 
 
9019
2008-03-24  Chris Toshok  <toshok@ximian.com>
 
9020
 
 
9021
        * runtime.h (class Surface): add
 
9022
        Surface::PropagateDirtyFlagToChildren.
 
9023
 
 
9024
        * dirty.cpp (Surface::PropagateDirtyFlagToChildren): factor this
 
9025
        duplicated code out of ProcessDownDirtyElements.
 
9026
 
 
9027
2008-03-24  Chris Toshok  <toshok@ximian.com>
 
9028
 
 
9029
        * panel.cpp (Panel::FrontToBack): remove the tree walking
 
9030
        code (where we walked up the hierarchy looking for cases where we
 
9031
        shouldn't subtract.)  Instead, we always subtract if the local
 
9032
        state says we can.  Instead of forcing all leaf elements to walk
 
9033
        up to their parent panel, we assume they'll operate on local state
 
9034
        as well, and give them a copy of the region to subtract their
 
9035
        bounds from, instead of the real region.  We are sneaky.
 
9036
 
 
9037
        * uielement.cpp (UIElement::FrontToBack): Operate on our local
 
9038
        state only, no walking up the tree.
 
9039
 
 
9040
2008-03-24  Jeffrey Stedfast  <fejj@novell.com>
 
9041
 
 
9042
        * pipeline.cpp (mpeg_parse_header): Fix the MPEG layer parsing, it
 
9043
        was seemingly getting layer 1 and layer 2 backwards.
 
9044
        (mpeg_frame_length): Seems like we are never supposed to add 2
 
9045
        bytes for 16bit crc?
 
9046
 
 
9047
        * layout.cpp (TextLayout::LayoutWrap): If the glyph advance is 0,
 
9048
        then don't bother applying kerning. Fixes 2 cases in
 
9049
        LineBreakClasses.htm
 
9050
        (TextLayout::LayoutWrap): Disable breaking after a
 
9051
        G_UNICODE_BREAK_AFTER if we can break before the word as this
 
9052
        seems to fix the last test case in LineBreakBasic1.htm
 
9053
        (TextLayout::LayoutWrap): Reverted a fix that introduced a
 
9054
        regression but didn't fix any known test cases.
 
9055
 
 
9056
2008-03-21  Michael Dominic K.  <mdk@mdk.am>
 
9057
 
 
9058
        * src/runtime.cpp: When calling gdk_window_get_pointer in
 
9059
        motion_notify_ to pop more hints actually use the results as they're
 
9060
        more valid than x,y in the event passed. Without doing so, we're not
 
9061
        getting the last mouse coords.
 
9062
 
 
9063
        Fixes the nasty problem that MouseEnter/Leave is not called once in a
 
9064
        while.
 
9065
 
 
9066
2008-03-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9067
 
 
9068
        * brush.cpp, media.cpp, mplayer.cpp, mplayer.h: Refcount MediaPlayer. Rename
 
9069
          MediaPlayer::GetSurface to GetCairoSurface so that it doesn't conflict
 
9070
          with EventObject::GetSurface.
 
9071
 
 
9072
2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
 
9073
 
 
9074
        * font.cpp (TextFont::GetGlyphInfo): Comment out the fixed-width
 
9075
        font hack for now.
 
9076
 
 
9077
        * text.cpp (deobfuscate_font): New helper function used by
 
9078
        TextBlock and Glyphs.
 
9079
        (TextBlock::DownloaderComplete): Check for obfuscated fonts.
 
9080
        (Glyphs::DownloaderComplete): Same.
 
9081
 
 
9082
        * font.cpp (DecodeObfuscatedFontGUID): New function to decode the
 
9083
        GUID from a string.
 
9084
        (DeobfuscateFontFileWithGUID): Deobfuscate a font file in-place.
 
9085
        (TextFont::OpenFontDirectory): Renamed from OpenZipArchiveFont()
 
9086
        since we no longer get passed zip files. Instead of extracting
 
9087
        fonts from a zip archive, we now index the fonts in the
 
9088
        directory (if they haven't already been indexed) and then try to
 
9089
        find the best matching font from the indexed fonts.
 
9090
        (IndexFontDirectory): New function to index all fonts in a
 
9091
        directory (and all subdirs).
 
9092
        (TextFont::TextFont): Changed for other API changes.
 
9093
 
 
9094
2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
 
9095
 
 
9096
        * downloader.cpp (Downloader::IsDeobfuscated)
 
9097
        (Downloader::SetDeobfuscated, Downloader::SetDeobfuscatedFile):
 
9098
        Some new methods for replacing the original downloaded file with
 
9099
        another tmp file that will need to be unlinked when the downloader
 
9100
        is destroyed or a new file is requested.
 
9101
 
 
9102
        * utils.cpp (moon_copy_file): New convenience function.
 
9103
 
 
9104
2008-03-20  Jeffrey Stedfast  <fejj@novell.com>
 
9105
 
 
9106
        * downloader.cpp (Downloader::Downloader): Initialize the unzipdir
 
9107
        and unzipped state variables. Get rid of part_hash, no longer
 
9108
        needed.
 
9109
        (Downloader::CleanupUnzipDir): New method to cleanup the files
 
9110
        extracted from any zip files we downloaded.
 
9111
        (Downloader): Call CleanupUnzipDir ().
 
9112
        (Downloader::GetDownloadedFile): New method that gets the original
 
9113
        untouched downloaded file path.
 
9114
        (Downloader::DownloadedFileIsZipped): New method to check to see
 
9115
        if the downloaded file is a zip archive.
 
9116
        (Downloader::GetDownloadedFilePart): A new method that replaces
 
9117
        the old GetResponseFile() API, behaves the same as the old API.
 
9118
        (Downloader::GetUnzippedPath): New method to get the unzip
 
9119
        directory path (and unzip the downloaded file if it hasn't already
 
9120
        been unzipped).
 
9121
        (Downloader::Open): Cleanup any extracted zip files.
 
9122
 
 
9123
        * utils.cpp (moon_rmdir): New convenience function.
 
9124
 
 
9125
2008-03-20  Larry Ewing  <lewing@novell.com>
 
9126
 
 
9127
        * runtime.cpp (Surface::ShowFullScreenMessage): make sure we set
 
9128
        the surface first so that the changes to the properties cause
 
9129
        invalidations.
 
9130
 
 
9131
2008-03-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9132
 
 
9133
        * src.mdp: Added new files.
 
9134
 
 
9135
2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9136
 
 
9137
        * pipeline.h: Added CanSeekToPts and SeekToPts to IMediaStream.
 
9138
 
 
9139
2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9140
 
 
9141
        * pipeline.h: Added two more error conditions.
 
9142
 
 
9143
2008-03-19  Jeffrey Stedfast  <fejj@novell.com>
 
9144
 
 
9145
        * font.cpp (TextFont::GetGlyphInfo): Use a different approach to
 
9146
        caching glyphs. Try to take full advantage of the pre-allocated
 
9147
        glyphs array before clobbering previously loaded glyphs.
 
9148
 
 
9149
2008-03-19  Michael Dominic K.  <mdk@mdk.am>
 
9150
 
 
9151
        * src/dependencyobject.cpp: Making the prop resolving a bit more
 
9152
        gracefull (smart) in case of common mistakes. 
 
9153
 
 
9154
        Solves test-crash-gracefull-prop-resolving.xaml.
 
9155
 
 
9156
2008-03-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9157
 
 
9158
        * pipeline.cpp: We need to unlock the mutex before joining the
 
9159
        thread. Fixes a dead-lock.
 
9160
 
 
9161
2008-03-19  Geoff Norton  <gnorton@novell.com>
 
9162
 
 
9163
        * yuv-converter.cpp:  Use xmm0 to store a load value to avoid a
 
9164
        repeated load.
 
9165
 
 
9166
2008-03-19  Geoff Norton  <gnorton@novell.com>
 
9167
        
 
9168
        * yuv-converter.cpp:  More 64-bit fixes
 
9169
 
 
9170
2008-03-19  Geoff Norton  <gnorton@novell.com>
 
9171
        
 
9172
        * yuv-converter.cpp:  Fix the test/cmp on x86-64
 
9173
 
 
9174
2008-03-18  Geoff Norton  <gnorton@novell.com>
 
9175
 
 
9176
        * yuv-converter.cpp:  Fold RESTORE_COLOR_MODIFIERS into
 
9177
        CALC_COLOR_MODIFIERS and prepare our own branches rather than trusting
 
9178
        gcc.  The aligned load/store version of CALC_COLOR_MODIFIERS was
 
9179
        clobbering (x)mm3 (green coefficient) when processing the high order
 
9180
        pels.  I've reordered the method to remove some useless load/calc
 
9181
        patterns that were there simply for readability and fixed the
 
9182
        clobbering.
 
9183
        
 
9184
2008-03-18  Jeffrey Stedfast  <fejj@novell.com>
 
9185
 
 
9186
        * font.cpp (TextFontDescription::CreatePattern): Always return the
 
9187
        original pattern.
 
9188
        (TextFont::Load): No longer takes a fromFile argument.
 
9189
        (TextFont::TextFont): Cache using the original pattern (which is
 
9190
        what we really wanted to do originally, but were caching the
 
9191
        "closest-match" pattern before which was wrong).
 
9192
        (TextFont::GetGlyphInfo): Use FT_Get_Char_Index() rather than
 
9193
        FcFreeTypeCharIndex(). Doesn't fix any bugs, just avoids use of
 
9194
        wrapper API that is unnecessary.
 
9195
        (TextFont::GetGlyphInfo): Added a gross hack for *Che fonts.
 
9196
 
 
9197
2008-03-18  Geoff Norton  <gnorton@novell.com>
 
9198
 
 
9199
        * yuv-converter.cpp: 768bits != 768bytes.  Implement prefetching the 
 
9200
        cache lines for the Y plane.
 
9201
        
 
9202
2008-03-18  Andrew Jorgensen  <ajorgensen@novell.com>
 
9203
 
 
9204
        * plugin-ffmpeg.cpp: Remove avformat dependency (not needed anymore)
 
9205
        * plugin-ffmpeg.h: Fix conditional swscale inclusion
 
9206
 
 
9207
2008-03-18  Michael Dominic K.  <mdk@mdk.am>
 
9208
 
 
9209
        * animation.cpp:
 
9210
        * animation.h: Adding a new virtual method GetValueKind to Animation
 
9211
        that returns the kind/type of values that given animation generates
 
9212
        (doubles, points, etc.).
 
9213
 
 
9214
        Modyfying the HookupStorage to check if the animation type matches the
 
9215
        type that the animated property expects. If it doesn't, bail out with a
 
9216
        helpfull warning in the style of:
 
9217
 
 
9218
        "Ellipse.Fill property value type is 'Brush' but animation type is
 
9219
        'Color'"
 
9220
 
 
9221
        This fixes a crash in test-crash-color-anim-on-solid.xaml and all
 
9222
        crashes where we try to animate ie. a color property using doubles.
 
9223
 
 
9224
2008-03-18  Michael Dominic K.  <mdk@mdk.am>
 
9225
 
 
9226
        * animation.cpp: Even more smoothing for KeySpline.
 
9227
 
 
9228
2008-03-18  Michael Dominic K.  <mdk@mdk.am>
 
9229
 
 
9230
        * dependencyobject.cpp: Enabling back the inheritance test for property
 
9231
        resolving but only when dealing with non-attached properties. 
 
9232
 
 
9233
2008-03-17  Geoff Norton  <gnorton@novell.com>
 
9234
 
 
9235
        * Makefile.am:
 
9236
        * pipeline-ffmpeg.cpp:
 
9237
        * pipeline-ffmpeg.h:
 
9238
        * swscale-converter.cpp:
 
9239
        * swscale-converter.h:  Refactor the swscale based yuv2rgb converter
 
9240
        out to a seperate file so it can be included optionally in the build.
 
9241
 
 
9242
2008-03-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9243
 
 
9244
        * mplayer.cpp: Show error message, not only error number, upon thread
 
9245
          creation failure.
 
9246
 
 
9247
2008-03-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9248
 
 
9249
        * playlist.cpp, playlist.h: Add a way to determine if the playlist was
 
9250
          created to play a single file, or if it was created from an asx file
 
9251
          (IsSingleFile).
 
9252
 
 
9253
2008-03-17  Chris Toshok  <toshok@ximian.com>
 
9254
 
 
9255
        * dependencyobject.cpp (EventObject::EventObject): reorder things
 
9256
        to quiet g++.
 
9257
 
 
9258
2008-03-17  Geoff Norton  <gnorton@novell.com>
 
9259
 
 
9260
        * yuv-converter.cpp: __attribute ((aligned ())) can be ignored
 
9261
        for locals.  Use posix_memalign and share the instance for the 
 
9262
        lifespan of the converter.
 
9263
        
 
9264
2008-03-17  Jeffrey Stedfast  <fejj@novell.com>
 
9265
 
 
9266
        * font.cpp (FontPackFileFace::FontPackFileFace): Now takes an
 
9267
        index argument, apparently FreeType2 always set face->face_index
 
9268
        to 0 for these type fonts, so don't rely on it being accurate.
 
9269
        (FontPack::CacheFileInfo): Pass the index value as an argument to
 
9270
        FontPackFileFace's ctor.
 
9271
        (TextFont::TextFont): Do hash lookups based on the matched
 
9272
        pattern, not the original pattern passed in.
 
9273
 
 
9274
2008-03-17  Jeffrey Stedfast  <fejj@novell.com>
 
9275
 
 
9276
        * text.h: Added #include "layout.h"
 
9277
 
 
9278
        * font.cpp: Removed font.cpp's layout logic which has been
 
9279
        rewritten in layout.cpp.
 
9280
        (TextFont::HasGlyph): It seems that Silverlight may wrap text
 
9281
        differently depending on whether the glyph is in the font?
 
9282
 
 
9283
        * layout.cpp (TextLayout::LayoutWrap): More tweaking action...
 
9284
 
 
9285
2008-03-17  Geoff Norton  <gnorton@novell.com>
 
9286
 
 
9287
        * yuv-converter.cpp: Ensure that our pointer alignment checks are
 
9288
        64-bit safe.
 
9289
 
 
9290
2008-03-17  Michael Dominic K.  <mdk@mdk.am>
 
9291
 
 
9292
        * animation.cpp: Interpolate linearly between keyspline values. This
 
9293
        fixes the jags in test-animation-slow-keyspline.xaml.
 
9294
 
 
9295
2008-03-17  Michael Dominic K.  <mdk@mdk.am>
 
9296
 
 
9297
        * animation.cpp: Fixes to the way we generate the KeySpline values to be
 
9298
        more smooth an precise.
 
9299
 
 
9300
2008-03-17  Larry Ewing  <lewing@novell.com>
 
9301
 
 
9302
        * runtime.cpp: go ahead and invalidate the toplevel before
 
9303
        cleaning everything up. remove the disconnect call in
 
9304
        DestroyWidget, all the handlers should be ok with getting called
 
9305
        on fullscreen or the normal widget.
 
9306
 
 
9307
2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
 
9308
 
 
9309
        * layout.cpp (TextLayout::LayoutWrap): Added some improved unicode
 
9310
        line breaking logic.
 
9311
 
 
9312
2008-03-14  Geoff Norton  <gnorton@novell.com>
 
9313
        
 
9314
        * yuv-converter.cpp: Remove some dead code.
 
9315
 
 
9316
2008-03-14  Geoff Norton  <gnorton@novell.com>
 
9317
 
 
9318
        * mplayer.cpp: We actually need to align % 64 bytes on a 16 byte 
 
9319
        bounary.  Each pel will expand to 4 bytes.  Since we process 16
 
9320
        pels at a time in SSE2 we need 64 output bytes per iteration.
 
9321
 
 
9322
        * yuv-converter.cpp: Remove the rest of the unaligned move/stores
 
9323
 
 
9324
2008-03-14  Sebastien Pouliot  <sebastien@ximian.com>
 
9325
 
 
9326
        * xaml.cpp: (flush_char_data) free data inside GString since the
 
9327
        Value constructed around it creates it's own copy.
 
9328
 
 
9329
2008-03-14  Geoff Norton  <gnorton@novell.com>
 
9330
 
 
9331
        * pipeline-ffmpeg.cpp: Use posix_memalign for the YUV data buffers
 
9332
        to get a 16byte alignment for SSE2.
 
9333
        * yuv-converter.cpp: Remove most of our unaligned load/stores.
 
9334
 
 
9335
2008-03-14  Larry Ewing  <lewing@novell.com>
 
9336
 
 
9337
        * collection.h:
 
9338
        * error.h:     
 
9339
        * eventargs.h, enventargs.cpp:
 
9340
        * type.h, type.cpp: make EventArgs a subclass of DependencyObject
 
9341
        and all that entails.  Still need to look over the properties.
 
9342
 
 
9343
        * runtime.cpp, runtime.h: expose EmitError for now.
 
9344
        
 
9345
2008-03-14  Larry Ewing  <lewing@novell.com>
 
9346
 
 
9347
        * mplayer.cpp (MediaPlayer::Open): use posix_memalign to allocate
 
9348
        with a a 16bit alignment for the yuv converter.
 
9349
 
 
9350
2008-03-14  Sebastien Pouliot  <sebastien@ximian.com>
 
9351
 
 
9352
        * xaml.cpp: (expat_parser_error) ParserErrorEventArgs free it's 
 
9353
        own copy of the message.
 
9354
 
 
9355
2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
 
9356
 
 
9357
        * font.cpp (TextRun::TextRun): Can't drop non-printable chars
 
9358
        because soft-hyphen is apparently non-printable.
 
9359
 
 
9360
2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
 
9361
 
 
9362
        * text.cpp (Glyphs::Layout): Check for NULL glyphs (which can
 
9363
        happen now if the glyph does not exist in the font).
 
9364
        (Glyphs::Render): Same.
 
9365
 
 
9366
        * font.cpp (TextFont::GetGlyphInfo): Added a new GetGlyphInfo
 
9367
        which takes a unichar and index. This is now the main
 
9368
        implementation that the other GetGlyphInfo() and
 
9369
        GetGlyphInfoByIndex() use. The glyph table is now indexed by index
 
9370
        rather than unichar.
 
9371
 
 
9372
2008-03-14  Jeffrey Stedfast  <fejj@novell.com>
 
9373
 
 
9374
        * text.cpp (Glyphs::Layout): Don't error out on (1:1) clusters
 
9375
        without a specified index, these are ok.
 
9376
 
 
9377
2008-03-14  Michael Dominic K.  <mdk@mdk.am>
 
9378
 
 
9379
        * brush.cpp: In ImageBrush, if the image has not been downloaded
 
9380
        yet, draw nothing like SL does -- instead of the grayish shadow.
 
9381
 
 
9382
2008-03-14  Michael Dominic K.  <mdk@mdk.am>
 
9383
 
 
9384
        * dependencyobject.cpp: Check the types of objects when
 
9385
        resolving_property_paths and some more verbosity to the error
 
9386
        reporting. Now test-crash-non-existing-animation-target-prop3
 
9387
        fails with the proper warning.
 
9388
 
 
9389
        Also, terminate first on first error found.
 
9390
 
 
9391
2008-03-14  Michael Dominic K.  <mdk@mdk.am>
 
9392
 
 
9393
        * dependencyobject.cpp: Even more verbose error reporting in the
 
9394
        resolve_property_path ().
 
9395
 
 
9396
2008-03-14  Michael Dominic K.  <mdk@mdk.am>
 
9397
 
 
9398
        * animation.cpp: Making the warning report proper error when can't
 
9399
        resolve property on object. Now we're getting:
 
9400
 
 
9401
        "No property named
 
9402
        (UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)
 
9403
        on object ball, which has type Ellipse!"
 
9404
 
 
9405
2008-03-14  Michael Dominic K.  <mdk@mdk.am>
 
9406
 
 
9407
        * animation.cpp: Check correctly if we have object and property
 
9408
        before trying to hookup storage.
 
9409
 
 
9410
        Fixes the crash in test-crash-non-existing-animation-target-prop.xaml
 
9411
        but the warning message is still incorrect:
 
9412
 
 
9413
                "No object named ball!"
 
9414
 
 
9415
        The object named "ball" exists but it doesn't have the requested
 
9416
        property.
 
9417
 
 
9418
2008-03-14  Michael Dominic K.  <mdk@mdk.am>
 
9419
 
 
9420
        * animation.cpp: Changing few printf's to g_warnings.
 
9421
 
 
9422
2008-03-14  Stephane Delcroix  <sdelcroix@novell.com>
 
9423
 
 
9424
        * shape.cpp: Deal with different [start|end|dash] caps for lines 
 
9425
        and polylines.
 
9426
 
 
9427
2008-03-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9428
 
 
9429
        * mplayer.cpp: Comment out printf.
 
9430
 
 
9431
2008-03-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9432
 
 
9433
        * mplayer.cpp: AudioNode::Play: property calculate the delay between the
 
9434
          play position in the hardware and the pts we just sent to alsa, and
 
9435
          subtract it from that pts.
 
9436
 
 
9437
Thu Mar 13 23:25:41 CET 2008 Paolo Molaro <lupus@ximian.com>
 
9438
 
 
9439
        * clock.cpp: use a monotonic clock if available to avoid issues with
 
9440
        the system time changing.
 
9441
 
 
9442
2008-03-13  Jeffrey Stedfast  <fejj@novell.com>
 
9443
 
 
9444
        * layout.cpp (TextRun::TextRun): Don't drop non-printable
 
9445
        chars... somehow soft-hyphen (0xAD) is non-printable according to
 
9446
        glib and so breaks the LineBreakBasic1.htm test.
 
9447
        (TextLayout::LayoutNoWrap): Keep appending words to the line until
 
9448
        a line ends beyond max_width, we don't care where it begins (it
 
9449
        could begin way beyond max_width for all we care).
 
9450
 
 
9451
2008-03-13  Chris Toshok  <toshok@ximian.com>
 
9452
 
 
9453
        * text.cpp (~Glyphs): don't unref the fill, since we don't take a
 
9454
        ref on it.
 
9455
 
 
9456
2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9457
 
 
9458
        * mplayer.cpp: Make this build on SLED until I find a proper workaround.
 
9459
 
 
9460
2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9461
 
 
9462
        * media.cpp: Update according to MediaPlayer changes.
 
9463
 
 
9464
2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9465
 
 
9466
        * mplayer.cpp, mplayer.h, pipeline.cpp: Play audio on a single
 
9467
        thread. Fixes #326902.
 
9468
 
 
9469
2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9470
 
 
9471
        * Makefile.am: Set our G_LOG_DOMAIN.
 
9472
 
 
9473
2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9474
 
 
9475
        * xaml.cpp: default_create_element_instance: Set the surface as soon as
 
9476
          possible.
 
9477
 
 
9478
2008-03-13  Michael Dominic K.  <mdk@mdk.am>
 
9479
 
 
9480
        * animation.cpp: Modyfying the KeyFrameCollection::GetKeyFrameForTime
 
9481
        behavior. When getting the keyframe for time additionally crawl back (if
 
9482
        needed) to find the last non-null keyframe and non-null previous
 
9483
        keyframe. By doing so we silently ignore the frames without values set
 
9484
        and don't crash on nullable types.
 
9485
 
 
9486
        Fixes the crash in AnimationMatrix2.html/xaml and in the
 
9487
        test-animation-null-keyframe.xaml test.
 
9488
 
 
9489
        Remving the XXX warnings about nullabled types from file since they
 
9490
        don't apply anymore.
 
9491
 
 
9492
2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9493
 
 
9494
        * visual.h, uielement.cpp, visual.cpp: Remove the 'surface' field from
 
9495
          Visual, we're already storing the surface in the EventObject.
 
9496
        * dependencyobject.cpp: EventObject::unref_delayed: remove the #if false,
 
9497
          and comment out the warning, since with the current code it's entirely
 
9498
          possible to unref a dependecyobject with no surface.
 
9499
 
 
9500
2008-03-13  Stephane Delcroix  <sdelcroix@novell.com>
 
9501
 
 
9502
        * brush.cpp: compute relative transform as it's done in SL. We used to
 
9503
        derelativize transform to match the absolute ones. Now we map the brush
 
9504
        to a 1x1 square, apply the transform, and unmap back. It simplify the 
 
9505
        computation a lot too. Fixes bnc #354892 and a bad gradient in 
 
9506
        brushes.xaml.
 
9507
 
 
9508
2008-03-12  Chris Toshok  <toshok@ximian.com>
 
9509
 
 
9510
        * media.cpp (expand_rgb_to_argb): use a different codepath if the
 
9511
        rowstride isn't padded out to be divisible by 4 (or else we read
 
9512
        off the end by a byte).
 
9513
 
 
9514
2008-03-13  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9515
 
 
9516
        * pipeline.cpp: ASFDemuxer: Only seek in the selected streams.
 
9517
 
 
9518
2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9519
 
 
9520
        * pipeline.cpp, pipeline.h: Break all media threads upon media shutdown.
 
9521
        * pipeline-ffmpeg.cpp: Don't check if we've been registered before, the
 
9522
          pipeline correctly removes registered infos upon shutdown, so if we're
 
9523
          initialized again we should also register again.
 
9524
        * runtime.cpp: Call Media::Shutdown do shut down the media threads before
 
9525
          doing anything else.
 
9526
 
 
9527
2008-03-12  Jeffrey Stedfast  <fejj@novell.com>
 
9528
 
 
9529
        * font.cpp (TextRun::TextRun): Fixed canonicalization logic.
 
9530
 
 
9531
        * text.cpp (TextBlock::LayoutSilverlight): When creating a list of
 
9532
        TextRun's, if the Run contains \n's, break the text into
 
9533
        non-linebreak and linebreak TextRun elements. Allows the
 
9534
        TextLayout::Layout() logic to be simplified considerably.
 
9535
 
 
9536
2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9537
 
 
9538
        * dependencyobject.cpp: DependencyObject: Initialize our surface field to
 
9539
          NULL.
 
9540
 
 
9541
2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9542
 
 
9543
        * pipeline.h, pipeline.cpp: Add logging macros. Use ErrorEventArgs for error
 
9544
          reporting so that the errors can easily be bubbled up the pipeline. Add
 
9545
          a 'selected' field to IMediaStream, whether the media player is using
 
9546
          that stream or not.
 
9547
        * error.h: Add a MediaErrorEventArgs class.
 
9548
 
 
9549
2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9550
 
 
9551
        * pipeline.cpp: Propagate the surface from the media element to the media.
 
9552
 
 
9553
2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9554
 
 
9555
        * mplayer.cpp, pipeline.cpp, pipeline.h: Add a 'selected' field to the
 
9556
          IMediaStream, indicates whether the stream is being played or not.
 
9557
 
 
9558
2008-03-12  Sebastien Pouliot  <sebastien@ximian.com>
 
9559
 
 
9560
        * dependencyobject.cpp: Add NULL check in method 
 
9561
        RemovePropertyChangeListener since a bad XAML input can cause a
 
9562
        NULL entry in the list.
 
9563
 
 
9564
2008-03-12  Michael Dominic K.  <mdk@mdk.am>
 
9565
 
 
9566
        * runtime.cpp:
 
9567
        * runtime.h:
 
9568
        * shape.cpp: Properly calculate the shape cache depending on our bpp etc.
 
9569
 
 
9570
2008-03-12  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9571
 
 
9572
        * xaml.cpp: xaml_create_from_file: if there was some error loading the file,
 
9573
          don't crash, print an error message. Dup all strings put into
 
9574
          namespace_map, and free them all upon its destruction.
 
9575
 
 
9576
2008-03-11  Larry Ewing  <lewing@novell.com>
 
9577
        
 
9578
        * collection.cpp (VisualCollection::VisualAdded): make sure we set
 
9579
        the surface as the first step, dirty processing depends on it.
 
9580
        Fixes OM_RemoveClearRemoveAt.htm regression.
 
9581
 
 
9582
2008-03-11  Larry Ewing  <lewing@novell.com>
 
9583
 
 
9584
        * canvas.h:
 
9585
        * canvas.cpp (Canvas::OnPropertyChanged): listen to changes on Top
 
9586
        and Left when we are toplevel so that we can recompute our
 
9587
        transform.
 
9588
 
 
9589
        * uielement.cpp: if we don't have a parent call GetTransformFor on
 
9590
        ourself so that Top and Left are taken into account on toplevel
 
9591
        canvases.  Fixes test-canvas-toplevel.xaml
 
9592
 
 
9593
2008-03-11  Chris Toshok  <toshok@ximian.com>
 
9594
 
 
9595
        * clock.h, clock.cpp: a few changes, the most important
 
9596
        being (ifdefed for now) code to put the timemanager to sleep when
 
9597
        it's not needed for animations, rendering, or tick calls.  To do
 
9598
        this we need a couple of changes to the clock code.  1) propagate
 
9599
        the time_manager out to all clocks, so we can force it to tick the
 
9600
        clock hierarchy the first time whenever a storyboard is started.
 
9601
        2) make Clock/ClockGroup::Tick return a bool, which means "i'll be
 
9602
        in need of another tick."  Do the same for the tick call stuff,
 
9603
        where the bool return value means "we have more tick calls
 
9604
        pending."  Also, add a couple of methods to the
 
9605
        TimeManager (NeedRedraw, NeedClockTick) which will start up the
 
9606
        timemanager if it's asleep, and set the proper flag so it'll do
 
9607
        the right work on the next tick.
 
9608
 
 
9609
 
 
9610
        * uielement.cpp: notify the timemanager that we have a redraw to
 
9611
        process.
 
9612
        
 
9613
        * runtime.cpp (Surface::realized_callback): tell the time manager
 
9614
        to redraw us to get the process moving.
 
9615
 
 
9616
2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
 
9617
 
 
9618
        * xaml.cpp: Work around the fact that it's not always safe to 
 
9619
        call some expat functions, like XML_GetCurrentLineNumber, if the
 
9620
        parsing failed early.
 
9621
 
 
9622
2008-03-11  Chris Toshok  <toshok@ximian.com>
 
9623
 
 
9624
        * namescope.h, namescope.cpp: switch from reffing the objects to
 
9625
        using the DestroyedEvent.  Otherwise our toplevel canvas has a ref
 
9626
        cycle with its namescope.  Also, short circuit out if we're
 
9627
        registering the same object twice.  keeps us from having too many
 
9628
        DestroyedEvents (since RemoveHandler only removes one).
 
9629
 
 
9630
        * dependencyobject.h, dependencyobject.cpp: move
 
9631
        GetSurface/SetSurface to EventObject, and add unref_delayed as a
 
9632
        method.  If the event object has a surface associated with it, add
 
9633
        it to the surface's pending list of unrefs.  otherwise warn us and
 
9634
        add it to the global list.  The warnings should be fixed as the
 
9635
        global list really should go away.
 
9636
 
 
9637
        Also, before we free a value, make sure to remove our handler and
 
9638
        unset the closure.
 
9639
 
 
9640
        Also, get rid of OBJECT_TRACK_ID.  use an environment variable for
 
9641
        this.  So if you compile with OBJECT_TRACKING on, nothing new
 
9642
        happens unless you set the "MOONLIGHT_OBJECT_TRACK_ID" environment
 
9643
        variable to the id of the object you want to track.  Makes the
 
9644
        turnaround time a little quicker.
 
9645
 
 
9646
        shift some things around in the header file while I'm making this
 
9647
        change.
 
9648
 
 
9649
        * runtime.h, runtime.cpp: move some more methods to the .cpp from
 
9650
        the .h, and also add the per-surface pending unrefs list.  This is
 
9651
        basically a c&p of the global list from dependency.cpp.
 
9652
 
 
9653
        * downloader.h, downloader.cpp: remove Get/Set Surface in favor of
 
9654
        using EventObject's.
 
9655
        
 
9656
2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
 
9657
 
 
9658
        * xaml.cpp: Add NULL check in dependency_object_add_child since
 
9659
        parent->parent->item may be NULL in malformed XAML files.
 
9660
 
 
9661
2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9662
 
 
9663
        * pipeline.h, media.cpp, pipeline.cpp: Rename GetPositionOfPts to
 
9664
          EstimatePtsPosition and remove the estimate parameter, it's never used.
 
9665
 
 
9666
2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9667
 
 
9668
        * runtime.cpp: No need to scream in printfs.
 
9669
 
 
9670
2008-03-11  Jeffrey Stedfast  <fejj@novell.com>
 
9671
 
 
9672
        * font.cpp (TextLayout::Layout): More fixes, this is getting
 
9673
        gross.
 
9674
 
 
9675
2008-03-11  Sebastien Pouliot  <sebastien@ximian.com>
 
9676
 
 
9677
        * xaml.cpp: Avoid crashing if the PML does not start with a 
 
9678
        M(ove) instruction.
 
9679
 
 
9680
2008-03-11  Michael Dominic K.  <mdk@mdk.am>
 
9681
 
 
9682
        * src/: Moving implementations from .h to .cpp, leaving only
 
9683
        setters/getters + simple constructors in .h.
 
9684
 
 
9685
2008-03-11  Larry Ewing  <lewing@novell.com>
 
9686
 
 
9687
        * xaml.cpp (dependency_object_set_property): throw an error if we
 
9688
        get here without a DependencyObject.  Fixes
 
9689
        test-property-parsing.xaml
 
9690
 
 
9691
2008-03-10  Larry Ewing  <lewing@novell.com>
 
9692
 
 
9693
        * panel.cpp:
 
9694
        * uielement.cpp: add more checks to the parent tree.
 
9695
 
 
9696
2008-03-10  Chris Toshok  <toshok@ximian.com>
 
9697
 
 
9698
        * dependencyobject.cpp (~DependencyObject): use
 
9699
        g_hash_table_foreach_remove, so the dtor of one value can't access
 
9700
        an already destroyed DO from another value.
 
9701
 
 
9702
2008-03-10  Chris Toshok  <toshok@ximian.com>
 
9703
 
 
9704
        * namescope.cpp: don't explicitly unref the object when removing
 
9705
        it.  instead use base_unref as the value-dtor for the GHashTable.
 
9706
        This will cause unrefs when the hash table is destroyed in the
 
9707
        dtor (a case we were missing before.)
 
9708
 
 
9709
        * collection.h, collection.cpp (class Collection): factor out the
 
9710
        body of Collection::Clear into a non-virtual method that we can
 
9711
        call from the dtor.
 
9712
 
 
9713
2008-03-10  Larry Ewing  <lewing@novell.com>
 
9714
 
 
9715
        * uielement.cpp:
 
9716
        * panel.cpp: make sure we don't subtract the region unless non of
 
9717
        our anscestors have a slip mask.  This should be implemented in a
 
9718
        more efficient way.
 
9719
 
 
9720
2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9721
 
 
9722
        * playlist.cpp, playlist.h: Move PlaylistContent info PlaylistEntry.
 
9723
 
 
9724
2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9725
 
 
9726
        * dependencyobject.h, dependencyobject.cpp: Enable object counting when
 
9727
          DEBUG is defined.
 
9728
        * runtime.cpp: Show a message if we leak objects and DEBUG is defined.
 
9729
        * pipeline.cpp: Remove printfs.
 
9730
 
 
9731
2008-03-10  Larry Ewing  <lewing@novell.com>
 
9732
 
 
9733
        * geometry.h:
 
9734
        * geometry.cpp: make IsBuilt check for actual path data as well
 
9735
        then use it everywhere we need it.  Invalidate the path if the
 
9736
        figures change.  Fixes test-transform-clip.htm.
 
9737
 
 
9738
2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9739
 
 
9740
        * playlist.cpp: Playlist::AddEntry: unref the entry after adding it.
 
9741
 
 
9742
2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9743
 
 
9744
        * mplayer.cpp: When stopping, we need to seek to the beginning again. Fixes
 
9745
          #368461.
 
9746
 
 
9747
2008-03-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9748
 
 
9749
        * media.cpp: Update according to pipeline changes. TryOpen: our
 
9750
          downloaded_file field may change when we call MediaOpened, so save a
 
9751
          local copy before calling MediaOpened. Unref our playlist upon
 
9752
          destruction, and 
 
9753
        * mplayer.cpp: Update according to changes in the pipeline.
 
9754
        * pipeline.cpp, pipeline.h: Delete all but one of GetNextFrameAsync, the
 
9755
          rest aren't used. Make the remaining method take the stream as a
 
9756
          parameter, and the resulting frame will be put in the closure. Also
 
9757
          handle the case when the codec returns MEDIA_CODEC_DELAYED, in which
 
9758
          case just try again with the next frame. Make MediaWork ref/unref the
 
9759
          fields that can be ref counted. 
 
9760
        
 
9761
2008-03-10  Chris Toshok  <toshok@ximian.com>
 
9762
 
 
9763
        [ Fixes bug #368460 ]
 
9764
        * collection.cpp (Collection::SetVal): make sure to unregister the
 
9765
        name of the object(s) we remove from the collection.
 
9766
        (Collection::Remove): same.
 
9767
        (Collection::RemoveAt): same.
 
9768
        (Collection::Clear): same.
 
9769
 
 
9770
        * namescope.cpp (NameScope::RegisterName): ref the object.
 
9771
        (NameScope::UnregisterName): unref the object.
 
9772
 
 
9773
2008-03-10  Jeffrey Stedfast  <fejj@novell.com>
 
9774
 
 
9775
        * font.cpp (TextLayout::Layout): More line-wrap fixes - implement
 
9776
        Silverlights TextWrapping="Wrap" bug where it doesn't ever break
 
9777
        the last word.
 
9778
 
 
9779
2008-03-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9780
 
 
9781
        * src.mdp: Updated.
 
9782
 
 
9783
2008-03-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9784
 
 
9785
        * dependencyobject.h: Make the OBJECT_TRACKING stuff public.
 
9786
        * runtime.cpp: Use GetRefCount, not refcount.
 
9787
 
 
9788
2008-03-10  Chris Toshok  <toshok@ximian.com>
 
9789
 
 
9790
        * runtime.h, runtime.cpp: add surface_get_time_manager.
 
9791
 
 
9792
        * downloader.h, downloader.cpp: add downloader_get_surface.
 
9793
        
 
9794
2008-03-10  Michael Dominic K.  <mdk@mdk.am>
 
9795
 
 
9796
        * runtime.cpp:
 
9797
        * runtime.h:
 
9798
        * shape.cpp: Making the shape-caching a runtime parameter
 
9799
        (shapecache=yes). Turned off right now.
 
9800
 
 
9801
2008-03-10  Michael Dominic K.  <mdk@mdk.am>
 
9802
 
 
9803
        * shape.cpp: Tiny refactoring to the surface-size calculation code.
 
9804
 
 
9805
2008-03-10  Michael Dominic K.  <mdk@mdk.am>
 
9806
 
 
9807
        * runtime.h:
 
9808
        * shape.cpp: Adding functionality to limit the amount of caching
 
9809
        happening on one surface. Currently set to ~6mb. 
 
9810
 
 
9811
2008-03-09  Larry Ewing  <lewing@novell.com>
 
9812
 
 
9813
        * mplayer.cpp: fix another place that used the wrong stride.
 
9814
 
 
9815
2008-03-09  Geoff Norton  <gnorton@novell.com>
 
9816
 
 
9817
        * yuv-converter.cpp: Make sure we emms after finishing sse/mmx 
 
9818
        instrucitons.
 
9819
 
 
9820
2008-03-09  Geoff Norton  <gnorton@novell.com>
 
9821
 
 
9822
        * yuv-converter.cpp: Detect the CPU features at runtime.  We
 
9823
        should now be able to distribute a 32-bit SSE2/MMX build to
 
9824
        non SSE2/MMX machines
 
9825
 
 
9826
2008-03-09  Geoff Norton  <gnorton@novell.com>
 
9827
 
 
9828
        * yuv-converter.cpp: Implement runtime fallbacks in the Convert
 
9829
        function (TODO: Still need to runtime detect SSE2/MMX) 
 
9830
 
 
9831
2008-03-09  Larry Ewing  <lewing@novell.com>
 
9832
 
 
9833
        * mplayer.cpp (MediaPlayer::Open): make the stride % 16 for now.
 
9834
 
 
9835
2008-03-09  Larry Ewing  <lewing@novell.com>
 
9836
 
 
9837
        * mplayer.cpp (MediaPlayer::Open): use the proper stride
 
9838
        calculation functions.
 
9839
 
 
9840
2008-03-08  Geoff Norton  <gnorton@novell.com>
 
9841
 
 
9842
        * yuv-converter.cpp:  Implement a SSE2 version of the YUV2RGB
 
9843
        codepath along with some code cleanup.  Still some more cleanup
 
9844
        to do for runtime detection of CPU features.
 
9845
 
 
9846
2008-03-08  Geoff Norton  <gnorton@novell.com>
 
9847
 
 
9848
        * yuv-converter.cpp:  Fix some erroneous math.  U' != U.
 
9849
        These coefficients are far more sane now and our lum change is 
 
9850
        reflected properly.
 
9851
 
 
9852
2008-03-08  Chris Toshok  <toshok@ximian.com>
 
9853
 
 
9854
        * clock.cpp (TimeManager::SourceTick): larry gets credit for
 
9855
        spotting this problem and suggesting the fix.  remove the
 
9856
        hysteresis code, and *always* set a new timeout, based on what our
 
9857
        idea of the timeout and the amount of time we spent rendering the
 
9858
        previous frame.  This smooths things out immensely, removes (for
 
9859
        me) the animation stutters induced by audio in sprawl, and results
 
9860
        in fewer dropped frames.
 
9861
 
 
9862
2008-03-08  Geoff Norton  <gnorton@novell.com>
 
9863
 
 
9864
        * yuv-converter.cpp: Fix the luminance problem (Y needs shift;
 
9865
        and b was pulling the wrong l/h value.
 
9866
 
 
9867
2008-03-08  Chris Toshok  <toshok@ximian.com>
 
9868
 
 
9869
        * value.cpp (Value::CreateUnrefPtr): use GetRefCount() instead of
 
9870
        accessing dob->refcount.
 
9871
        (Value::CreateUnref): same.
 
9872
 
 
9873
        * dependencyobject.h, dependency.cpp (class EventObject): reorder
 
9874
        this class definition so that we don't have multiple
 
9875
        public/protected/private areas.  confusing as hell :) Also, move
 
9876
        the implementations of the non-performance critical things into
 
9877
        the .cpp file, as they were making the .h rather cluttered (ctor,
 
9878
        dtor, weak ref/unref.)  Lastly, make almost everything private
 
9879
        instead of public (most importantly the refcount.)
 
9880
 
 
9881
        * debug.h, debug.cpp: random code cleanup.  we don't need to be
 
9882
        concerned with adding some additional stack methods to the plugin
 
9883
        in the DEBUG case, so go ahead and just use DEBUG here instead of
 
9884
        STACK_DEBUG.
 
9885
 
 
9886
2008-03-08  Chris Toshok  <toshok@ximian.com>
 
9887
 
 
9888
        * uielement.cpp, text.cpp, clock.cpp, mplayer.cpp: remove the
 
9889
        extern guint32 moonlight_flags.
 
9890
 
 
9891
        * pipeline.cpp: if RUNTIME_INIT_CONVERTER_YUV, use the yuv
 
9892
        converter, otherwise use ffmpeg.
 
9893
 
 
9894
        * runtime.h: add RUNTIME_INIT_CONVERTER_YUV to the list of init
 
9895
        flags, and (my god) put the extern moonlight_flags here.
 
9896
 
 
9897
        * runtime.cpp: add yuv converter options. use
 
9898
        MOONLIGHT_OVERRIDES=converter=yuv to enable it.  default is
 
9899
        "converter=ffmpeg".
 
9900
 
 
9901
2008-03-08  Geoff Norton  <gnorton@novell.com>
 
9902
 
 
9903
        * yuv-converter.cpp: Clear the mmx state when we're done
 
9904
        processing.  Fixes most problems on x86_32.
 
9905
 
 
9906
2008-03-08  Geoff Norton  <gnorton@novell.com>
 
9907
 
 
9908
        * pipeline.cpp: Disable YUV converter, its crashing on x86_32
 
9909
        currently.
 
9910
 
 
9911
2008-03-08  Geoff Norton  <gnorton@novell.com>
 
9912
        
 
9913
        * pipeline-ffmpeg.cpp:  Dont register YUV converter here.
 
9914
        * pipeline.cpp: Register YUV converter here.
 
9915
 
 
9916
2008-03-08  Geoff Norton  <gnorton@novell.com>
 
9917
 
 
9918
        * yuv-converter.cpp:  Remove some code duplication and refactor
 
9919
        to support register starved implementations.
 
9920
 
 
9921
2008-03-08  Geoff Norton  <gnorton@novell.com>
 
9922
 
 
9923
        * Makefile.am: Add yuv-converter.cpp to the build
 
9924
        * yuv-conveter.*: Our YUV2RGB 420P converter.  Replaces
 
9925
        libswscale.
 
9926
        * pipeline-ffmpeg.cpp: Use YUVConverter instead of libswscale.
 
9927
 
 
9928
2008-03-08  Chris Toshok  <toshok@ximian.com>
 
9929
 
 
9930
        * clock.h, clock.cpp, animation.cpp: a few clock related changes.
 
9931
 
 
9932
        1. Revert the change that uses "forward" to tell if we're moving
 
9933
        forward or not.  This isn't the only indicator, as a parent clock
 
9934
        might be ticking backward, so we really do need to use "our_delta"
 
9935
 
 
9936
        2. Also, we need to not clamp the time of the clock (on either
 
9937
        end) when we're filling, as if the parent's duration is longer
 
9938
        than ours and they autoreverse, there needs to be some padding in
 
9939
        the reverse direction before we start again.
 
9940
 
 
9941
        3. Only call ComputeBeginTime() on a newly created clock if the
 
9942
        timeline has a begin time specified.  Otherwise, use
 
9943
        BeginOnTick/GetBeginOnTick to make it begin on the next tick.
 
9944
        This fixes the chess animation breakage.  The problem was caused
 
9945
        by us computing the begin time immediately in Storyboard::Begin,
 
9946
        which would calculate the clock's begin time relative to the
 
9947
        *previous* tick.  on the next tick, the clock was almost always at
 
9948
        1.0 progress, which caused the animations to skip directly to the
 
9949
        end.
 
9950
 
 
9951
2008-03-08  Chris Toshok  <toshok@ximian.com>
 
9952
 
 
9953
        * value.cpp, type.cpp, type.cpp.in, trigger.cpp, runtime.cpp,
 
9954
        dirty.cpp, dependencyobject.cpp: more assert removal.  we can't
 
9955
        assert in a plugin (even if people are running a debug build it's
 
9956
        not exactly nice to bring down their browser.)
 
9957
 
 
9958
2008-03-07  Chris Toshok  <toshok@ximian.com>
 
9959
 
 
9960
        * value.cpp (Value::CreateUnrefPtr): don't assert here.
 
9961
        (Value::CreateUnref): same.
 
9962
 
 
9963
2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9964
 
 
9965
        * type.cpp.in, typegen.cs, type.cpp: If the type system is accessed when
 
9966
          it's not initialized, print a warning and re-initialize it.
 
9967
 
 
9968
2008-03-08  Fernando Herrera  <fherrera@novell.com>
 
9969
 
 
9970
        * pipeline.cpp:
 
9971
        * playlist.cpp:
 
9972
        * playlist.h: Add support for ASX2 playlist files returned by
 
9973
        mediaservers when requesting a mmsh file over plain http. Fixes
 
9974
        http://channel9.msdn.com.
 
9975
 
 
9976
2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9977
 
 
9978
        * pipeline.cpp: Add a couple of null checks in ~Media. Detect ASX files
 
9979
          case-insensitively.
 
9980
 
 
9981
2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9982
 
 
9983
        * pipeline.h, pipeline.cpp: Refcount IMediaObject, and make dtors in all
 
9984
          derived classes protected.
 
9985
        * media.cpp: Update according to pipeline changes. TryOpen: our
 
9986
          downloaded_file field may change when we call MediaOpened, so save a
 
9987
          local copy before calling MediaOpened.
 
9988
 
 
9989
2008-03-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
9990
 
 
9991
        * clock.cpp, clock.h: Added TimeManager::InvokeOnMainThread.
 
9992
        * mplayer.cpp: Use TimeManager::InvokeOnMainThread instead of finding a
 
9993
          TimeManager instance to add the timeout to.
 
9994
 
 
9995
2008-03-07  Sebastien Pouliot  <sebastien@ximian.com>
 
9996
 
 
9997
        * downloader.cpp: Fix access to Status from JScript.
 
9998
 
 
9999
2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10000
 
 
10001
        * mplayer.cpp: LoadVideoFrame: if we got the last frame, don't request any
 
10002
          more frames.
 
10003
 
 
10004
2008-03-07  Sebastien Pouliot  <sebastien@ximian.com> 
 
10005
 
 
10006
        * brush.cpp: Fix default value for ColorInterpolationMode (js
 
10007
        unit tests)
 
10008
        * parsertest.cpp: Adapt to API change.
 
10009
        * xaml.cpp|h: Change value_from_str[_with_typename] to return a
 
10010
        bool since NULL can be a valid Value in some cases (e.g. empty
 
10011
        stuff that should not reset the DO default values).
 
10012
 
 
10013
2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10014
 
 
10015
        * mplayer.cpp: Add a null check before accessing any time managers.
 
10016
 
 
10017
2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10018
 
 
10019
        * brush.cpp, uielement.cpp: Use MediaElement::GetMediaPlayer instead of
 
10020
          accessing the field.
 
10021
        * media.cpp, media.h: Use MediaElement::GetMediaPlayer instead of accessing
 
10022
          the field. Update according to pipeline changes.
 
10023
        * mplayer.cpp, mplayer.h: Update according to pipeline changes.
 
10024
        * pipeline.cpp, pipeline.h: Make Media inherit from EventObject so that it
 
10025
          can be ref counted. Make MediaClosure more intelligent by ref/unreffing
 
10026
          the context and media fields. All variations of MediaWork has a closure,
 
10027
          so move the closure field out of the union. This simplifies
 
10028
          Media::WorkerLoop a bit. Add a Media::SeekToStart, which is required to
 
10029
          not cause any reads/seeks which may block. Remove SetQueueCallback, the
 
10030
          request takes a closure now. Implement an ASXDemuxer to read ASX files.
 
10031
        * sizes.cpp: Updated.
 
10032
        * playlist.h, playlist.cpp: First part of the new playlist support.
 
10033
 
 
10034
2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10035
 
 
10036
        * dependencyobject.cpp: Make the output in EventObject::Track print
 
10037
          atomically. Really avoids a lot of confusion if several threads are
 
10038
          printfing at the same time.
 
10039
 
 
10040
2008-03-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10041
 
 
10042
        * debug.cpp: Add a couple of null checks.
 
10043
 
 
10044
2008-03-06  Jeffrey Stedfast  <fejj@novell.com>
 
10045
 
 
10046
        * font.cpp (TextLayout::Layout): Don't wrap on a space char, ever.
 
10047
        (TextLayout::Layout): Don't include trailing lwsp in the line
 
10048
        width calculation unless it is the last line.
 
10049
        (TextLayout::Layout): Don't include trailing empty lines in the
 
10050
        height calculation.
 
10051
 
 
10052
2008-03-06  Chris Toshok  <toshok@ximian.com>
 
10053
 
 
10054
        * clock.h, clock.cpp: some changes to make TimeManager a
 
10055
        per-surface item, instead of a singleton/global.  The time manager
 
10056
        creates a root clock group, just like Surface used to, which is
 
10057
        the parent of all storyboards for a surface.
 
10058
        
 
10059
        * dirty.h, dirty.cpp: remove the method prototypes and globals -
 
10060
        switch everything to be Surface:: methods.
 
10061
        
 
10062
        * runtime.h, runtime.cpp: get rid of our ClockGroup and Timeline
 
10063
        for the root clock, and create a TimeManager instead.  Also, add
 
10064
        the dirty methods/fields to Surface, even though the
 
10065
        implementation still lives in dirty.cpp.  Also, call
 
10066
        toplevel->SetSurface(NULL) early in our dtor so that elements can
 
10067
        react before, e.g., the time manager has been destroyed.
 
10068
 
 
10069
        * media.h, media.cpp: use the surface's TimeManager instead of a
 
10070
        global one.  Also override SetSurface so we can tell if we're
 
10071
        losing access to it, and remove our timeout accordingly.
 
10072
 
 
10073
        * mplayer.cpp: use the media element's TimeManager.
 
10074
 
 
10075
        * visual.h, visual.cpp: add GetTimeManager() method, which just
 
10076
        does GetSurface()->GetTimeManager().
 
10077
 
 
10078
        * dependencyobject.cpp (base_unref_delayed): as much as I hate to
 
10079
        do this, use a g_idle instead of a tick call here, since we have
 
10080
        no access to the surface.
 
10081
 
 
10082
        * animation.cpp (Storyboard::Begin): the surface no longer has the
 
10083
        root clock group, the surface's TimeManager does.
 
10084
 
 
10085
        * panel.h, panel.cpp (SetSurface): recursively call SetSurface on
 
10086
        our children.
 
10087
 
 
10088
        * uielement.h, uielement.cpp: translate global dirty calls into
 
10089
        surface calls, and override SetSurface to remove ourselves from
 
10090
        the dirty list if we're losing our surface.
 
10091
 
 
10092
        * eventargs.cpp: translate global dirty calls into surface calls.
 
10093
        
 
10094
2008-03-06  Michael Dominic K.  <mdk@mdk.am>
 
10095
 
 
10096
        * src/clock.cpp: In ClockGroup Clamp the time *before* ticking on
 
10097
        child clocks. Othewise children always get a small delta and keep
 
10098
        going beyond the parent Duration bounds. Fixes the contrained
 
10099
        storyboard examples.
 
10100
 
 
10101
        Also making the forward/backward ComputeNewTime behavior depend on
 
10102
        'forward' instead of out_delta (which can be 0 if hitting bounds).
 
10103
 
 
10104
2008-03-06  Sebastien Pouliot  <sebastien@ximian.com>
 
10105
 
 
10106
        * transform.cpp: Fix Matrix default values to match identity 
 
10107
        matrix (and fix one js unit test).
 
10108
 
 
10109
2008-03-05  Larry Ewing  <lewing@novell.com>
 
10110
 
 
10111
        * shape.cpp: drop the code that checks stretch when building the
 
10112
        paths for polyline and polygon.  Fix the condition for translation.
 
10113
 
 
10114
2008-03-05  Larry Ewing  <lewing@novell.com>
 
10115
 
 
10116
        * shape.h:
 
10117
        * shape.cpp: refactor the stretch code slightly and fix the
 
10118
        original stretch tests (that passed the harness but are clearly
 
10119
        wrong).
 
10120
 
 
10121
2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10122
 
 
10123
        * media.h: Made destructors in objects deriving from EventObject protected,
 
10124
          preventing 'delete obj' and stack-allocation for these objects.
 
10125
        
 
10126
        * playlist.cpp: Can't delete downloaders anymore, unref it.
 
10127
 
 
10128
2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10129
 
 
10130
        * animation.h, brush.h, canvas.h, clock.h, collection.h, control.h,
 
10131
          dependencyobject.h, downloader.h, frameworkelement.h, geometry.h,
 
10132
          namescope.h, panel.h, runtime.h, shape.h, stylus.h, text.h, transform.h,
 
10133
          trigger.h, uielement.h, visual.h: Made destructors in objects deriving
 
10134
          from EventObject protected, preventing 'delete obj' and stack-allocation
 
10135
          for these objects.
 
10136
        * demo.cpp, runtime.cpp: Can't delete a surface anymore, unref it.
 
10137
        * dirty.h: Added header.
 
10138
 
 
10139
2008-03-05  Chris Toshok  <toshok@ximian.com>
 
10140
 
 
10141
        * runtime.h (RUNTIME_INIT_DESKTOP, RUNTIME_INIT_BROWSER): make
 
10142
        front-to-back rendering the default.
 
10143
 
 
10144
2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10145
 
 
10146
        * clock.h, playlist.h, trigger.h, text.h, clock.cpp, playlist.cpp,
 
10147
          trigger.cpp, dependencyobject.h, downloader.cpp, dependencyobject.cpp,
 
10148
          media.h, animation.h, brush.h, runtime.h, media.cpp, animation.cpp,
 
10149
          runtime.cpp, text.cpp: Updated event handling to take an EventArgs*
 
10150
          calldata instead of a gpointer.
 
10151
        * error.h: Added EventArgs, a base class for all *EventArgs.
 
10152
        * collection.h: Make ChangeEventArgs inherit from EventArgs.
 
10153
        * uielement.cpp: Create all *EventArgs on the heap and simply the code a
 
10154
          bit.
 
10155
        * collection.cpp: Don't allocate Collection::ChangeEventArgs on the stack.
 
10156
        * eventargs.cpp, eventargs.h: Added EventArgs, a base class for all
 
10157
          *EventArgs. Added MarkerReachedEventArgs.
 
10158
        * brush.cpp: Updated event handling to take an EventArgs* calldata instead
 
10159
          of a gpointer. ~ImageBrush: don't delete, unref.
 
10160
 
 
10161
2008-03-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10162
 
 
10163
        * value.cpp: Fix warning.
 
10164
 
 
10165
2008-03-05  Larry Ewing  <lewing@novell.com>
 
10166
 
 
10167
        * shape.cpp: Fix line, polyline and polygon to apply stretches
 
10168
        properly (modulo pesimistic shape bounds bugs).  Mostly fixes
 
10169
        test-shape-line-stretch2.xaml, test-shape-polyline-stretch2.xaml
 
10170
        and test-shape-polygon-stretch2.xaml. 
 
10171
 
 
10172
        * shape.h: move stretch transform out of Path and into Shape.
 
10173
 
 
10174
        * stylus.h:
 
10175
        * stylus.cpp: include the strokes in the subtree bounds so that we
 
10176
        will get invalidations and update bounds when the collection
 
10177
        changes.  There are still potential bounds issues point changes,
 
10178
        those are being looked into.  Fixes invalidation issues in
 
10179
        test-inkpresenter-position and test-inkpresenter-scale.
 
10180
 
 
10181
2008-03-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10182
 
 
10183
        * xaml.cpp: Add a null at the end of the namespace array.
 
10184
 
 
10185
2008-03-05  Jeffrey Stedfast  <fejj@novell.com>
 
10186
 
 
10187
        * font.cpp (TextRun::TextRun): Drop \r's and convert non-new-line
 
10188
        white space into a simple space.
 
10189
        (TextLayout::Layout): Treat embedded \n's as LineBreaks
 
10190
        (TextLayout::Layout): When calculating the width of a line that
 
10191
        ends in a space, don't include the width of the space char -
 
10192
        Silverlight doesn't seem to.
 
10193
        (TextLayout::Layout): Don't pad the height. Don't pad the width
 
10194
        either, altho it seems like a padding of +2.0 is about right but
 
10195
        ONLY if the text is in a canvas? See OMTextInline.htm's
 
10196
        actualWidth/Height measurements as well as the out-of-tree
 
10197
        measurement.
 
10198
 
 
10199
        * xaml.cpp (char_data_handler): Always create the GString cdata,
 
10200
        we need to note leading lwsp which the old implementation didn't.
 
10201
        (flush_char_data): Try to emulate Silverlight's chug/chomp
 
10202
        behavior more closely.
 
10203
 
 
10204
2008-03-05  Chris Toshok  <toshok@ximian.com>
 
10205
 
 
10206
        * canvas.cpp (Canvas::OnSubPropertyChanged): make sure to chain up
 
10207
        to panel's OnSubPropertyChanged if we don't handle it.
 
10208
 
 
10209
        * dependencyobject.cpp (DependencyObject::NotifyListenersOfPropertyChange):
 
10210
        make sure we don't call this method with NULL args.  Also, remove
 
10211
        larry's g_warning (which wasn't the case, i tested with sprawl!),
 
10212
        and also remove the check for matching property/parent type for
 
10213
        attached properties.  this will break controls.
 
10214
 
 
10215
        * transform.h, transform.cpp: it used to be that logical parents
 
10216
        of children could rely on OnSubPropertyChanged being invoked for
 
10217
        any property change.  This is no longer the case - the only
 
10218
        instance where it still happens is if there's an attached property
 
10219
        involved.  All other cases have to use OnCollectionChanged.  So,
 
10220
        switch OnSubPropertyChanged to OnCollectionChanged here.
 
10221
 
 
10222
2008-03-05  Jeffrey Stedfast  <fejj@novell.com>
 
10223
 
 
10224
        * text.cpp (TextBlock::OnCollectionChanged): We need to update
 
10225
        bounds/text even if element_args is NULL (because adding/removing
 
10226
        an item still changes our text).
 
10227
        (Inline::OnPropertyChanged): Use args->new_value.
 
10228
 
 
10229
2008-03-05  Chris Toshok  <toshok@ximian.com>
 
10230
 
 
10231
        * transform.h, transform.cpp: remove
 
10232
        TransformCollection::OnSubPropertyChanged.  it was gumming up the
 
10233
        works.
 
10234
 
 
10235
2008-03-05  Larry Ewing  <lewing@novell.com>
 
10236
 
 
10237
        * shape.cpp: disable the shape caching code for now unless
 
10238
        USE_OPT_SHAPE_SURFACE_CACHING=1.
 
10239
 
 
10240
2008-03-05  Michael Dominic K.  <mdk@mdk.am>
 
10241
 
 
10242
        * Makefile.am:
 
10243
        * enums.c:
 
10244
        * enums.h:
 
10245
        * xaml.cpp: Taking out all the enum->str (and vice versa) code from
 
10246
        xaml.cpp and putting it into a new file -> enum.c + some utilities. 
 
10247
 
 
10248
        The enum<->str code is not specific to xaml and is usefull from plugin as
 
10249
        well.
 
10250
 
 
10251
2008-03-05  Stephane Delcroix  <sdelcroix@novell.com>
 
10252
 
 
10253
        * media.cpp: close the pixbuf_loader to load the small images too.
 
10254
 
 
10255
2008-03-04  Chris Toshok  <toshok@ximian.com>
 
10256
 
 
10257
        * runtime.cpp (Surface::expose_to_drawable): re-enable the
 
10258
        clearing of the cairo surface, but only if we have a
 
10259
        widget (i.e. not in the windowless plugin case.)  Should fix
 
10260
        translucent desklets without breaking the plugin.
 
10261
 
 
10262
2008-03-04  Chris Toshok  <toshok@ximian.com>
 
10263
 
 
10264
        [ rather large change, reworking much of the property change event
 
10265
        system to be a little smaller api surface-wise, and also cleaning
 
10266
        up uses of it to remove some of the accumulated cruft that we'd
 
10267
        developed over the past 10 months.]
 
10268
        
 
10269
        * dependencyobject.h, dependencyobject.cpp: A few key changes:
 
10270
 
 
10271
        1. Attach -> AddPropertyChangeListener
 
10272
           Detach -> RemovePropertyChangeListener
 
10273
           NotifyAttachersOfPropertyChange -> NotifyListenersOfPropertyChange
 
10274
 
 
10275
           This was done to remove the confusion between "attached"
 
10276
           properties and our use of the word "attach" to mean "listen for
 
10277
           property changes".  Attached properties are those which
 
10278
           implicitly notify the parent when they're changed.
 
10279
        
 
10280
           OnChildPropertyChanged is gone.  Canvas (the only user of it)
 
10281
           now uses OnSubPropertyChanged to deal with child property
 
10282
           changes.
 
10283
 
 
10284
        2. *PropertyChanged methods take a
 
10285
           structure (PropertyChangedEventArgs) that contains the
 
10286
           DependencyProperty, as well as the old and new values of it.
 
10287
           This was to remove the need for almost every
 
10288
           OnPropertyChangedMethod to immediately call GetValue on the
 
10289
           property.  Passing the old value requires changing the
 
10290
           current_values hash to not have a value destructor, so we have
 
10291
           to manually delete values again.
 
10292
 
 
10293
        3. Reordered the args for
 
10294
           AddPropertyChangeListener/RemovePropertyChangeListener so that
 
10295
           the listener comes first and the second arg defaults to NULL.
 
10296
           Cleans up a bit of the use of this method globally.
 
10297
 
 
10298
        * animation.h, animation.cpp: track OnSubPropertyChanged changes.
 
10299
 
 
10300
        * brush.h, brush.cpp (SolidColorBrush::OnPropertyChanged,
 
10301
        LinearGradientBrush::OnPropertyChanged,
 
10302
        RadialGradientBrush::OnPropertyChanged): remove, unnecessary.
 
10303
 
 
10304
        also lots of changes to use args->new_value instead of calling
 
10305
        GetValue(property).
 
10306
 
 
10307
        Clear up confusion regarding the meaning of the property passed to
 
10308
        AddPropertyChangeListener.
 
10309
 
 
10310
        * canvas.h, canvas.cpp: switch OnChildPropertyChanged to
 
10311
        OnSubPropertyChanged.
 
10312
        
 
10313
        * collection.h, collection.cpp (Node::Node): don't add parent as a
 
10314
        listener for every property change here.  We handle this
 
10315
        specifically (and automatically) in
 
10316
        DependencyObject::NotifyListenersOfPropertyChange, but only for
 
10317
        attached properties.
 
10318
        (Node::~Node): don't remove the listener here either.
 
10319
 
 
10320
        lots of tracking the DO api changes here too.
 
10321
 
 
10322
        * control.h, control.cpp: track On*PropertyChanged changes.
 
10323
 
 
10324
        * font.cpp: fix some warnings
 
10325
 
 
10326
        * frameworkelement.h, frameworkelement.cpp: track
 
10327
        On*PropertyChanged changes.
 
10328
        
 
10329
        * geometry.h, geometry.cpp: track On*PropertyChanged changes.
 
10330
        
 
10331
        * media.h, media.cpp (MediaElement::OnPropertyChanged): remove a
 
10332
        lot of the empty blocks here - there's nothing to do for these
 
10333
        properties, so we might as well not bloat the code.  Also, use
 
10334
        new_value when we can.
 
10335
        (Image::DownloaderComplete): add a (I hope) suitably nasty comment
 
10336
        about calling brush->OnPropertyChanged directly.  code shouldn't
 
10337
        do this, we should figure out if we can just set the property, and
 
10338
        if so, do that.  otherwise something else is broken.
 
10339
        (Image::OnPropertyChanged): use new_value where we can.
 
10340
 
 
10341
        * panel.h, panel.cpp: remove the cached background field.  It
 
10342
        wasn't used except to Attach/ref + Detach/unref it, and that's
 
10343
        handled automatically by the DependencyProperty machinery.
 
10344
        Otherwise just track the On*PropertyChanged api changes.
 
10345
 
 
10346
        * shape.h, shape.cpp: similarly, we don't need to ref/attach our
 
10347
        cached stroke and fill fields.  They're populated for us (and
 
10348
        ref'ed/unref'ed as needed), so we don't need anything additional
 
10349
        here.  Use new_value instead of GetValue in OnPropertyChanged.
 
10350
        Also, factor out some redundant code from all the subclass
 
10351
        OnPropertyChanged methods that was nearly the same as the
 
10352
        Shape::OnPropertyChanged code for it.
 
10353
 
 
10354
        * stylus.h, stylus.cpp: On*PropertyChanged api changes.
 
10355
 
 
10356
        * text.h, text.cpp: mostly On*PropertyChanged api changes, and
 
10357
        lots of using new_value instead of GetValue, but also get rid of
 
10358
        the cached TextBlock foreground instance field.  It's easy enough
 
10359
        to fetch when we need it in the ::Paint method, and the
 
10360
        dependencyobject stuff already refs and attaches to it.
 
10361
 
 
10362
        * transform.h, transform.cpp: lots of On*PropertyChanged api
 
10363
        changes, and using new_value instead of GetValue.
 
10364
 
 
10365
        * uielement.h, uielement.cpp: remove the cached opacityMask
 
10366
        field (it wasn't used except for attach/detach, which is handled
 
10367
        for us.)  The usual On*PropertyChanged changes as well as using
 
10368
        new_value instead of GetValue.
 
10369
        
 
10370
2008-03-04  Jeffrey Stedfast  <fejj@novell.com>
 
10371
 
 
10372
        * xaml.cpp (style_simulations_map): There's only one
 
10373
        StyleSimulation value, and that is None.
 
10374
 
 
10375
        * font.cpp (TextLayout::Layout): In Wrap mode, if we overflow the
 
10376
        width and the text is not part of the first run on a line, break
 
10377
        at the beginning of the Run. This seems to be what Silverlight
 
10378
        does in OMTextInline.htm.
 
10379
 
 
10380
2008-03-04  Larry Ewing  <lewing@novell.com>
 
10381
 
 
10382
        * eventargs.cpp: update the dirty list before trying calculating
 
10383
        relative locations.
 
10384
        
 
10385
        * runtime.cpp (Surface::HandleMouseEvent): process dirty elements
 
10386
        here so that our hit testing has up to date bounds.
 
10387
 
 
10388
 
 
10389
        * dirty.h: remove the prototypes for up/down since it isn't safe
 
10390
        to split the up/down passes.
 
10391
 
 
10392
        * src/uielement.cpp: remove dirty processing.
 
10393
        
 
10394
2008-03-04  Stephane Delcroix  <sdelcroix@novell.com>
 
10395
 
 
10396
        * media.cpp: use a pixbuf_loader instead of the pixbuf_new_from_file to
 
10397
        create the pixbuf from a file, allowing partial rendering of broken
 
10398
        imagefiles, like in Image.htm
 
10399
 
 
10400
2008-03-04  Jeffrey Stedfast  <fejj@novell.com>
 
10401
 
 
10402
        * text.cpp (Inline::GetDefaultValue): Implemented.
 
10403
 
 
10404
2008-03-04  Michael Dominic K.  <mdk@mdk.am>
 
10405
 
 
10406
        * src/uielement.cpp: When calling uielement_transform_point, make sure our
 
10407
        transforms are up-to-date (not dirty).
 
10408
 
 
10409
        Since we're updating the transform matrices only in the expose (dirty)
 
10410
        callback it can happen that two ie. mouse events arrive before we get to
 
10411
        the expose. If the first mouse event invalidated the transform and the
 
10412
        second one relies on the transform (ie. tries to obtain relative mouse
 
10413
        position) it'd get bogus values since the transform has not been
 
10414
        regenerated yet.
 
10415
 
 
10416
        Fixes the drag & drop behaviour in SL ink journal (the selection tool).
 
10417
        Fixes: #362227.
 
10418
 
 
10419
2008-03-04  Michael Dominic K.  <mdk@mdk.am> 
 
10420
 
 
10421
        * src/dirty.cpp:
 
10422
        * src/dirty.h: Splitting the process_dirty_elements () into two individual
 
10423
        chunks -- process_down_dirty_elements () and process_up_dirty_elements ().
 
10424
        process_dirty_elements () now calls both. 
 
10425
 
 
10426
        The point here is that we need to process down dirty elements (call
 
10427
        process_down_dirty_elements ()) from other contextes as well.
 
10428
 
 
10429
2008-03-03  Larry Ewing  <lewing@novell.com>
 
10430
 
 
10431
        * uielement.cpp:  Call FullInvalidate when clip changes so that
 
10432
        our subtree bounds are updated and invalidated.  Make sure we
 
10433
        don't reset the forced invalidate flag.
 
10434
        
 
10435
        * dirty.cpp: invalidate subtree bounds on forced invalidations.
 
10436
        Fixes test-clip-invalid-update.htm.
 
10437
        
 
10438
2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
 
10439
 
 
10440
        * text.cpp (TextBlock::GetText): New method to generate a string
 
10441
        representing the Text property from the inlines.
 
10442
        (TextBlock::SetText): New method (split out from the old
 
10443
        ::SetValue code) to parse the newly set text string into a list of
 
10444
        Inlines and update out InlinesProperty if changed. Returns whether
 
10445
        or not the inlines property changed.
 
10446
        (TextBlock::OnPropertyChanged): Call SetText() to update out
 
10447
        Inlines if the TextProperty value was changed by an outside
 
10448
        source. If the InlinesProperty was changed by an outside source,
 
10449
        update our TextProperty.
 
10450
        (TextBlock::OnCollectionChanged): Update our TextProperty if an
 
10451
        Inline was added or removed or if a Run element had its
 
10452
        TextProperty changed.
 
10453
 
 
10454
2008-03-03  Chris Toshok  <toshok@ximian.com>
 
10455
 
 
10456
        * animation.cpp: plug a memory leak in the 3
 
10457
        UsingKeyFrames::GetCurrentValue methods.
 
10458
 
 
10459
2008-03-03  Chris Toshok  <toshok@ximian.com>
 
10460
 
 
10461
        * transform.h, transform.cpp: Make Matrix::GetUnderlyingMatrix
 
10462
        return a cairo_matrix_t instead of a pointer to the
 
10463
        internal (mutable) field, and update its only use.
 
10464
 
 
10465
2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
 
10466
 
 
10467
        * media.cpp (media_element_get_audio_stream_index): Fixed to
 
10468
        handle nullable value.
 
10469
        (media_element_set_audio_stream_index): Same.
 
10470
        (media_init): Register the AudioStreamIndex property as being
 
10471
        nullable.
 
10472
        (MediaElement::Reinitialize): Set the CurrentStateProperty to
 
10473
        "Closed".
 
10474
 
 
10475
2008-03-03  Jeffrey Stedfast  <fejj@novell.com>
 
10476
 
 
10477
        * media.cpp (media_init): Register AudioStreamCount,
 
10478
        BufferingProgress, CanPause, CanSeek, CurrentState,
 
10479
        NaturalDuration, NaturalVideoWidth, NaturalVideoHeight properties
 
10480
        as being read-only.
 
10481
 
 
10482
        * text.cpp (text_init): Register ActualWidth and ActualHeight
 
10483
        properties as ReadOnly.
 
10484
 
 
10485
        * transform.cpp (Matrix::GetValue): Removed.
 
10486
        (Matrix::SetValue): Removed.
 
10487
        (Matrix::OnPropertyChanged): Implemented.
 
10488
 
 
10489
2008-03-01  Larry Ewing  <lewing@novell.com>
 
10490
 
 
10491
        * shape.cpp (Shape::DoDraw): refactor slightly.
 
10492
 
 
10493
        * geometry.cpp: fix extents calculation when there is only a fill
 
10494
        on the shape.  Fixes test-path-stretch-fill-extents.xaml.
 
10495
        
 
10496
        * shape.cpp (Shape::ComputeShapeBounds): make sure shapes with
 
10497
        negative widths or heights have no bounds.
 
10498
        (Shape::DoDraw): Silence warning.
 
10499
 
 
10500
2008-02-29  Larry Ewing  <lewing@novell.com>
 
10501
 
 
10502
        * shape.cpp (Shape::ComputeShapeBounds): tweak shape bounds to
 
10503
        match StretchAndShapes.xaml.
 
10504
 
 
10505
        * collection.cpp (VisualCollection::Remove): don't fire
 
10506
        VisualRemoved unless we are going to actually remove the item.
 
10507
        Fixes OM_RemoveClearRemoveAt.htm.
 
10508
 
 
10509
2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
 
10510
 
 
10511
        * collection.cpp (VisualCollection::ResortByZIndex): Reinitialize
 
10512
        the z_sorted array before sorting so that we can be sure the end
 
10513
        result will be a stable sort.
 
10514
        (VisualCollection::Insert): Don't use g_ptr_array_insert_sorted()
 
10515
        because we need to take index into account. Instead, grow our
 
10516
        array and call ResortByZIndex().
 
10517
 
 
10518
2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
 
10519
 
 
10520
        * text.cpp (TextBlock::GetValue): Revert memleak fix, it created
 
10521
        an even more fun memory corruption bug.
 
10522
 
 
10523
2008-02-29  Larry Ewing  <lewing@novell.com>
 
10524
        
 
10525
        src/control.cpp:
 
10526
        src/frameworkelement.cpp:
 
10527
        src/geometry.cpp:
 
10528
        src/media.cpp:
 
10529
        src/rect.cpp:
 
10530
        src/rect.h:
 
10531
        src/shape.cpp:
 
10532
        src/text.cpp:
 
10533
        src/uielement.cpp: Fix Rect::Transform, replace all occurances of
 
10534
        bounding_rect_for_transformed_rect with Rect::Transform.
 
10535
 
 
10536
2008-02-29  Larry Ewing  <lewing@novell.com>
 
10537
 
 
10538
        * geometry.cpp: apply transform to all bounds calculations.  Fixes
 
10539
        test-geometry-bounds.xaml.
 
10540
 
 
10541
2008-02-29  Larry Ewing  <lewing@novell.com>
 
10542
 
 
10543
        * geometry.cpp: Make sure geometry groups draw their children
 
10544
        rather than just copying the paths so that local transforms are
 
10545
        applied correctly.
 
10546
 
 
10547
2008-02-29  Jeffrey Stedfast  <fejj@novell.com>
 
10548
 
 
10549
        * text.cpp (TextBlock::GetValue): Fixed memory leak.
 
10550
 
 
10551
        * media.cpp (MediaElement::GetValue): Fixed compile warning.
 
10552
 
 
10553
        * text.cpp (Inline::OnPropertyChanged): Use GetValueNoDefault()
 
10554
        rather than calling inline_get_*() which use GetValue().
 
10555
 
 
10556
        * font.cpp (TextFont::TextFont): Don't let the underline thickness
 
10557
        be < 1.0
 
10558
 
 
10559
        * dependencyobject.cpp (DependencyObject::GetValueNoDefault):
 
10560
        Simplified.
 
10561
        (DependencyObject::GetValue): Simplified.
 
10562
        (DependencyObject::GetDefaultValue): New method to get the default
 
10563
        value for a property (now used by GetValue()).
 
10564
 
 
10565
2008-02-29  Larry Ewing  <lewing@novell.com>
 
10566
 
 
10567
        * geometry.cpp (PathGeometry::ComputeBounds): take the geometry
 
10568
        transform into account when computing bounds.  Fixes
 
10569
        CGeometry_AddToRenderList.xaml
 
10570
 
 
10571
2008-02-29  Larry Ewing  <lewing@novell.com>
 
10572
 
 
10573
        * shape.h:
 
10574
        * shape.cpp: export calc_line_bounds.
 
10575
 
 
10576
        * geometry.cpp: use calc_line_bounds from shape.h.  Fixes bounds
 
10577
        problems on Animation_TargetingAndHandoff.xaml.
 
10578
 
 
10579
2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10580
 
 
10581
        * pipeline.cpp: Add a missing const modifier.
 
10582
 
 
10583
2008-02-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10584
 
 
10585
        * mplayer.cpp: Use the first streams found in the media, not the last.
 
10586
 
 
10587
2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
 
10588
 
 
10589
        * stylus.cpp: if there's an outline, draw a line of at least 2px.
 
10590
 
 
10591
2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
 
10592
 
 
10593
        * brush.cpp: No longer ignore out-of-bounds offest in
 
10594
        SetupGradient. Add the bounds stop with linearinterpolation
 
10595
        between the nearest stop and the outofbounds one. Handle the
 
10596
        degenerated case with only outofbounds stops.
 
10597
 
 
10598
2008-02-28  Michael Dominic K.  <mdk@mdk.am>
 
10599
 
 
10600
        * shape.cpp: Commenting a left-over debug g_warning.
 
10601
 
 
10602
        Additionally adding a protection against NULL in cache-size reporting (as
 
10603
        experienced by rolf). However, if GetSurface () returns NULL in the Render
 
10604
        callback... I guess we're screwed anyways.
 
10605
 
 
10606
2008-02-28  Michael Dominic K.  <mdk@mdk.am>
 
10607
 
 
10608
        * xaml.cpp:
 
10609
        * xaml.h: Adding convert_property_value_to_enum_str function to
 
10610
        check/convert if the value for the given property can be represented by an
 
10611
        enum string. 
 
10612
 
 
10613
        It would be nicer to mover all the enums tables/resolving to a separate
 
10614
        place in future instead of gluing it to xaml.cpp.
 
10615
 
 
10616
2008-02-28  Stephane Delcroix  <sdelcroix@novell.com>
 
10617
 
 
10618
        * shape.h|cpp: override GetSizeForBrush for Rectangle to honor the
 
10619
        Stretch property.
 
10620
 
 
10621
2008-02-27  Jeffrey Stedfast  <fejj@novell.com>
 
10622
 
 
10623
        * text.cpp (Glyphs::Render): Use horiBearingX for the first char
 
10624
        in the Glyphs string just like we do for TextBlock rendering.
 
10625
 
 
10626
2008-02-27  Jeffrey Stedfast  <fejj@novell.com>
 
10627
 
 
10628
        Fixes the last remaining issue in the TextRegressions.htm test.
 
10629
 
 
10630
        * xaml.cpp (flush_char_data): Only preserve LWSP in CDATA between
 
10631
        non-autogenerated <Run>'s.
 
10632
 
 
10633
        * text.cpp (TextBlock::SetValue): Mark the Inlines auto-generated
 
10634
        from the TextBlock's Text property as being auto-generated.
 
10635
 
 
10636
2008-02-27  Larry Ewing  <lewing@novell.com>
 
10637
 
 
10638
        * shape.cpp: change the shape surface cache to cache in device
 
10639
        coordinates and rework the candidate restrictions to reject
 
10640
        huge shapes and allow scaled caches.
 
10641
 
 
10642
2008-02-27  Larry Ewing  <lewing@novell.com>
 
10643
 
 
10644
        * shape.cpp: center the filled image within the new bounds.
 
10645
 
 
10646
2008-02-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10647
 
 
10648
        * media.h, media.cpp: When a media is opened, seek to the current
 
10649
        position.
 
10650
 
 
10651
        * value.cpp: ToString: Return 'NULL' if we're null.
 
10652
 
 
10653
2008-02-27  Michael Dominic K.  <mdk@mdk.am>
 
10654
 
 
10655
        * src/animation.cpp: When storyboard is completed, Teardown the clocks
 
10656
        only if we're realling stopping (not holding). Fixes the
 
10657
        StoryBoard_ModifyProperty test.
 
10658
 
 
10659
2008-02-27  Michael Dominic K.  <mdk@mdk.am>
 
10660
 
 
10661
        * clock.cpp: Make sure we actually hit the our_delta < 0 code 
 
10662
        path. Fixes the AutoReversed/Repeated animations.
 
10663
 
 
10664
2008-02-27  Michael Dominic K.  <mdk@mdk.am>
 
10665
 
 
10666
        * shape.cpp: More cases to invalidate (free mem) of the surface cache.
 
10667
 
 
10668
2008-02-26  Jeffrey Stedfast  <fejj@novell.com>
 
10669
 
 
10670
        * font.cpp (TextFont::TextFont): Precalculate underline position
 
10671
        and thickness. Also, we need to adjust the position based on 1/2
 
10672
        the underline thickness.
 
10673
        (TextLayout::Layout): Only adjust by the horiBearingX if < 0.
 
10674
        (TextLayout::RenderLine): Same.
 
10675
 
 
10676
2008-02-26  Chris Toshok  <toshok@ximian.com>
 
10677
 
 
10678
        * runtime.cpp (runtime_cairo_create): take the visual too, so the
 
10679
        plugin can send ours in - we can't rely on the pixmap having a
 
10680
        visual associated with it, because it's initialized with the
 
10681
        _foreign api which doesn't fill in the colormap. yay.
 
10682
        (Surface::Surface): if we're windowless don't create the widget.
 
10683
        also, init render/render_data and invalidate/invalidate_data to
 
10684
        NULL.
 
10685
        (Surface::ConnectEvents): exit early if we're windowless.
 
10686
        (Surface::Invalidate): call through the invalidate function if
 
10687
        there is one.  otherwise, default behavior (if we have a widget).
 
10688
        (Surface::Paint): exit early if no toplevel.
 
10689
        (Surface::render_cb): call through the render function if there is
 
10690
        on.
 
10691
        (Surface::expose_to_drawable): this is most of the guts of
 
10692
        expose_callback, changed to handle the case where we're already
 
10693
        drawing to the backbuffer (in the windowless case) and therefore
 
10694
        don't need the temporary pixmap.  Also, commented out some code
 
10695
        that clears the contents - do we actually need this?  The comment
 
10696
        for it is enormous...
 
10697
        (Surface::expose_event_callback): just call expose_to_drawable
 
10698
        with the widget's window.
 
10699
 
 
10700
        * runtime.h (class Surface): we need to make the gtk callbacks
 
10701
        public since the plugin will be invoking them directly.  Also,
 
10702
        switch the event methods to returning bools, and add a new method
 
10703
        called expose_to_drawable, so the plugin can direct rendering to a
 
10704
        pixmap in the windowless case.
 
10705
 
 
10706
        * uielement.h, uielement.cpp: change all the Emit* methods to
 
10707
        return bool.
 
10708
 
 
10709
        * dependencyobject.h, dependency.cpp: make EventObject::Emit
 
10710
        return true if there were handlers for the event, and false
 
10711
        otherwise.
 
10712
 
 
10713
2008-02-26  Jeffrey Stedfast  <fejj@novell.com>
 
10714
 
 
10715
        * text.cpp (TextBlock::TextBlock): Removed the useless
 
10716
        text_block_set_text() call. This was just a broken hack meant to
 
10717
        do what MDK's previous commit fixed the right way.
 
10718
 
 
10719
        * font.cpp (TextFont::UnderlinePosition): Fixed to take font
 
10720
        y_scale metrics into consideration.
 
10721
        (TextFont::UnderlineThickness): Same.
 
10722
 
 
10723
2008-02-26  Michael Dominic K.  <mdk@mdk.am>
 
10724
 
 
10725
        * src/text.cpp: TextBlock when constructed by default has an empty
 
10726
        Inlines collection instead of NULL. Along with all the previous
 
10727
        commits fixes the OM_CreateAddInsert.htm test.
 
10728
 
 
10729
2008-02-26  Michael Dominic K.  <mdk@mdk.am>
 
10730
 
 
10731
        * src/collection.cpp: Don't allow collection insert at negative
 
10732
        position.
 
10733
 
 
10734
2008-02-26  Michael Dominic K.  <mdk@mdk.am>
 
10735
 
 
10736
        * src/collection.cpp: Don't add the object to the collection if it
 
10737
        already contains the object (return -1 instead).
 
10738
 
 
10739
2008-02-26  Michael Dominic K.  <mdk@mdk.am>
 
10740
 
 
10741
        * src/animation.cpp:
 
10742
        * src/animation.h:
 
10743
        * src/collection.cpp:
 
10744
        * src/collection.h: The "Add" method of collections returns int (index of
 
10745
        the element added), not bool. As explained in:
 
10746
 
 
10747
        http://msdn2.microsoft.com/en-us/library/system.windows.media.visualcollection.add.aspx
 
10748
 
 
10749
2008-02-25  Jeffrey Stedfast  <fejj@novell.com>
 
10750
 
 
10751
        * font.cpp (TextFont::OpenZipArchiveFont): Since we aren't going
 
10752
        through FontConfig, we need to parse the font's family name to
 
10753
        extract styleistic info so we can do proper font name matching and
 
10754
        style matching (e.g. "Myriad Pro Cond Black Italic" should match
 
10755
        "Myriad Pro, Condensed Black Italic").
 
10756
 
 
10757
2008-02-25  Chris Toshok  <toshok@ximian.com>
 
10758
 
 
10759
        * runtime.h, runtime.cpp: s/drawing_area/widget and
 
10760
        s/DrawingArea/Widget
 
10761
 
 
10762
        * demo.cpp: same.
 
10763
 
 
10764
2008-02-25  Michael Dominic K.  <mdk@mdk.am>
 
10765
 
 
10766
        * src/uielement.h: Adding a virtual CacheInvalidateHint () function that
 
10767
        can be called on the element to give it a hint that it should free it's
 
10768
        cache for the time being.
 
10769
 
 
10770
        * src/collection.cpp:
 
10771
        * src/panel.cpp:
 
10772
        * src/panel.h: Forward CacheInvalidateHint to all children.
 
10773
 
 
10774
        * src/shape.cpp:
 
10775
        * src/shape.h: Destroy the surface and path cache when hinted.
 
10776
 
 
10777
        In total improves our memory usage with surface/path caching, ie. in the
 
10778
        Showcase.
 
10779
 
 
10780
2008-02-22  Michael Dominic K.  <mdk@mdk.am>
 
10781
 
 
10782
        * src/runtime.cpp:
 
10783
        * src/runtime.h:
 
10784
        * src/shape.cpp:
 
10785
        * src/shape.h: Adding functionality to report the cache size usage. By
 
10786
        default it's turned off. MOONLIGHT_OVERRIDES="cache=show" to turn it on. 
 
10787
 
 
10788
2008-02-22  Michael Dominic K.  <mdk@mdk.am>
 
10789
 
 
10790
        * src/shape.cpp: RoundOut to pixels the extents of the shapes. Causes us
 
10791
        to expose a few more pixels but helps with surface caching.
 
10792
 
 
10793
2008-02-22  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10794
 
 
10795
        * downloader.cpp: downloader_get_response_file: remove any directory
 
10796
          components from the part name, otherwise the creation of the tmp file
 
10797
          fails. If we're aborted, don't call any callbacks.
 
10798
        * media.cpp: If we have a downloader and SetSource is called with a new
 
10799
          downloader, abort the previous download, not only unref it, otherwise
 
10800
          our callbacks and events may still get called from the old downloader.
 
10801
 
 
10802
2008-02-21  Jeffrey Stedfast  <fejj@novell.com>
 
10803
 
 
10804
        * font.cpp (TextFont::TextFont): Simplified the fallback code.
 
10805
 
 
10806
2008-02-21  Jeffrey Stedfast  <fejj@novell.com>
 
10807
 
 
10808
        Fixes Glyphs.xaml
 
10809
 
 
10810
        * text.cpp (Glyphs::SetIndices): Fixed to properly parse glyph
 
10811
        cluster mappings.
 
10812
        (Glyphs::Layout): Properly handle glyph clusters.
 
10813
        (Glyphs::Render): Same.
 
10814
 
 
10815
2008-02-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10816
 
 
10817
        * media.cpp: When aborting a downloader, null out the write
 
10818
        functions too.
 
10819
 
 
10820
2008-02-21  Michael Dominic K.  <mdk@mdk.am>
 
10821
 
 
10822
        * src/clock.cpp: Emit the Completed event when Filling as
 
10823
        well. Together with prev commit fixes: #359024 and #324935.
 
10824
 
 
10825
2008-02-21  Michael Dominic K.  <mdk@mdk.am>
 
10826
 
 
10827
        * src/animation.cpp:
 
10828
        * src/animation.h: Detach the AnimationStorage update handler from the
 
10829
        clock when the clock is stopped -- prevents us from overriding the (just
 
10830
        reset) base value with another update.
 
10831
 
 
10832
2008-02-21  Michael Dominic K.  <mdk@mdk.am> 
 
10833
 
 
10834
        * src/value.cpp: Implementing ToString () for DOUBLE.
 
10835
 
 
10836
2008-02-21  Michael Dominic K.  <mdk@mdk.am>
 
10837
 
 
10838
        * src/color.cpp: A slightly more relaxed/tolerant way of parsing
 
10839
        the colors... it's the web and it's broken by default. Fixes:
 
10840
        #362287 (the US candidates website).
 
10841
 
 
10842
2008-02-21  Stephane Delcroix  <sdelcroix@novell.com>
 
10843
 
 
10844
        * text.h|cpp: compute GetOriginPoint and fix GetSizeForBrush
 
10845
 
 
10846
2008-02-20  Jeffrey Stedfast  <fejj@novell.com>
 
10847
 
 
10848
        Fixes the TextBlockFontDownloads.htm test.
 
10849
 
 
10850
        * font.cpp (TextFontDescription::Set*): If the new value is not
 
10851
        the same as the old, invalidate the loaded TextFont.
 
10852
        (TextFont::TextFont): Always compare family names unless we're
 
10853
        requesting the "Sans" (e.g. last) fallback font.
 
10854
        (TextFont::TextFont): If the requested family name does not match
 
10855
        the specified font file, fall back to a system font of the same
 
10856
        name (we were doing this for zip archievs before, but not for
 
10857
        specified ttf font files).
 
10858
 
 
10859
        * text.cpp (TextBlock::SetFontSource): If the downloader is null,
 
10860
        set the font filename to null and invalidate the textblock.
 
10861
 
 
10862
2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10863
 
 
10864
        * media.cpp: Add a printf to inform when we're trying to load an
 
10865
        mms stream.  Helps a lot when trying to identify sites depending
 
10866
        on mms/streaming support.
 
10867
 
 
10868
        * runtime.cpp: Unref debug_selected_element upon
 
10869
        destruction. Fixes a leak.
 
10870
 
 
10871
2008-02-20  Michael Dominic K.  <mdk@mdk.am>
 
10872
 
 
10873
        * src/shape.cpp: Fixing the shape caching to work also with
 
10874
        Path/Geometry.  Fixes: #362021.
 
10875
 
 
10876
2008-02-20  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10877
 
 
10878
        * media.cpp: MediaElement/Image: Remove event handlers when we abort the
 
10879
          downloader, otherwise the handlers might be called after we're
 
10880
          destroyed.
 
10881
 
 
10882
2008-02-19  Jeffrey Stedfast  <fejj@novell.com>
 
10883
 
 
10884
        * uri.cpp (Uri::ToString): Now takes a 'flags' argument to let us
 
10885
        know which, if any, parts of the URI to hide.
 
10886
        (Uri::Parse): If we don't have a protocol, don't simply assume
 
10887
        that the entire string is the filename. We might have a fragment
 
10888
        attached, for example.
 
10889
 
 
10890
        * text.cpp (Glyphs::OnPropertyChanged): Decode the URI here and
 
10891
        get the font index (if a fragment is set). Also, use the parsed
 
10892
        Uri's ::ToString() method to hide the fragment so that requesting
 
10893
        the file actually works.
 
10894
        (Glyphs::DownloaderComplete): Don't need to parse the URI here
 
10895
        anymore, we've already got the index from OnPropertyChanged().
 
10896
 
 
10897
2008-02-19  Jackson Harper  <jackson@ximian.com>
 
10898
 
 
10899
        * xaml.cpp: Parser error if we can't find the owner type or
 
10900
        property name when setting properties.
 
10901
 
 
10902
2008-02-19  Sebastien Pouliot  <sebastien@ximian.com> 
 
10903
 
 
10904
        * geometry.cpp|h: #if out GetOriginPoint which calls moon_get_origin
 
10905
 
 
10906
2008-02-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
10907
 
 
10908
        * pipeline-ffmpeg.cpp: Comment out error message which just shows ffmpeg's
 
10909
          shortcomings.
 
10910
        * media.cpp: Remove printf.
 
10911
 
 
10912
2008-02-19  Sebastien Pouliot  <sebastien@ximian.com>
 
10913
 
 
10914
        * moon-path.c: #if out moon_get_origin since it's not used 
 
10915
        anymore. Change cairo_path_display output to be easier to read 
 
10916
        with negative numbers.
 
10917
 
 
10918
2008-02-18  Michael Dominic K.  <mdk@mdk.am>
 
10919
 
 
10920
        * src/media.cpp:
 
10921
        * src/media.h: Load images slightly faster by skipping one pixbuf blit and
 
10922
        doing the expansion + conversion in one step.
 
10923
 
 
10924
        Also fixing an ugly memory leak where all RGBA images loaded were leaked
 
10925
        (two times in memory).
 
10926
 
 
10927
2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
 
10928
 
 
10929
        * src/clock.cpp: Before processing dirty enter/leave gdk threads. We're
 
10930
        being called from a timeout (unprotected) and we're potentially calling
 
10931
        gdk_ invalidation functions. I think it only matters (in this case) 
 
10932
        on non-X backends though. 
 
10933
 
 
10934
2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
 
10935
 
 
10936
        * src/uielement.cpp: Moving the debug timers for rendering slightly and
 
10937
        uncommenting them so that they work when TIMERS is enabled.
 
10938
 
 
10939
2008-02-15  Michael Dominic K.  <mdk@mdk.am> 
 
10940
 
 
10941
        * src/runtime.cpp:
 
10942
        * src/runtime.h: Adding an extra DEBUG_MARKER_KEY define (disabled by
 
10943
        default) that changes your 'd' key into a special debug key. When pressed,
 
10944
        a message is printed to the console (region start). When pressed again,
 
10945
        another message is printed (region end). This is usefull to see what
 
10946
        happens in a particular part of the program timeline (ie. after click). 
 
10947
 
 
10948
        Makes sense obviously only with timers debugging on and stuff.
 
10949
 
 
10950
2008-02-14  Michael Dominic K.  <mdk@mdk.am>
 
10951
 
 
10952
        * src/clock.cpp: Changing max/default FPS to 50. Empirical experience
 
10953
        shows that SL runs by default at something around that. Also, with the
 
10954
        recent fixes some sites are suffering from 24 (can run/look much better
 
10955
        at higher fps).
 
10956
 
 
10957
2008-02-14  Michael Dominic K.  <mdk@mdk.am> 
 
10958
 
 
10959
        * src/shape.cpp:
 
10960
        * src/shape.h: Adding surface caching for shapes. The strategy
 
10961
        is to cache big surfaces that have little transformations (such as
 
10962
        ie. backgrounds, fade overlays, etc.). Improves performance greatly
 
10963
        for many sites (ie. Showcase).
 
10964
 
 
10965
2008-02-14  Michael Dominic K.  <mdk@mdk.am> 
 
10966
 
 
10967
        * src/uielement.cpp: Commenting out the timer in post-pre render as it's
 
10968
        broken and blocks the compilation with timers on.
 
10969
 
 
10970
2008-02-12  Michael Dominic K.  <mdk@mdk.am> 
 
10971
 
 
10972
        * src/animation.cpp:
 
10973
        * src/animation.h: Massive fix for our KeySpline animation calculation
 
10974
        routines (which were broken and giving wrong values). According to:
 
10975
 
 
10976
        http://msdn2.microsoft.com/en-us/library/ms533119(VS.85).aspx
 
10977
 
 
10978
        "...think of the horizontal axis as the pace with which the interpolation
 
10979
        proceeds along the timing interval. The vertical axis is the resulting
 
10980
        value for the animation's progress, yielded by the function that underlies
 
10981
        the keySplines property. Another way of describing this is that the
 
10982
        horizontal axis is the input unit time for the interval, and the vertical
 
10983
        axis is the output unit time."
 
10984
 
 
10985
        Therfore, we need to perform an "Y for X" bezier lookup. The current fix is
 
10986
        a little bit ugly -- we waste 256 bytes per KeySpline to store
 
10987
        pre-calculated values in a lookup table. But maybe it's not soo bad, since
 
10988
        balf function (from prev implementation) was coming up top in the
 
10989
        profiles anyways.
 
10990
 
 
10991
        The only other way I can (currently) think of would be to solve a cubic
 
10992
        equation each time we poll the KeySpline for a value. That would be,
 
10993
        however, a *massive* performance hit. 
 
10994
 
 
10995
        Hence the lookup solution for now (note: the generation of the table is
 
10996
        very fast, no cubics involved).
 
10997
 
 
10998
2008-02-11  Michael Dominic K.  <mdk@mdk.am>
 
10999
 
 
11000
        * src/runtime.h: Fixing our debug-timing routine. It reported 10x as much
 
11001
        as it should... yes, our redraws are slow, but not *that* slow ;)
 
11002
 
 
11003
2008-02-09  Michael Dominic K.  <mdk@mdk.am> 
 
11004
 
 
11005
        * src/mplayer.cpp: If we have no audio devices present in the system,
 
11006
        launch a special audio loop variant to still read/fetch audio (and discard
 
11007
        it) so that the video playback is not blocked. Fixes: #341835.
 
11008
 
 
11009
2008-02-08  Jeffrey Stedfast  <fejj@novell.com>
 
11010
        
 
11011
        * font.cpp (TextFont::TextFont): If the loaded font's family_name
 
11012
        doesn't match the requested family name, fall back to the default
 
11013
        font (it means the requested font doesn't exist on the system).
 
11014
        (TextLayout::Layout): Added a 'first_char' state variable that can
 
11015
        be used to figure out if if the current char is the first char on
 
11016
        a line. This is needed for the wrapping logic.
 
11017
 
 
11018
2008-02-08  Jeffrey Stedfast  <fejj@novell.com>
 
11019
 
 
11020
        Fixes some text layout bugs in TextBlockFontFamilies.xaml
 
11021
 
 
11022
        * xaml.cpp (flush_char_data): Now takes a string 'next_element'
 
11023
        argument rather than a bool 'start' argument so that we can make
 
11024
        sure that the previous and next element types are <Run>'s because
 
11025
        lwsp between a <LineBreak/> and a <Run> or a </Run> and a
 
11026
        <LineBreak/> should be ignored. Also, never g_strchomp() this
 
11027
        cdata.
 
11028
        (start_element_handler): Pass the name of the next element to
 
11029
        flush_char_data().
 
11030
        (end_element_handler): Pass NULL to flush_char_data() as the
 
11031
        next_element argument.
 
11032
 
 
11033
2008-02-08  Chris Toshok  <toshok@ximian.com>
 
11034
 
 
11035
        * media.cpp (MediaElement::Render): reorder things so that we're
 
11036
        calculating the brush pattern matrix with the snapped pixels.
 
11037
 
 
11038
2008-02-08  Stephane Delcroix  <sdelcroix@novell.com>
 
11039
 
 
11040
        * brush.cpp: fix Image|Video|VisualBrushes for Shapes.
 
11041
 
 
11042
2008-02-07  Chris Toshok  <toshok@ximian.com>
 
11043
 
 
11044
        * media.cpp (MediaElement::Render): snap to the pixel grid if
 
11045
        we're not rotated/skewed.
 
11046
 
 
11047
2008-02-07  Sebastien Pouliot  <sebastien@ximian.com>
 
11048
 
 
11049
        * shape.cpp: Add comment about (missing) Path::ComputeLargestRectangle
 
11050
 
 
11051
2008-02-07  Larry Ewing  <lewing@novell.com>
 
11052
 
 
11053
        * brush.cpp (GradientBrush::SetupGradient): treat stops > 1.0 the
 
11054
        same as out of bounds stops.
 
11055
 
 
11056
        * shape.cpp: cache the results of CompouteShapeBounds in
 
11057
        extents rect, use that value in GetSizeForBrush.
 
11058
 
 
11059
2008-02-07  Jeffrey Stedfast  <fejj@novell.com>
 
11060
 
 
11061
        Fixes a rendering glitch for xaml similar to:
 
11062
 
 
11063
        <TextBlock>
 
11064
           <Run FontStyle="Italic">This </Run>is Dodger Blue
 
11065
        </TextBlock>
 
11066
 
 
11067
        * xaml.cpp (flush_char_data): Don't g_strchomp() the cdata when
 
11068
        setting the value of a content_property (e.g. a Run).
 
11069
 
 
11070
2008-02-07  Michael Dominic K.  <mdk@mdk.am>
 
11071
 
 
11072
        * src/color.cpp: Added support to parse scRGB-style color specificators
 
11073
        (sc#), see #345931. The scRGB -> sRGB conversion is a bit simplified but
 
11074
        should produce accurate-enough colors for most uses.
 
11075
 
 
11076
        http://silverlight.net/quickstarts/silverlight10/controls.aspx now works.
 
11077
 
 
11078
2008-02-07  Sebastien Pouliot  <sebastien@ximian.com>
 
11079
 
 
11080
        * shape.cpp|h: Split ComputeBounds to avoid calling functions 
 
11081
        bounding_rect_for_transformed_rect and IntersectBoundsWithClipPath
 
11082
        inside each shape. This will enable us to reuse the non-transformed
 
11083
        value elsewhere too. This also fix (for me) the origin point that
 
11084
        caused problems for some brushes. Started implementing methods 
 
11085
        ComputeLargestRectangle[Bounds] to optimize drawing.
 
11086
 
 
11087
2008-02-06  Chris Toshok  <toshok@ximian.com>
 
11088
 
 
11089
        * frameworkelement.cpp (FrameworkElement::GetSizeForBrush): we
 
11090
        want the untransformed size of the element.  otherwise we end up
 
11091
        with a pattern matrix that scales things too large given that
 
11092
        we're also scaling the element.  Fixes fullscreen mode in halo3
 
11093
        and /fox video players (bug #335845).
 
11094
 
 
11095
2008-02-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11096
 
 
11097
        * mplayer.cpp: AdvanceFrame: Create a target_pts range, if we're within the
 
11098
          range, draw the current frame. If we're ahead of the range, do nothing
 
11099
          (fixes some video/audio sync problems), and if we're behind drop frames.
 
11100
          The range makes sure that we paint every frame even when the audio loop
 
11101
          doesn't update the target pts as often as we're drawing video.
 
11102
 
 
11103
2008-02-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11104
 
 
11105
        * panel.cpp, runtime.cpp: Fix warnings.
 
11106
 
 
11107
2008-02-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11108
 
 
11109
        * mplayer.cpp: Simplify our advance frame loop: don't lock the queue during
 
11110
          the entire loop, only when fetching packets. This allows packets to
 
11111
          arrive from the pipeline while in the loop (especially noticable when
 
11112
          decoding the video inside the loop).
 
11113
 
 
11114
2008-02-06  Chris Toshok  <toshok@ximian.com>
 
11115
 
 
11116
        * uielement.cpp (UIElement::FrontToBack): use the media state
 
11117
        accessors, and don't exclude Buffering state - we could be
 
11118
        buffering with a frame rendered.
 
11119
 
 
11120
2008-02-06  Sebastien Pouliot  <sebastien@ximian.com>
 
11121
 
 
11122
        * shape.cpp|h: Keep track if a rectangle has radii or not.
 
11123
        * uielement.h: Add a flag for radii
 
11124
 
 
11125
2008-02-06  Chris Toshok  <toshok@ximian.com>
 
11126
 
 
11127
        * uielement.cpp (UIElement::FrontToBack): make sure
 
11128
        media_element_get_current_state != NULL before we strcmp it.
 
11129
 
 
11130
2008-02-06  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11131
 
 
11132
        * src.mdp: Updated.
 
11133
 
 
11134
2008-02-06  Stephane Delcroix <sdelcroix@novell.com>
 
11135
 
 
11136
        * brush.cpp: fix the radialgradientbrush setup.
 
11137
 
 
11138
2008-02-05  Chris Toshok  <toshok@ximian.com>
 
11139
 
 
11140
        * collection.cpp (Collection::EmitChanged): new method.  Emit the
 
11141
        Changed event and then call closure->OnCollectionChanged.  Also
 
11142
        replace all references to closure->OnCollectionChanged to
 
11143
        EmitChanged.
 
11144
 
 
11145
        * collection.h (class Collection): add ChangeEventArgs struct, and
 
11146
        an EmitChanged method declaration.
 
11147
 
 
11148
        * type.h.in, type.cpp.in (Type::~Type): no need to free all the
 
11149
        events explicitly.
 
11150
        (Type::HideEvent): remove the event name from the hash so it's
 
11151
        inaccessible from javascript.
 
11152
        (Type::RegisterEvent): use g_hash_table_new_full so we can specify
 
11153
        a destroy function for keys instead of doing the _foreach in the
 
11154
        dtor.
 
11155
        (types_init_manually): add the #if 0 here instead of type.cpp.
 
11156
        oops.
 
11157
        (types_init_register_events): register a Changed event for
 
11158
        Collections.
 
11159
 
 
11160
2008-02-05  Jeffrey Stedfast  <fejj@novell.com>
 
11161
 
 
11162
        * downloader.cpp (Downloader::ll_downloader_get_response_file):
 
11163
        Simplified by using the new ExtractFile utility function from
 
11164
        utils.cpp.
 
11165
 
 
11166
        * font.cpp: Moved ExtractFile() and make_tmpdir() into utils.cpp
 
11167
 
 
11168
        * utils.cpp: New collection of utility functions.
 
11169
 
 
11170
2008-02-05  Jeffrey Stedfast  <fejj@novell.com>
 
11171
 
 
11172
        * font.cpp: If a font is requested from a zip archive, extract the
 
11173
        contents and try to figure out which font is the closest match to
 
11174
        the one requested. Fixes bug #356044.
 
11175
 
 
11176
2008-02-05  Chris Toshok  <toshok@ximian.com>
 
11177
 
 
11178
        * uielement.cpp (UIElement::FrontToBack): enable the rectangle
 
11179
        code, and make sure to round in the bounds we're subtracting.
 
11180
        this was causing the flashing white border on silverlight.net/fox.
 
11181
 
 
11182
2008-02-05  Sebastien Pouliot  <sebastien@ximian.com>
 
11183
 
 
11184
        * shape.cpp: Use existing MIN macro. Use local variables when
 
11185
        available.
 
11186
 
 
11187
2008-02-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11188
 
 
11189
        * fullscreen.cs, fullscreen.sh: Tool to generate fullscreen.h
 
11190
 
 
11191
2008-02-05  Chris Toshok  <toshok@ximian.com>
 
11192
 
 
11193
        * runtime.h, runtime.cpp: add support for a "selected" element
 
11194
        when in debug mode.  Also, make use of the Region methods instead
 
11195
        of using region->gdkregion, which is private now.
 
11196
 
 
11197
2008-02-05  Chris Toshok  <toshok@ximian.com>
 
11198
 
 
11199
        * region.h, region.cpp (class Region): add Offset().
 
11200
 
 
11201
2008-02-05  Sebastien Pouliot  <sebastien@ximian.com>
 
11202
 
 
11203
        * geometry.cpp|h: PathGeometry does a Build (not a Draw) to 
 
11204
        populate it's moon_path (like others) so the data can always be 
 
11205
        used.
 
11206
        * moon-path.c|h: Add moon_get_origin to get the minimal X and Y
 
11207
        from a moon_path (Stephane) and moon_merge to merge a subpath into
 
11208
        a main path.
 
11209
 
 
11210
2008-02-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11211
 
 
11212
        * pipeline-ffmpeg.cpp: Remove another printf.
 
11213
 
 
11214
2008-02-02  Jeffrey Stedfast  <fejj@novell.com>
 
11215
 
 
11216
        * pipeline.cpp (FileSource::Peek): Only memmove() if we have data
 
11217
        to move.
 
11218
        (FileSource::Peek): Slightly better fix.
 
11219
 
 
11220
2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
 
11221
 
 
11222
        * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Reimplemented to
 
11223
        estimate the stream position if not known rather than reading data
 
11224
        to find out as we don't have to return an exact stream position.
 
11225
 
 
11226
2008-02-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11227
 
 
11228
        * pipeline.h: Update comment.
 
11229
 
 
11230
2008-02-01  Stephane Delcroix  <sdelcroix@novell.com>
 
11231
 
 
11232
        * uielement.h:
 
11233
        * shape.h:
 
11234
        * shape.cpp: rename GetOringin into GetOriginPoint
 
11235
 
 
11236
        * brush.cpp: implement a bad origin computation (based on bounds)
 
11237
        for Shape::Path
 
11238
 
 
11239
2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
 
11240
 
 
11241
        * pipeline.cpp (Mp3Demuxer::GetPositionOfPts): Implemented.
 
11242
        (FileSource::Peek): As before, only read as much as we need - but
 
11243
        don't clobber what we had prebuffered, only clobber as much as w
 
11244
        need to in order to make room for the new data - this way we make
 
11245
        it more efficient to seek backward later (if need be).
 
11246
 
 
11247
2008-02-01  Stephane Delcroix  <sdelcroix@novell.com>
 
11248
 
 
11249
        * shape.h:
 
11250
        * shape.cpp: define GettOrigin at the Shape level, compute GetOrigin
 
11251
        from the path data instead of from bounds.
 
11252
 
 
11253
        * brush.cpp: translate the brushes with a translation matrix.
 
11254
 
 
11255
2008-02-01  Larry Ewing  <lewing@novell.com>
 
11256
 
 
11257
        * brush.cpp: Make sure we use the brush opacity when computing the
 
11258
        color stops.
 
11259
 
 
11260
2008-02-01  Jeffrey Stedfast  <fejj@novell.com>
 
11261
 
 
11262
        * pipeline.cpp (FindMpegHeader): Now checks for Xing and
 
11263
        Fraunhofer VBRI headers.
 
11264
 
 
11265
2008-01-31  Chris Toshok  <toshok@ximian.com>
 
11266
 
 
11267
        * uielement.h: include region.h
 
11268
 
 
11269
        * point.h: don't assume the right headers have been included
 
11270
        before this file - include glib.h to make sure
 
11271
        G_BEGIN_DECLS/G_END_DECLS is there.
 
11272
 
 
11273
        * region.h, region.cpp: split out the region code from
 
11274
        rect.h/rect.cpp.
 
11275
 
 
11276
        * rect.h, rect.cpp: remove region code.
 
11277
 
 
11278
        * Makefile.am: add region.h/region.cpp
 
11279
 
 
11280
2008-01-31  Chris Toshok  <toshok@ximian.com>
 
11281
 
 
11282
        * runtime.h, runtime.cpp: remove runtime_cairo_region (we can just
 
11283
        use Region::Draw instead).
 
11284
 
 
11285
        * panel.cpp: remove references to runtime_cairo_region, and switch
 
11286
        to the new Region* copy ctor.  also, use Region::IsEmpty instead
 
11287
        of gdk_region_empty.
 
11288
 
 
11289
        * uielement.cpp: more region cleanup, removing references to
 
11290
        GdkRegion in favor of our Region class.  Also, commit (ifdef'ed
 
11291
        out until the rendering glitch is fixed) the rectangle back to
 
11292
        front special case code.
 
11293
 
 
11294
2008-01-31  Chris Toshok  <toshok@ximian.com>
 
11295
 
 
11296
        * rect.cpp (Region::Region): new overload which takes a Region*,
 
11297
        so we don't have to access ->gdkregion everywhere when we copy a
 
11298
        region.
 
11299
 
 
11300
        * rect.h (struct Rect): add a GrowBy method that takes both x and
 
11301
        y deltas, and have the 1 parameter version call it.
 
11302
        (class Region): add a copy ctor that takes a Region*.
 
11303
 
 
11304
2008-01-31  Chris Toshok  <toshok@ximian.com>
 
11305
 
 
11306
        * panel.h, panel.cpp: rename use_back_to_front to UseBackToFront
 
11307
        and add it to the class, protected so subclasses can get at it.
 
11308
 
 
11309
        * stylus.cpp (InkPresenter::PostRender): given the ordering
 
11310
        required, we have to c&p some of Panel::PostRender here to render
 
11311
        the children.  Chaining up to Canvas::PostRender at the start of
 
11312
        the method would have caused the translucency/opacity mask code in
 
11313
        UIElement::PostRender to be executed *before* we rendered our
 
11314
        strokes.
 
11315
 
 
11316
2008-01-31  Chris Toshok  <toshok@ximian.com>
 
11317
 
 
11318
        * stylus.h, stylus.cpp (InkPresenter::PostRender): rename
 
11319
        RenderChildren to this, and chain up to Canvas::PostRender here,
 
11320
        which will do the RenderChildren call if it needs to.
 
11321
 
 
11322
2008-01-31  Chris Toshok  <toshok@ximian.com>
 
11323
 
 
11324
        * panel.cpp (Panel::FrontToBack): simplify this a bunch with
 
11325
        Brush::IsOpaque.
 
11326
 
 
11327
        * brush.h (class Brush): remove GetTotalOpacity() which wasn't
 
11328
        being used anywhere, and add IsOpaque() so that we can use it from
 
11329
        the new front-to-back stuff (instead of duplicating code in Panel
 
11330
        and Shape handling parts).
 
11331
 
 
11332
2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11333
 
 
11334
        * media.cpp: Update.
 
11335
 
 
11336
2008-01-31  Chris Toshok  <toshok@ximian.com>
 
11337
 
 
11338
        * media.cpp (MediaElement::MediaElement): fix build.
 
11339
        (Image::Image): fix initialization order to quiet g++.
 
11340
 
 
11341
2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11342
 
 
11343
        * mplayer.cpp, mplayer.h: Render: removed, not used. LoadVideoFrame:
 
11344
          implemented again. Added an ugly caught_up_with_seek value, used to
 
11345
          determine if video is late due to a seek, in which case it shouldn't
 
11346
          show any frames (fixes #356053).
 
11347
        * pipeline.cpp, pipeline.h: Added IMediaDecoder::CleanState and
 
11348
          HasDelayedFrame.
 
11349
        * pipeline-ffmpeg.cpp: Implemented FfmpegDecoder::CleanState and
 
11350
          HasDelayedFrame. Use a mutex to serialize access to avcodec_open.
 
11351
        * pipeline-ffmpeg.h: Implemented FfmpegDecoder::CleanState and
 
11352
          HasDelayedFrame.
 
11353
 
 
11354
2008-01-31  Jeffrey Stedfast  <fejj@novell.com>
 
11355
 
 
11356
        * pipeline.cpp (mpeg_parse_samplerate): Doh, need to bitshift the
 
11357
        value.
 
11358
        (FindMpegHeader): Now takes an MpegFrameHeader argument, no sense
 
11359
        having our caller re-parse the header.
 
11360
        (Mp3Demuxer::ReadHeader): Updated.
 
11361
 
 
11362
2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
 
11363
 
 
11364
        * brush.cpp: apply the correct offset to RadialGradientBrushes too.
 
11365
 
 
11366
2008-01-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11367
 
 
11368
        * clock.h: Added macros to convert between pts, milliseconds and timespans.
 
11369
        * media.cpp, media.h: MediaElement: Updated to normalized pts (starting at
 
11370
          0). Use the new macros when converting between time formats. Remove the
 
11371
          AdvanceFrame timeout upon reinitialization. Implement a better buffering
 
11372
          algorithm (and honor the BufferingTime property).
 
11373
        * mplayer.cpp, mplayer.h: Remove initial_pts, everything coming from the
 
11374
          pipeline is now normalized to start at 0. Use the new macros when
 
11375
          converting between time formats.
 
11376
        * pipeline.cpp, pipeline.h: Normalize all pts to start at 0, and remove
 
11377
          start_time/initial_pts handling. Added Demuxer::GetPositionOfPts to
 
11378
          estimate the position of a pts. ProgressiveSource::CancelWait: only
 
11379
          cancel if we're waiting, and then wait until actually cancelled.
 
11380
 
 
11381
2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
 
11382
 
 
11383
        * shape.cpp:
 
11384
        * shape.h: GetOrigin for Polyline and Polygon
 
11385
 
 
11386
2008-01-31  Stephane Delcroix  <sdelcroix@novell.com>
 
11387
 
 
11388
        * uielement.h: add a GetOrigin ()
 
11389
 
 
11390
        * shape.cpp:
 
11391
        * shape.h: implement GetOrigin for Path
 
11392
 
 
11393
        * brush.cpp: use GetOrigin as offset, fix the Crystal test.
 
11394
 
 
11395
2008-01-30  Chris Toshok  <toshok@ximian.com>
 
11396
 
 
11397
        * mplayer.h (class MediaPlayer): add rendered_frame.
 
11398
 
 
11399
        * mplayer.cpp (MediaPlayer::MediaPlayer): init rendered_frame to
 
11400
        false.
 
11401
        (MediaPlayer::Close): reset rendered_frame.
 
11402
        (render_frame): set rendered_frame to true if we've successfully
 
11403
        copied data into the video surface.
 
11404
 
 
11405
        * media.cpp (Image::CreateSurface): set CachedSurface::has_alpha
 
11406
        to the pixbuf's has_alpha if USE_OPT_RGB24.
 
11407
 
 
11408
        * media.h (class Image): make the CachedSurface type and the
 
11409
        instance field "surface" public, so the front to back stuff can
 
11410
        get at it.  Also, add "has_alpha" to it, since once the xlib
 
11411
        surface has been created, we lose that information.
 
11412
 
 
11413
        * control.cpp (Control::FrontToBack): nothing to do but call
 
11414
        FrontToBack on real_object.
 
11415
 
 
11416
        * control.h (class Control): add override for FrontToBack.
 
11417
 
 
11418
        * panel.cpp (Panel::FindStartingElement): get rid of this crap.
 
11419
        it was broken and the wrong way to implement it.
 
11420
        (Panel::Render): remove the RenderChildren call here, we do it in
 
11421
        PostRender (and only if we're not rendering front to back)
 
11422
        (Panel::PostRender): if we aren't rendering front to back, call
 
11423
        RenderChildren.
 
11424
        (Panel::RenderChildren): remove references to FindStartingElement.
 
11425
        (Panel::FrontToBack): this method is a little more complicated
 
11426
        than UIElement::FrontToBack owing to the fact that we're
 
11427
        flattening things to a list.  We need to prepend a "cleanup node"
 
11428
        first, before calling FrontToBack on our children, to do the
 
11429
        Panel::PostRender stuff after our children have been rendered.  We
 
11430
        remove this cleanup node if none of the children have added
 
11431
        themselves to the list, and our bounds (without the children)
 
11432
        don't intersect the expose region.  We apply the same logic to
 
11433
        removing our rectangular bounds as the UIElement code does, but
 
11434
        also have to take into account our background brush.  We punt if
 
11435
        any part of it is transparent, and only handle SolidColorBrush and
 
11436
        GradientBrush subclasses.
 
11437
 
 
11438
        * panel.h (class Panel): override UIElement:: FrontToBack,
 
11439
        PreRender, and PostRender.
 
11440
 
 
11441
        * uielement.cpp (UIElement::DoRender): factor out most of the guts
 
11442
        of this method so it can be used in either front-to-back or
 
11443
        back-to-front.  Make sure to pass "false" as the front-to-back arg
 
11444
        for PreRender and PostRender.
 
11445
        (UIElement::FrontToBack): calculate the intersection of the expose
 
11446
        region and our bounds.  Add this region to the front of the render
 
11447
        list, and then do some calculating to decide if we should remove
 
11448
        it from consideration by elements lower than us in the display.
 
11449
        Things like "are we opaque", "have we been rotated or skewed, such
 
11450
        that our rectangular shape no longer fills the bounds entirely",
 
11451
        stuff like that.  We further limit subtracting in element type
 
11452
        specific ways - right now just for MediaElement and Image with
 
11453
        certain constraints (images can't have alpha, media elements must
 
11454
        have a frame rendered, both types must fill their rectangle, etc).
 
11455
        If everything passes, we remove our bounds from the expose region.
 
11456
        (UIElement::PreRender): new method, do the things that DoRender
 
11457
        used to do before calling Render.
 
11458
        (UIElement::PostRender): new method, do the things that DoRender
 
11459
        used to do after calling Render.
 
11460
 
 
11461
        * uielement.h: move the IS_TRANSLUCENT/IS_INVISIBLE #defines here
 
11462
        so they can be used in panel.cpp.  Also, add 3 new virtual
 
11463
        methods (FrontToBack, PreRender, PostRender) as well as two
 
11464
        callback methods to invoke the 2 latter ones.
 
11465
 
 
11466
        * runtime.cpp (overrides): add "render=ftb" and "render=btf"
 
11467
        overrides (with btf the default) corresponding to
 
11468
        RUNTIME_INIT_RENDER_FRONT_TO_BACK.
 
11469
        (Surface::Paint): add support for front-to-back rendering.  If
 
11470
        it's enabled, make a FrontToBack pass on the fullscreen message
 
11471
        and the toplevel element.  This populates the render list with a
 
11472
        back to front ordered list of elements to paint, along with the
 
11473
        regions they need repainted.  If the render list is empty for some
 
11474
        reason (or if the user didn't select ftb rendering), we fall back
 
11475
        to back to back-to-front rendering at the toplevel.
 
11476
        (RenderNode::RenderNode): add ctor/dtor for RenderNode.
 
11477
 
 
11478
        * runtime.h: add the RenderNode class, used by the front to back
 
11479
        rendering.
 
11480
 
 
11481
        * rect.h, rect.cpp: add IsEmpty() and two overloads of Subtract()
 
11482
        to Region.
 
11483
 
 
11484
2008-01-30  Jackson Harper  <jackson@ximian.com>
 
11485
 
 
11486
        * xaml.cpp: Strip leading whitespace from xaml files.
 
11487
        
 
11488
2008-01-30  Jackson Harper  <jackson@ximian.com>
 
11489
 
 
11490
        * xaml.cpp: Handle more names for the default namespace.
 
11491
 
 
11492
2008-01-30  Jackson Harper  <jackson@ximian.com>
 
11493
 
 
11494
        * xaml.cpp: Add support for ucs4.
 
11495
 
 
11496
2008-01-29  Jackson Harper  <jackson@ximian.com>
 
11497
 
 
11498
        * xaml.cpp: pull in unistd.h
 
11499
 
 
11500
2008-01-29  Jackson Harper  <jackson@ximian.com>
 
11501
 
 
11502
        * xaml.cpp: Properly handle utf-16, converting it to utf-8 so
 
11503
        expat doesn't choke.
 
11504
 
 
11505
2008-01-28  Chris Toshok  <toshok@ximian.com>
 
11506
 
 
11507
        * brush.cpp (VisualBrush::SetupBrush): RoundOut doesn't update
 
11508
        inplace, it returns the new rect.
 
11509
 
 
11510
        * uielement.cpp (UIElement::DoRender): same change.
 
11511
 
 
11512
2008-01-28  Jeffrey Stedfast  <fejj@novell.com>
 
11513
 
 
11514
        * pipeline.cpp (FindMpegHeader): Validate that the sequence is
 
11515
        actually an mpeg frame header by parsing it and calculating its'
 
11516
        length and checking that another frame header starts where we
 
11517
        expect it.
 
11518
        (Mp3DemuxerInfo::Supports): We need to use FindMpegHeader() here
 
11519
        too.
 
11520
 
 
11521
2008-01-28  Jeffrey Stedfast  <fejj@novell.com>
 
11522
 
 
11523
        * pipeline.cpp (FindMpegHeader): Scan over binary garbage and find
 
11524
        an MPEG sync header.
 
11525
        (Mp3Demuxer::ReadHeader): Use FindMpegHeader() and also use
 
11526
        IMediaSource's new GetSize() method to help calculate media
 
11527
        duration as opposed to seeking to the end.
 
11528
 
 
11529
2008-01-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11530
 
 
11531
        * media.cpp, media.h: Open the media async.
 
11532
        * pipeline.cpp, pipeline.h: Add and implement OpenAsync.
 
11533
 
 
11534
2008-01-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11535
 
 
11536
        * media.cpp: MediaElement::AdvanceFrame: Only stop if the media player
 
11537
          reached eof and couldn't advance.
 
11538
        * mplayer.cpp, mplayer.h: Add a seeking flag, allows us to skip frames we
 
11539
          get while we're waiting for a seek to happen. Implement a better pause
 
11540
          algorithm, the previous one was flawed and dead-locked once in a while.
 
11541
        * pipeline.cpp, pipeline.h: Media: Add a callback to async seek. ASFDemuxer:
 
11542
          Create one frame reader for each stream.
 
11543
 
 
11544
2008-01-27  Jeffrey Stedfast  <fejj@novell.com>
 
11545
 
 
11546
        * media.cpp (MediaElement::UpdateProgress): Check (pos +
 
11547
        buffering_size) > size, not < size. Duh.
 
11548
 
 
11549
        * pipeline.cpp: IMediaDemuxer ctors now take an IMediaSource
 
11550
        argument to use in place of media->GetSource().
 
11551
        (Media::Open): Don't set this->source unless we successfully open
 
11552
        the source.
 
11553
 
 
11554
2008-01-26  Jeffrey Stedfast  <fejj@novell.com>
 
11555
 
 
11556
        * media.cpp (MediaElement::TryOpen): In the DownloadComplete case,
 
11557
        set the state to Buffering so that calling Play() will actually
 
11558
        start playing the media (if the file was local, then we'll be in
 
11559
        the Opening state which means that calling Play() will only note
 
11560
        that a Play action was requested, but won't actually play the
 
11561
        media).
 
11562
        (MediaElement::SetState): Don't check for downloaded_file == NULL,
 
11563
        it might fail in the above case.
 
11564
 
 
11565
2008-01-26  Jackson Harper  <jackson@ximian.com>
 
11566
 
 
11567
        * xaml.cpp: Set the encoding when we are reading files also.
 
11568
 
 
11569
2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
 
11570
 
 
11571
        * pipeline.cpp (WaitForPosition): Only update wait_pos if it is
 
11572
        greater than the current wait_pos.
 
11573
 
 
11574
        * media.cpp (UpdateProgress): Use the buffering_start position
 
11575
        rather than the current write position to calculate buffer_size.
 
11576
 
 
11577
2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
 
11578
 
 
11579
        * media.cpp (TryOpen): When download is complete and we
 
11580
        successfully open the media, don't set the state to Paused - this
 
11581
        breaks Halo3 if the video is cached.
 
11582
 
 
11583
        * media.cpp|h: Consolidated all of the bool state variables into a
 
11584
        single bitfield.
 
11585
 
 
11586
2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11587
 
 
11588
        * pipeline.h, pipeline.cpp: ProgressiveSource: Make the position we're
 
11589
          waiting for publicly available.
 
11590
        * media.cpp: UpdateProgress: use the position the file is waiting for to
 
11591
          calculate the buffer size (if it would exceed the default buffer size).
 
11592
 
 
11593
2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11594
 
 
11595
        * media.h: Add some descriptive comments.
 
11596
 
 
11597
2008-01-25  Sebastien Pouliot  <sebastien@ximian.com>
 
11598
 
 
11599
        * shape.cpp: Merge UIElement::InsideClip inside Shape::InsideObject
 
11600
        instead of calling it since it can reduce some heavy cairo calls 
 
11601
        (cairo_in_*), if there's a clip, otherwise it won't affect 
 
11602
        performance.
 
11603
 
 
11604
2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11605
 
 
11606
        * media.cpp: Initialize play_pending, and when buffering is
 
11607
          finished, only play if autoplay or play_pending is true.
 
11608
 
 
11609
2008-01-25  Jeffrey Stedfast  <fejj@novell.com>
 
11610
 
 
11611
        * mplayer.cpp: Get rid of some unused variables and cleaned up
 
11612
        some code.
 
11613
 
 
11614
2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11615
 
 
11616
        * pipeline.cpp, media.cpp: More printfs removed.
 
11617
 
 
11618
2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11619
 
 
11620
        * src.mdp: Updated.
 
11621
 
 
11622
        * pipeline-ffmpeg.cpp: Commented out printf.
 
11623
 
 
11624
        * pipeline.h, pipeline.cpp: Removed some dead code. Made all
 
11625
        interfaces inherit from IMediaObject, and put the media field
 
11626
        there. Commented out printfs.
 
11627
 
 
11628
        * mplayer.h, mplayer.cpp: Unified Mute and UnMute into SetMuted to
 
11629
        simplify code a bit. Encapsulated target_pts handling into
 
11630
        separate methods.
 
11631
 
 
11632
        * media.h, media.cpp: Create one and only one MediaPlayer for the
 
11633
        life-time of the MediaElement. If not AutoPlay is set, then pause
 
11634
        instead of play.
 
11635
 
 
11636
2008-01-25  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11637
 
 
11638
        * pipeline.cpp, pipeline.h: Media: Don't create the worker thread upon first
 
11639
          usage, but on construction, and finish it upon destruction. Fixes race
 
11640
          between creating and destructing the thread.
 
11641
 
 
11642
2008-01-24  Chris Toshok  <toshok@ximian.com>
 
11643
 
 
11644
        * stylus.cpp (Stroke::HitTestEndcapSegment): implement.
 
11645
        (calc_perpendicular_intersection_points): new method.
 
11646
        (Stroke::HitTestSegmentSegment): use
 
11647
        calc_perpendicular_intersection_points to give us the end points
 
11648
        of the outer line segments, and use those for hit testing.
 
11649
 
 
11650
2008-01-24  Jeffrey Stedfast  <fejj@novell.com>
 
11651
 
 
11652
        * media.cpp (UpdateProgress): When switching to Buffering mode,
 
11653
        save the position where we're currently at in the file so that we
 
11654
        can use that as a reference point when calculating progress. Also,
 
11655
        pause the MPlayer so that audio won't continue to play while we're
 
11656
        waiting for buffering to complete. Fixes bug #356051.
 
11657
 
 
11658
2008-01-24  Sebastien Pouliot  <sebastien@ximian.com>
 
11659
 
 
11660
        * shape.cpp: Avoid calls to cairo_in_[stroke|fill] if no stroke 
 
11661
        (or fill) are present for the shape.
 
11662
 
 
11663
2008-01-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11664
 
 
11665
        * pipeline.cpp, pipeline.h: Create a more general worker thread,
 
11666
        and use unions to save some space in WorkItem. In the ASFDemuxer,
 
11667
        when seeking, we need to seek to the audio stream, since that's
 
11668
        what we're using to sync against (if we have audio).
 
11669
          
 
11670
        * list.cpp, list.h: Added List::InsertBefore.
 
11671
 
 
11672
2008-01-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11673
 
 
11674
        * media.cpp: MediaElement::SetSource: only trigger the download
 
11675
        after we've attached to the CompletedEvent.
 
11676
 
 
11677
2008-01-23  Chris Toshok  <toshok@ximian.com>
 
11678
 
 
11679
        * runtime.cpp (Surface::HandleMouseEvent): don't crash when we
 
11680
        re-enter HandleMouseEvent, which can happen when that stupid JS
 
11681
        timeout dialog pops up.
 
11682
 
 
11683
2008-01-23  Chris Toshok  <toshok@ximian.com>
 
11684
 
 
11685
        * runtime.cpp (Surface::SetMouseCapture): this fails not only if
 
11686
        there's an existing capture, but also if there's a pending
 
11687
        capture (so if both a parent and child capture on the same event,
 
11688
        the child gets it.)  Fixes dragging things around in ink journal.
 
11689
 
 
11690
2008-01-23  Chris Toshok  <toshok@ximian.com>
 
11691
 
 
11692
        * stylus.cpp, stylus.h: initial hit testing stuff.  right now the
 
11693
        only tests that are implemented are endcap (ellipse) vs. point,
 
11694
        and segment vs. segment (although this one isn't the full test, as
 
11695
        we're using the stroke line, as opposed to the exterior lines
 
11696
        created by the ellipse pen tracing that line).
 
11697
 
 
11698
        * rect.h: add PointInside (Point p).
 
11699
        
 
11700
2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
 
11701
 
 
11702
        * pipeline-ffmpeg.cpp: Don't #include "asf/asf-ffmpeg.h" anymore,
 
11703
        it's no longer part of the build.
 
11704
 
 
11705
2008-01-23  Sebastien Pouliot  <sebastien@ximian.com>
 
11706
 
 
11707
        * shape.cpp|h: Add support for different PenLineCap on Line (part 
 
11708
        of #345888). Fix Polyline when a single segment is used (removed 
 
11709
        TODO). Avoid extra work when a start/end PenLineCap is Flat (default)
 
11710
 
 
11711
2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
 
11712
 
 
11713
        * media.cpp (SetSource): Initialize the ProgressiveSource.
 
11714
 
 
11715
        * pipeline.cpp (ProgressiveSource::Seek): Simplified by calling
 
11716
        parent class's implementation.
 
11717
 
 
11718
2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
 
11719
 
 
11720
        * pipeline.cpp|h: ProgressiveSource now inherits from FileSource.
 
11721
 
 
11722
2008-01-23  Jeffrey Stedfast  <fejj@novell.com>
 
11723
 
 
11724
        * pipeline.cpp (FileSource::Read): Optimized a bit more for cases
 
11725
        where the caller is trying to read a block larger than our
 
11726
        internal buffer.
 
11727
        (FileSource::Seek): Fixed 'n' to be an int64_t rather than a
 
11728
        uint64_t (which is needed in the case of seeking backwards).
 
11729
 
 
11730
2008-01-22  Larry Ewing  <lewing@novell.com>
 
11731
 
 
11732
        * shape.cpp, shape.h: Move the stretch logic out of geometry.cpp
 
11733
        and into Path.cpp as a transform not by modifying the data.
 
11734
 
 
11735
        * geometry.cpp, geometry.h: remove stretch logic.
 
11736
 
 
11737
2008-01-22  Jeffrey Stedfast  <fejj@novell.com>
 
11738
 
 
11739
        * pipeline.cpp (FileSource::Seek): Also optimize seeking backwards
 
11740
        if within our pre-buffered bounds.
 
11741
        (ProgressiveSource::Write): When restoring position state, use the
 
11742
        proper offset (e.g. the offset of the end of our pre-buffered
 
11743
        block).
 
11744
 
 
11745
2008-01-22  Chris Toshok  <toshok@ximian.com>
 
11746
 
 
11747
        * collection.cpp (UIElementZIndexComparer): the magnitude of the
 
11748
        return value doesn't matter, only the sign.
 
11749
 
 
11750
2008-01-22  Chris Toshok  <toshok@ximian.com>
 
11751
 
 
11752
        * media.cpp (Image::InsideObject): if we have no surface (the
 
11753
        image hasn't been loaded), we aren't HitTestVisible.
 
11754
 
 
11755
        * media.h (class Image): add InsideObject override.
 
11756
 
 
11757
2008-01-22  Chris Toshok  <toshok@ximian.com>
 
11758
 
 
11759
        * panel.cpp (Panel::OnCollectionChanged): remove the fix for
 
11760
        #353954 as its redundant after the previous commit.
 
11761
 
 
11762
2008-01-22  Chris Toshok  <toshok@ximian.com>
 
11763
 
 
11764
        * garray-ext.cpp (bsearch): fix this so the g_array_insert_sorted
 
11765
        function works.
 
11766
 
 
11767
2008-01-22  Jeffrey Stedfast  <fejj@novell.com>
 
11768
 
 
11769
        * media.cpp (TryOpen): Don't leak Media objects. Also make sure to
 
11770
        call Initialize() on the file source.
 
11771
 
 
11772
        * pipeline.cpp (IMediaSource): Read() now returns the number of
 
11773
        bytes read rather than true/false and does nto guarantee that all
 
11774
        of the data was read. Added a ReadAll() method which does what the
 
11775
        old Read() method did.
 
11776
        (FileSource): Rewritten to do our own buffering which allows for
 
11777
        nice optimizations for Peek() and Seek().
 
11778
        (ProgressiveSource): Also rewritten.
 
11779
 
 
11780
        * asf/asf.cpp: Updated to use IMediaSource::ReadAll()
 
11781
 
 
11782
        * asf/asf-guids.h: Moved all of the guids into asf-guids.cpp and
 
11783
        just made them extern in the ehader, this way we don't duplicate
 
11784
        those values in each source file that includes this header.
 
11785
 
 
11786
2008-01-22  Sebastien Pouliot  <sebastien@ximian.com>
 
11787
 
 
11788
        * shape.cpp|h: First part of DoDraw refactoring. Pass all 
 
11789
        regression tests from harness (moon versus moon) but it's possible
 
11790
        that some degenerated cases (without test cases) regress.
 
11791
 
 
11792
2008-01-22  Larry Ewing  <lewing@novell.com>
 
11793
 
 
11794
        * clock.cpp: initalize the smoothing to max framerate, the first
 
11795
        frame is quite likely the slowest frame we'll ever draw.  Bump
 
11796
        error delta back up to 1/50th.
 
11797
 
 
11798
2008-01-22  Chris Toshok  <toshok@ximian.com>
 
11799
 
 
11800
        * media.cpp (MediaElement::Render): a little cairo cleanup, and
 
11801
        remove the USE_OPT_REGION_CLIP block.
 
11802
 
 
11803
2008-01-22  Andrew Jorgensen  <ajorgensen@novell.com>
 
11804
 
 
11805
        * pipeline.cpp: include unistd.h, fixes a build error introduced in
 
11806
        r93311 when building without-ffmpeg
 
11807
 
 
11808
2008-01-22  Larry Ewing  <lewing@novell.com>
 
11809
 
 
11810
        * clock.cpp: reduce delta to 1/100 of a second and fix a bug in
 
11811
        previous commit.
 
11812
 
 
11813
2008-01-22  Larry Ewing  <lewing@novell.com>
 
11814
 
 
11815
        * clock.cpp: Tweak clock timing and smoothing.  Increase timer
 
11816
        priority so that ticks get deliver when we want them this doesn't
 
11817
        change the smoothing calculation but it can raise the actual fps
 
11818
        by assuring all our clocks are delivered.  Change smoothing alpha
 
11819
        from 0.3 to 0.03 to improve noise immunity.  Don't reset the timer
 
11820
        unless our new calculated timeout differs from our old by at least
 
11821
        1/50 of a second.  Resetting the clock on every tick had the
 
11822
        effect adding the drawing time to the tick time for every tick
 
11823
        since the timeout starts over at zero.
 
11824
 
 
11825
2008-01-21  Jeffrey Stedfast  <fejj@novell.com>
 
11826
 
 
11827
        * pipeline.cpp (Mp3FrameReader::ReadFrame): If the bitrate was
 
11828
        unspecified, encode the bitrate back into the header so that if we
 
11829
        are using the NullMp3Decoder, it will know how to handle
 
11830
        it. Probably also needed for any actual Mp3 decoders as well since
 
11831
        it won't reliably be able to keep track of variable-bitrate
 
11832
        streams otherwise since it wouldn't know if/when we seek.
 
11833
        (NullMp3Decoder::DecodeFrame): Implemented.
 
11834
 
 
11835
2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11836
 
 
11837
        * pipeline.cpp: Remove printf.
 
11838
 
 
11839
2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11840
 
 
11841
        * src.mdp: Remove mplayer2.cpp from here too.
 
11842
 
 
11843
2008-01-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11844
 
 
11845
        * mplayer.cpp, mplayer2.cpp, Makefile.am: Deleted mplayer.cpp and moved
 
11846
          mplayer2.cpp to mplayer.cpp.
 
11847
 
 
11848
2008-01-21  Jeffrey Stedfast  <fejj@novell.com>
 
11849
 
 
11850
        * downloader.cpp (ll_downloader_get_response_file): Fixed to use
 
11851
        mkstemp() rather than tmpnam_r() and also simplified.
 
11852
 
 
11853
        * pipeline.cpp: Fixed various things about the progressive stream.
 
11854
 
 
11855
2008-01-19  Jeffrey Stedfast  <fejj@novell.com>
 
11856
 
 
11857
        * mplayer2.cpp (audio_play): Get rid of the 'play' argument. Also
 
11858
        don't memmove() data unless we don't have enough to play a single
 
11859
        frame. Instead, what we'll do is keep progressing audio->outbuf as
 
11860
        we play it.
 
11861
 
 
11862
2008-01-19  Chris Toshok  <toshok@ximian.com>
 
11863
 
 
11864
        * uielement.cpp (UIElement::OnPropertyChanged): remove the
 
11865
        handling of TriggersProperty and ResourcesProperty's closure.
 
11866
 
 
11867
        * trigger.cpp, trigger.h: remove EventTrigger's OnPropertyChanged
 
11868
        method.
 
11869
 
 
11870
        * transform.cpp (TransformGroup::OnPropertyChanged): remove
 
11871
        handling of ChildrenProperty's closure.
 
11872
 
 
11873
        * text.cpp, text.h: remove Run::OnPropertyChanged, and also remove
 
11874
        the handling of Inlines->closure from TextBlock.
 
11875
 
 
11876
        * stylus.cpp, stylus.h: remove a couple of OnPropertyChanged
 
11877
        methods (InkPresenter and Stroke).
 
11878
 
 
11879
        * panel.cpp (Panel::OnPropertyChanged): remove handling of the
 
11880
        ChildProperty's closure here.
 
11881
 
 
11882
        * media.cpp, media.h: remove the unnecessary
 
11883
        MediaBase::OnPropertyChanged.
 
11884
 
 
11885
        * geometry.cpp, geometry.h: remove a few OnPropertyChanged
 
11886
        methods (GeometryGroup, PathGeometry, and PathSegment.)
 
11887
 
 
11888
        * clock.cpp, clock.h: remove TimelineGroup::OnPropertyChanged.
 
11889
 
 
11890
        * brush.cpp, brush.h: remove the unnecessary
 
11891
        Brush::OnPropertyChanged and GradientBrush::OnPropertyChanged.
 
11892
 
 
11893
        * animation.cpp, animation.h: remove all the
 
11894
        *AnimationUsingKeyFrames::OnPropertyChanged methods, since all
 
11895
        they did was deal with collection closures.
 
11896
 
 
11897
        * dependencyobject.cpp (DependencyObject::SetValue): factor out
 
11898
        the "collection->closure" setting code from all the
 
11899
        OnPropertyChanged methods sprinkled around and put it here.  Also,
 
11900
        set collection->closure to NULL on the old value (something the
 
11901
        old code didn't do).
 
11902
 
 
11903
2008-01-19  Chris Toshok  <toshok@ximian.com>
 
11904
 
 
11905
        * animation.cpp: the remaining macros (SET_NULLABLE_FUNC and
 
11906
        NULLABLE_{PRIM_}GETSET_IMPL) are moved here, right before their
 
11907
        use.
 
11908
 
 
11909
        * animation.h: clean this file up by removing all those disgusting
 
11910
        macros.  for the DECL macros, just expand them here, as having the
 
11911
        methods listed in the class declaration is a good thing.
 
11912
 
 
11913
        * collection.cpp (collection_new): remove the switch statement
 
11914
        from here and use Type::CreateInstance instead.  this largely
 
11915
        removes the need to be including extra headers (like animation.h).
 
11916
 
 
11917
2008-01-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11918
 
 
11919
        * media.cpp, mplayer.cpp, mplayer2.cpp, Makefile.am, pipeline.h: Remove all
 
11920
          MOON_MEDIA ifdefs and completely disable the old mplayer.cpp
 
11921
        * src.mdp: Updated.
 
11922
 
 
11923
2008-01-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
11924
 
 
11925
        * media.h, media.cpp: MediaElement: make this a state machine to follow the
 
11926
          behaviour specified in MSDN. Implement buffering of media files.
 
11927
          MediaSource (and derived): take a IMediaSource instead of a filename.
 
11928
        * mplayer.h, mplayer2.cpp: Make Open take a Media instead of a filename.
 
11929
          Remove all MOON_MEDIA ifdefs, too many changes to support both versions
 
11930
          now. Make seeking async.
 
11931
        * pipeline.cpp, pipeline.h: Changed the FrameReaderLoop into a more general
 
11932
          worker thread, seeking can now be done there too. Implement
 
11933
          ProgressiveSource.
 
11934
        * playlist.cpp: Change IsPlaylistFile to peek the file instead of checking
 
11935
          the file extension. MediaSource (and derived): take a IMediaSource
 
11936
          instead of a filename.
 
11937
        * playlist.h: MediaSource (and derived): take a IMediaSource instead of a
 
11938
          filename.
 
11939
 
 
11940
2008-01-18  Larry Ewing  <lewing@novell.com>
 
11941
 
 
11942
        * uielement.cpp: compute total_opacity for invalidation logic but
 
11943
        use local_opacity for drawing.  This fixes monotones grid.xaml and
 
11944
        some hit test regressions.
 
11945
 
 
11946
2008-01-18  Jackson Harper  <jackson@ximian.com>
 
11947
 
 
11948
        * xaml.cpp: KeyFrameCollections can be specified in the xaml if
 
11949
        they are in a property element.
 
11950
        - When searching for collections, use is subclass instead of
 
11951
        making them be the same type, so derivied collections can be used.
 
11952
        
 
11953
2008-01-17  Chris Toshok  <toshok@ximian.com>
 
11954
 
 
11955
        * pipeline.h (class IMediaDemuxer): initializer streams and
 
11956
        stream_count so we don't crash on ltbennett.com.
 
11957
 
 
11958
2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
 
11959
 
 
11960
        * pipeline.cpp (Mp3FrameReader::ReadFrame): If we fail to read an
 
11961
        MPEG header, set MediaFrame->event to EOF. Same if we can't read
 
11962
        the frame data.
 
11963
        (Media::GetNextFrame): Don't try to decode the frame if it is an
 
11964
        event.
 
11965
        (ASFDemuxer::ReadFrame): If we reach EOF, set MediaFrame->event to
 
11966
        EOF.
 
11967
 
 
11968
        * mplayer2.cpp (media_player_callback): pts is allowed to be 0.
 
11969
        (AdvanceFrame): Handle EOF frame events.
 
11970
        (audio_loop): Handle EOF frame events.
 
11971
 
 
11972
2008-01-17  Chris Toshok  <toshok@ximian.com>
 
11973
 
 
11974
        * stylus.cpp (InkPresenter::OnCollectionChanged): we need to
 
11975
        invalidate the old bounds of the stroke for ItemRemoved as well as
 
11976
        ItemChanged.
 
11977
 
 
11978
2008-01-17  Chris Toshok  <toshok@ximian.com>
 
11979
 
 
11980
        * rect.h (Rect::Transform): new method, allows for transforming a
 
11981
        rectangle by a cairo_matrix_t, used with transforming the stroke
 
11982
        bounds back to screen space using the InkPresenter's
 
11983
        absolute_xform.
 
11984
 
 
11985
        * stylus.cpp, stylus.h: deal with collection changed notifications
 
11986
        on Stroke::StylusPointsProperty and on
 
11987
        InkPresenter::StrokesProperty, and correctly invalidate a stroke's
 
11988
        bounds.  The bounds of a stroke needs to be looked at - right now
 
11989
        it's in the coordinate space of the InkPresenter, and so it needs
 
11990
        to be transformed back to screen space before invalidating.  Need
 
11991
        to check if MS uses screen space for a stroke's bounds (seems
 
11992
        likely they do, but this was easier to code.)
 
11993
 
 
11994
2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
 
11995
 
 
11996
        * mplayer2.cpp: Updated for MediaFrame changes.
 
11997
 
 
11998
        * pipeline-ffmpeg.cc: Updated for MediaFrame changes.
 
11999
 
 
12000
        * pipeline.cpp: Instead of having a compressed_data and
 
12001
        uncompressed_data field, simply have a 'buffer' field that gets
 
12002
        reused by both the demuxer and the decoder. The decoder will set
 
12003
        the buffer to the compressed data and the decoder will, once
 
12004
        finished decoding, free the buffer and then update it to point to
 
12005
        the decoded data. This reduces memory overhead.
 
12006
 
 
12007
2008-01-17  Chris Toshok  <toshok@ximian.com>
 
12008
 
 
12009
        * uielement.cpp (UIElement::InsideClip): use
 
12010
        uielement_transform_point instead of duplicating it.
 
12011
 
 
12012
        * shape.cpp (Shape::InsideObject): use uielement_transform_point
 
12013
        instead of duplicating it.
 
12014
 
 
12015
        * text.cpp (TextBlock::InsideObject): use
 
12016
        uielement_transform_point instead of duplicating it.
 
12017
 
 
12018
2008-01-17  Larry Ewing  <lewing@novell.com>
 
12019
        
 
12020
        * shape.cpp (Rectangle::BuildPath): fix the origin calculation for
 
12021
        unstroked rectangles (see test-rectangle-aliasing.xaml).  Suggest
 
12022
        more rectangle testing after this.
 
12023
 
 
12024
2008-01-17  Jackson Harper  <jackson@ximian.com>
 
12025
 
 
12026
        * xaml.cpp: After setting a property stop walking up the element
 
12027
        tree.
 
12028
 
 
12029
2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12030
 
 
12031
        * pipeline-ffmpeg.cpp: Comment out a couple of confusing printfs.
 
12032
 
 
12033
2008-01-17  Jeffrey Stedfast  <fejj@novell.com>
 
12034
 
 
12035
        * mplayer2.cpp (audio_decode): Removed as it is no longer really
 
12036
        needed.
 
12037
        (audio_loop): We can't assume that an entire decoded audio packet
 
12038
        will fit into the audio output buffer in a single shot, break it
 
12039
        up if needed.
 
12040
 
 
12041
2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12042
 
 
12043
        * mplayer2.cpp: Max out video frame rate at 60fps.
 
12044
 
 
12045
2008-01-17  Fernando Herrera  <fherrera@novell.com>
 
12046
 
 
12047
        * panel.cpp: Reorder based on ZIndex when a new item is added.
 
12048
        Fixes bug #353954
 
12049
 
 
12050
2008-01-17  Larry Ewing  <lewing@novell.com>
 
12051
 
 
12052
        * runtime.cpp (Surface::InitializeDrawingArea): disable extended
 
12053
        input devices until the remaining issues can be resolved.
 
12054
 
 
12055
2008-01-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12056
 
 
12057
        * mplayer2.cpp, pipeline-ffmpeg.cpp: Plug a leak.
 
12058
 
 
12059
2008-01-16  Larry Ewing  <lewing@novell.com>
 
12060
 
 
12061
        * uielement.cpp, uielement.h: 
 
12062
        * panel.cpp, panel.h: 
 
12063
        * collection.cpp, control.cpp: remove Compute/UpdateTotalOpacity.
 
12064
        Combine the opacity visibility check into the total render
 
12065
        visibility.  Make sure we compute/invalidate in all the same
 
12066
        places.
 
12067
 
 
12068
        * dirty.cpp, dirty.h: remove all references to DirtyOpacity.
 
12069
 
 
12070
        * uielement.cpp (UIElement::DoRender): make sure we don't reset
 
12071
        the coordinate system when setting up the clip calls in the
 
12072
        opacity and opacity mask cases.  Go back to using the brush
 
12073
        directly when rendering masks.  Should speed things up a little
 
12074
        and fixes http://mycomix.wintellect.com/Spotlight.aspx?Item=1041
 
12075
 
 
12076
2008-01-16  Chris Toshok  <toshok@ximian.com>
 
12077
 
 
12078
        * stylus.h, stylus.cpp: a few changes.  Move the
 
12079
        StylusPointCollection and StrokeCollection classes here from
 
12080
        collection.h/collection.cpp.  I didn't like the addition of
 
12081
        stylus.cpp logic in two places.  Convert Stroke::GetBounds use use
 
12082
        the new DrawingAttributes::ComputeBounds{WithoutDrawingAttributes}
 
12083
        methods, and build up the bounds for the StrokeCollection by
 
12084
        unioning all the Stroke bounds (these should be cached, but aren't
 
12085
        yet.)  StrokeCollection::HitTest has been implemented, just
 
12086
        looping over the strokes.  Stroke::HitTest is missing its guts at
 
12087
        the moment, since hit testing is going to be a little bit of a
 
12088
        pain for it.
 
12089
 
 
12090
        * collection.h, collection.cpp: remove StylusPointCollection and
 
12091
        StrokeCollection.
 
12092
 
 
12093
2008-01-16  Larry Ewing  <lewing@novell.com>
 
12094
 
 
12095
        * uielement.cpp, uielement.h: Rework the way we handle opacity to
 
12096
        operate like the reference platform by removing the concept of
 
12097
        TotalOpacity and instead using push/pop group and paint_with
 
12098
        alpha.  See test-sibling-opacity.xaml for an example.  Handle
 
12099
        clipping in DoRender rather than in every subclass because we want
 
12100
        the clip path active before calling push/pop so that the temporary
 
12101
        surface is bounded.
 
12102
        * brush.cpp, panel.cpp: remove GetTotalOpacity references.
 
12103
        * media.cpp, media.h: cleanup the complicated render logic now
 
12104
        that things are handled in uielement.
 
12105
        * shape.cpp, text.cpp: remove RenderClipPath calls.
 
12106
 
 
12107
        * rect.cpp, rect.h: add draw methods.
 
12108
 
 
12109
2008-01-16  Jeffrey Stedfast  <fejj@novell.com>
 
12110
 
 
12111
        * pipeline.cpp: Implemented mpeg seeking support for
 
12112
        Mp3FrameReader and, thusly, Mp3Demuxer.
 
12113
        (Mp3Demuxer::ReadHeader): Calculate the duration of the stream.
 
12114
 
 
12115
2008-01-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12116
 
 
12117
        * mplayer2.cpp: Remove a superfluous variable from Audio.
 
12118
 
 
12119
2008-01-16  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12120
 
 
12121
        * mplayer2.cpp: Remove superfluous variables from Video.
 
12122
 
 
12123
2008-01-16  Sebastien Pouliot  <sebastien@ximian.com>
 
12124
 
 
12125
        * moon-path.c: Fix typo (but was same value).
 
12126
 
 
12127
2008-01-15  Jeffrey Stedfast  <fejj@novell.com>
 
12128
 
 
12129
        * pipeline.cpp: Implemented mp3 demuxer.
 
12130
 
 
12131
2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12132
 
 
12133
        * mplayer2.cpp: Don't crash if Seek is called before Open.
 
12134
 
 
12135
2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12136
 
 
12137
        * mplayer2.cpp: Remove dead code and variables, and only request
 
12138
        audio/video frames if we have audio/video.
 
12139
 
 
12140
2008-01-15  Jeffrey Stedfast  <fejj@novell.com>
 
12141
 
 
12142
        * mplayer2.cpp: Get rid of extra member variables in Packet.
 
12143
 
 
12144
2008-01-15  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12145
 
 
12146
        * mplayer2.cpp: Implement audio decoding on the main thread as well.
 
12147
 
 
12148
2008-01-14  Jeffrey Stedfast  <fejj@novell.com>
 
12149
 
 
12150
        * pipeline.cpp: Partially implemented an mp3 demuxer.
 
12151
 
 
12152
2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12153
 
 
12154
        * media.cpp, media.h, mplayer2.cpp, pipeline.cpp, pipeline.h: Make markers
 
12155
          work again with the new pipeline.
 
12156
 
 
12157
2008-01-14  Sebastien Pouliot  <sebastien@ximian.com>
 
12158
 
 
12159
        * shape.cpp|h: It looks like we stopped needing consider_fill a 
 
12160
        while ago.
 
12161
 
 
12162
2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12163
 
 
12164
        * mplayer.h: We don't need io_tread anymore, so remove it.
 
12165
        * mplayer2.cpp: We don't need io_tread anymore, so remove it. Add support
 
12166
          for doing the decoding on the main thread with easy (in-code) switch.
 
12167
          Comment out printfs, and remove dead/old/commented-out code.
 
12168
        * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp: Add support for doing the
 
12169
          decoding on the main thread with easy (in-code) switch.
 
12170
        * runtime.cpp: Don't print entire object tracking output if nothing leaked.
 
12171
 
 
12172
2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12173
 
 
12174
        * xaml.cpp: Unref a matrix object when we are done with it.
 
12175
        * mplayer2.cpp: Remove printf.
 
12176
 
 
12177
2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12178
 
 
12179
        * mplayer2.cpp: Remove printfs.
 
12180
        * pipeline.cpp, pipeline.h: Remove printfs and only print messages if they
 
12181
          are errors.
 
12182
        * pipeline-ffmpeg.cpp: Free context->extradata upon destruction.
 
12183
 
 
12184
2008-01-14  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12185
 
 
12186
        * pipeline.cpp: Fix crash with several web-sites (when seeking before
 
12187
          reading anything).
 
12188
 
 
12189
2008-01-11  Chris Toshok  <toshok@ximian.com>
 
12190
 
 
12191
        * clock.h (class Clock): add an instance
 
12192
        field (calculated_natural_duration).
 
12193
 
 
12194
        * clock.cpp (Clock::ComputeBeginTime): don't include the parent's
 
12195
        current time here.  this was inflating animation begin time's in
 
12196
        some cases to be either very close to the parent's calculated
 
12197
        duration (or even after it).
 
12198
        (ClockGroup::ComputeBeginTime): don't chain up to
 
12199
        Clock::ComputeBeginTime.  clock groups in our system need to
 
12200
        include their parent time in their begin time.  There are only two
 
12201
        levels of clockgroups - storyboards, and the clockgroup we have
 
12202
        associated with a given surface (Which will be the parent of all
 
12203
        the storyboards running on that surface.)
 
12204
        (output_clock): print out the BeginTime of the clock.
 
12205
        (TimeManager::AddChild): I don't really like this, but we need to
 
12206
        force the calculation of the natural duration of the clock when
 
12207
        it's added to the hierarchy.
 
12208
        (ClockGroup::AddChild): same here.
 
12209
        (Clock::Clock): don't calculate the natural duration of the clock
 
12210
        here - when we instantiated a ClockGroup it was calculating the
 
12211
        duration before the child clocks were added.
 
12212
 
 
12213
2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12214
 
 
12215
        * pipeline.cpp: Seek on the frame reader, not on the source.
 
12216
        * mplayer2.cpp, mplayer.h: Change all use of audio/video->stream != NULL to
 
12217
          HasAudio/Video (). Fix seeking to actually work.
 
12218
 
 
12219
2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12220
 
 
12221
        * mplayer2.cpp, mplayer.h: Move the media variable from audio/video into
 
12222
          mplayer.h where it belongs.
 
12223
        * pipeline.cpp, pipeline.h: Implement seeking.
 
12224
        * pipeline-ffmpeg.cpp: Copy decompressed data instead of using ffmpeg's data
 
12225
          directly, since ffmpeg uses one single memory location for all decoded
 
12226
          frames, causing us to always show the last decoded frame.
 
12227
 
 
12228
2008-01-11  Sebastien Pouliot  <sebastien@ximian.com>
 
12229
 
 
12230
        * shape.cpp: Add support for PenLineCapTriangle with a patched cairo.
 
12231
        See bug #345892 for the required cairo patch.
 
12232
 
 
12233
2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12234
 
 
12235
        * media.cpp: Initialize Media too upon initialization.
 
12236
        * pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp, pipeline-ffmpeg.h,
 
12237
          mplayer2.cpp, mplayer.cpp: Implement registration of components, making
 
12238
          it possible to completely remove ffmpeg.
 
12239
 
 
12240
2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12241
 
 
12242
        * pipeline.cpp: Remove stray character.
 
12243
 
 
12244
2008-01-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12245
 
 
12246
        * mplayer2.cpp, pipeline.cpp, pipeline.h, pipeline-ffmpeg.cpp,
 
12247
          pipeline-ffmpeg.h: Code-cleanup.
 
12248
 
 
12249
2008-01-10  Larry Ewing  <lewing@novell.com>
 
12250
 
 
12251
        * runtime.cpp (Surface::InitializeDrawingArea): realize the widget
 
12252
        before setting the extension events (lame api) and disable the
 
12253
        cursor test.
 
12254
 
 
12255
2008-01-10  Chris Toshok  <toshok@ximian.com>
 
12256
 
 
12257
        * runtime.cpp (Surface::InitializeDrawingArea): activate all
 
12258
        devices that have a cursor associated with them.
 
12259
 
 
12260
2008-10-10  Andrew Jorgensen  <ajorgensen@novell.com>
 
12261
 
 
12262
        * pipeline.cpp: include config.h (fixes an ffmpeg-related build error)
 
12263
 
 
12264
2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12265
 
 
12266
        * mplayer.cpp: Surround with ifdef to conditionally include the new
 
12267
          MediaPlayer or not.
 
12268
        * Makefile.am: Added pipeline* and mplayer2.cpp.
 
12269
        * pipeline-ffmpeg.h, pipeline-ffmpeg.cpp: Added, support for using ffmpeg in
 
12270
          the pipeline.
 
12271
        * pipeline.cpp, pipeline.h: Added.
 
12272
        * mplayer2.cpp: Added, a MediaPlayer that uses the new pipeline.
 
12273
 
 
12274
2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12275
 
 
12276
        * panel.cpp: Delete leaked region.
 
12277
 
 
12278
2008-01-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12279
 
 
12280
        * src.mdp: Added.
 
12281
 
 
12282
2008-01-09  Chris Toshok  <toshok@ximian.com>
 
12283
 
 
12284
        * stylus.h, stylus.cpp, collection.h, collection.cpp: fix
 
12285
        _get_bounds.
 
12286
 
 
12287
2008-01-09  Chris Toshok  <toshok@ximian.com>
 
12288
 
 
12289
        * collection.h, collection.cpp: add C wrappers for
 
12290
        StrokeCollection::GetBounds and ::HitTest.
 
12291
 
 
12292
        * stylus.h, stylus.cpp: same deal for Stroke::
 
12293
        
 
12294
2008-01-09  Chris Toshok  <toshok@ximian.com>
 
12295
 
 
12296
        * collection.h, collection.cpp: add empty implementations of
 
12297
        StrokeCollection::GetBounds and StrokeCollection::HitTest.
 
12298
 
 
12299
        * stylus.h, stylus.cpp: add empty implementations of
 
12300
        Stroke::GetBounds and Stroke::HitTest.
 
12301
 
 
12302
2008-01-09  Chris Toshok  <toshok@ximian.com>
 
12303
 
 
12304
        * uielement.h, uielement.cpp: change all the Emit* methods that
 
12305
        deal with mouse events to take a GdkEvent instead of state/x/y,
 
12306
        and also change their calldata to a heap allocated MouseEventArgs,
 
12307
        which we unref after the emit.  This is because the pointer itself
 
12308
        is wrapped by the managed MouseEventArgs, and will be unref'ed in
 
12309
        ~MouseEventArgs at some later time.
 
12310
 
 
12311
        * runtime.h, runtime.cpp: change all the mouse events to pass
 
12312
        around the actual GdkEvent instead of the state/x/y.  This is due
 
12313
        to the fact that our MouseEventArgs class now wraps the GdkEvent,
 
12314
        so we can get at all the stylus/extension event stuff.
 
12315
 
 
12316
        * stylus.h, stylus.cpp: remove stylus_get_current, as it's no
 
12317
        longer required.  We correctly create a StylusInfo instance from
 
12318
        the MouseEventArgs.
 
12319
 
 
12320
        * Makefile.am (libmoon_la_SOURCES): add eventargs.cpp
 
12321
        (libmooninclude_headers): add eventargs.h
 
12322
 
 
12323
        * libmoon.h: add eventargs.h.
 
12324
 
 
12325
        * eventargs.h, eventargs.cpp: new files, splitting out the
 
12326
        KeyboardEventArgs and MouseEventArgs from uielement.h, and flesh
 
12327
        out MouseEventArgs, making it a refcounted object with enough
 
12328
        smarts to handle both the managed case and plugin case.  Include
 
12329
        all the stylus related code as well, so this *should* make all the
 
12330
        stylus requiring demos work.
 
12331
 
 
12332
2008-01-09  Jeffrey Stedfast  <fejj@novell.com>
 
12333
 
 
12334
        * geometry.cpp (path_get_bounds): My fix the other day wasn't
 
12335
        quite ideal. Instead of using a 0.1 line thickness when the
 
12336
        shape's StrokeThickness is 0, continue using that 0 thickness but
 
12337
        use cairo_fill_extents() instead. Also, when shape is null, ise a
 
12338
        0.0 thickness & cairo_fill_extents() as well.
 
12339
 
 
12340
        * shape.cpp (DoDraw): Removed the if (thickness == 0) optimization
 
12341
        that breaks Paths with a StrokeThickness of 0. Fixes bug #352188.
 
12342
 
 
12343
        * runtime.cpp (EmitEventOnList): Changed to take double x,y
 
12344
        coordinate arguments rather than int.
 
12345
        (HandleMouseEvent): Same.
 
12346
 
 
12347
2008-01-09  Jeffrey Stedfast  <fejj@novell.com>
 
12348
 
 
12349
        * list.cpp (List::~List): Added a dtor that deletes all nodes
 
12350
        currently in the list. This is doable now that List::Nodes are
 
12351
        classes where the node dtors can be overloaded.
 
12352
 
 
12353
2008-01-09  Jackson Harper  <jackson@ximian.com>
 
12354
 
 
12355
        * xaml.cpp: If a property is a collection, don't assume that the
 
12356
        collection is already initialized (they used to always be), and
 
12357
        initialize the collection if needed. This fixes BNC 350893.
 
12358
 
 
12359
2008-01-09  Stephane Delcroix  <sdelcroix@novell.com>
 
12360
 
 
12361
        * brush.cpp: fix (useless) derelativization for MappingmodeAbsolute
 
12362
        on LinearGradientBrush. Fixes bnc 346308 and lineargrad.xml.
 
12363
 
 
12364
2008-01-08  Chris Toshok  <toshok@ximian.com>
 
12365
 
 
12366
        * animation.cpp (Storyboard::Begin): simple change to fix a nasty
 
12367
        bug.  we need to add the teardown handler before the completed
 
12368
        handler.  otherwise cases where people were using a storyboard as
 
12369
        a timer would break - the completed handler would fire, the JS
 
12370
        would restart the storyboard, then the teardown handler would free
 
12371
        the new clock hierarchy.  Fixes the page animation in pageturn,
 
12372
        and gets the bubbles moving again in the SilverlightCLRBalls demo.
 
12373
 
 
12374
2008-01-07  Jeffrey Stedfast  <fejj@novell.com>
 
12375
 
 
12376
        * geometry.cpp (path_get_bounds): Cairo seems to break if the line
 
12377
        thickness is 0.0, so if the shape's thickness is set to 0.0, use
 
12378
        0.1 like we do if shape is null. Fixes bug #351575.
 
12379
 
 
12380
2008-01-07  Sebastien Pouliot  <sebastien@ximian.com>
 
12381
 
 
12382
        * shape.cpp|h: Add NeedsLineCaps and NeedsLineJoin so some shapes,
 
12383
        that ignore those properties, can avoid setting them on the cairo
 
12384
        context.
 
12385
 
 
12386
2008-01-04  Chris Toshok  <toshok@ximian.com>
 
12387
 
 
12388
        * runtime.cpp: mostly switch all emit_* calls to take doubles, and
 
12389
        pass doubles around for button x/y.
 
12390
        (Surface::motion_notify_callback): if we're gtk > 2.12, use
 
12391
        gdk_event_request_motions (falling back to gdk_window_get_pointer
 
12392
        if not).  also, we can use the mouse_event_x/y from the event,
 
12393
        even when it's a hint.
 
12394
 
 
12395
        * runtime.h: switch back to using doubles for everything mouse
 
12396
        event related.  Change MoonlightEventEmitFunc to take doubles.
 
12397
 
 
12398
2008-01-04  Jeffrey Stedfast  <fejj@novell.com>
 
12399
 
 
12400
        * runtime.cpp|h: Make mouse_event_x/y ints rather than doubles
 
12401
        since the events that use them want them as ints anyway.
 
12402
        (button_release_callback): Cast the button->x/y doubles to int.
 
12403
        (button_press_callback): Same.
 
12404
        (motion_notify_callback): Cast event->x/y to int.
 
12405
        (crossing_notify_callback): Same.
 
12406
 
 
12407
        * dependencyobject.cpp: EventObjects now use a List class for
 
12408
        event_lists rather than GSList which is far more costly for
 
12409
        appends.
 
12410
        (Emit): Reduce the number of linked-list iterations from 5 to 2.
 
12411
 
 
12412
2008-01-04  Chris Toshok  <toshok@ximian.com>
 
12413
 
 
12414
        * runtime.h, runtime.cpp: completely overhaul the way we handle
 
12415
        mouse events.  Instead of doing both hit testing and event
 
12416
        dispatch in one recursive tree traversal, we build up a list of
 
12417
        all elements that will bubble the event, and then use that list
 
12418
        along with the previous one to generate Enter/Leave events for the
 
12419
        elements that require it.  Also fix the way capture is done (it's
 
12420
        not handled until the end) and fix the Enter event dispatch when
 
12421
        you release mouse capture.
 
12422
 
 
12423
        * uielement.h, uielement.cpp: rename the mouse events to match the
 
12424
        names used in C# and JS, as it's been singularly annoying to
 
12425
        remember that ButtonPressEvent -> MouseLeftButtonDown, etc.  Also
 
12426
        rename all the Handle* event methods to Emit*, as that's all they
 
12427
        do.  Make them nonvirtual, as the traversal and emission of the
 
12428
        events now happens in runtime.cpp.  Add a new virtual
 
12429
        method (HitTest), that is overridden by the container elements,
 
12430
        which appends elements that are going to bubble the event to the
 
12431
        list.
 
12432
 
 
12433
        * panel.h, panel.cpp: remove all the Handle* methods, implement
 
12434
        HitTest.
 
12435
 
 
12436
        * control.h, control.cpp: remove all the Handle* methods,
 
12437
        implement HitTest.
 
12438
 
 
12439
2008-01-04  Jeffrey Stedfast  <fejj@novell.com>
 
12440
 
 
12441
        * media.cpp (UpdateProgress): Don't SetValue() unless the delta
 
12442
        was large enough - otherwise we could get into a situation where
 
12443
        we never emit a progress changed event in a case where the data
 
12444
        trickles in at < 0.05%.
 
12445
 
 
12446
2008-01-04  Chris Toshok  <toshok@ximian.com>
 
12447
 
 
12448
        * animation.cpp (Storyboard::HookupAnimationsRecurse): look back
 
12449
        up the clock hierarchy for the target property like we do with the
 
12450
        target name.
 
12451
 
 
12452
2008-01-04  Chris Toshok  <toshok@ximian.com>
 
12453
 
 
12454
        * media.h: add Image::DownloaderFailed.
 
12455
 
 
12456
        * media.cpp (Image::UpdateProgress): make sure to qualify the
 
12457
        DownloadProgressProperty we lookup on the Downloader, since
 
12458
        without the Downloader:: it'll try to get
 
12459
        Image::DownloadProgressProperty, which will always return 0.0.
 
12460
        (Image::SetSource): use the static qualifier for
 
12461
        events (Downloader:: instead of downloader->).
 
12462
        (Image::DownloaderFailed): new method, emit our ImageFailedEvent.
 
12463
 
 
12464
        * brush.cpp (ImageBrush::image_progress_changed): make sure to set
 
12465
        our ImageBrush::DownloadProgressProperty before emitting the
 
12466
        changed event.
 
12467
        (brush_init): lookup the ImageBrush::ImageFailedEvent.
 
12468
 
 
12469
2008-01-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12470
 
 
12471
        * runtime.cpp: Free background_color upon surface
 
12472
          destruction. Fixes a minor leak.
 
12473
 
 
12474
        * clock.cpp|h: Free the tick_call_mutex upon destruction.
 
12475
 
 
12476
2008-01-03  Jeffrey Stedfast  <fejj@novell.com>
 
12477
 
 
12478
        Fix for bug #350962
 
12479
 
 
12480
        * media.cpp (MediaBase::OnPropertyChanged): Don't emit
 
12481
        DownloaderProgressChanged events anymore, leave that up to Image
 
12482
        and MediaElement classes so that we don't emit events when an
 
12483
        outside source changes the value.
 
12484
        (MediaElement::UpdateProgress): Emit the DownloaderProgressChanged
 
12485
        event if the proper download delta has occured.
 
12486
        (Image::UpdateProgress): Same.
 
12487
 
 
12488
2008-01-02  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12489
 
 
12490
        * dependencyobject.h: Remove warning.
 
12491
 
 
12492
2007-12-31  Jeffrey Stedfast  <fejj@novell.com>
 
12493
 
 
12494
        * runtime.h (CreateDownloader): Simplified.
 
12495
 
 
12496
2007-12-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12497
 
 
12498
        * collection.cpp: Upon destruction on VisualCollection, remove the visual
 
12499
          parent of all items.
 
12500
        * dependencyobject.h: Add weak_ref/unref and a comment explaining when and
 
12501
          how to use them.
 
12502
        * dirty.cpp: Don't take a ref in DirtyNode.
 
12503
 
 
12504
2007-12-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12505
 
 
12506
        * media.cpp: Add const modifier 
 
12507
 
 
12508
2007-12-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12509
 
 
12510
        * downloader.cpp: Null-initialize a field.
 
12511
        * dirty.cpp: Make DirtyNode keep a reference to the element it wraps.
 
12512
 
 
12513
2007-12-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12514
 
 
12515
        * pipeline.h: Added, the start of the new media pipeline.
 
12516
 
 
12517
2007-12-20  Sebastien Pouliot  <sebastien@ximian.com>
 
12518
 
 
12519
        * collection.cpp|h: Add missing method AddStylusPoints for 
 
12520
        StylusPointCollection
 
12521
 
 
12522
2007-12-20  Sebastien Pouliot  <sebastien@ximian.com> 
 
12523
 
 
12524
        * geometry.h: Remove hack for PathGeometry::FiguresProperty
 
12525
        * xaml.cpp: If a collection is null by default then we must call
 
12526
        parent->SetValue(dp, collection) or the collection, and it's 
 
12527
        contents, won't be available. Fix (correctly) Chess.
 
12528
 
 
12529
2007-12-19  Sebastien Pouliot  <sebastien@ximian.com> 
 
12530
 
 
12531
        * geometry.cpp: Fix Draw and ComputeBound to deal with the fact that
 
12532
        there's no default Figure collection. Fix Chess crasher.
 
12533
        * xaml.cpp: Fix unit test were empty string are parsed as 0.0,
 
12534
        foir doubles, and as an "empty" (but not NULL) Value for 
 
12535
        DOUBLE_ARRAY.
 
12536
 
 
12537
2007-12-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12538
 
 
12539
        * media.cpp, media.h: Implement support for markers as a separate stream
 
12540
          (the demuxer will call a callback when it encounters any streamed
 
12541
          markers).
 
12542
 
 
12543
2007-12-19  Sebastien Pouliot  <sebastien@ximian.com>
 
12544
 
 
12545
        * xaml.cpp: Add create_item_func for PathFigureCollection. This is 
 
12546
        now needed since it defaults to null and not an empty collection.
 
12547
 
 
12548
2007-12-19  Stephane Delcroix  <sdelcroix@novell.com>
 
12549
 
 
12550
        * uielement.[h|cpp]: set a default value (0,0) for RenderTransformOrigin.
 
12551
 
 
12552
2007-12-18  Sebastien Pouliot  <sebastien@ximian.com>
 
12553
 
 
12554
        * color.cpp: Handle empty string correctly in color_from_str. Unit 
 
12555
        tests shows this return 0 (and not transparent).
 
12556
 
 
12557
2007-12-18  Stephane Delcroix  <sdelcroix@novell.com>
 
12558
 
 
12559
        * xaml.cpp: fix for bnc 348581.
 
12560
 
 
12561
2007-12-18  Sebastien Pouliot  <sebastien@ximian.com> 
 
12562
 
 
12563
        * brush.cpp: Fix default color values for SolidColorBrush::Color and
 
12564
        GradientStop::Color properties (see js unit tests).
 
12565
        * geometry.cpp|h: Remove default collection from PathGeometry. Fix
 
12566
        testPathGeometry unit test.
 
12567
 
 
12568
2007-12-18  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12569
 
 
12570
        * media.cpp: ReadASFMarkers: Read markers as well as script commands.
 
12571
          Subtract the preroll value from the pts before adding the marker. Unref
 
12572
          the created collection and markers when finished with them.
 
12573
          AdvanceFrame: Always call CheckMarkers, even if we couldn't advance the
 
12574
          frame (might be necessary if the last frame has a marker).
 
12575
 
 
12576
2007-12-17  Jb Evain  <jbevain@novell.com>
 
12577
 
 
12578
        * xaml.cpp: fix testMatrixWithZeroItem test case.
 
12579
 
 
12580
2007-12-17  Jb Evain  <jbevain@novell.com>
 
12581
 
 
12582
        * type.cpp|h(.in), value.cpp|h(.in): remove the Matrix
 
12583
        value type, has SL exposes it as a DependencyObject.
 
12584
 
 
12585
        * transform.cpp|h: define and implement the
 
12586
        Matrix DependencyObject type.
 
12587
 
 
12588
        * xaml.cpp: create a Matrix DO on a Matrix xaml element.
 
12589
        Also create such an object with the <MatrixTransform Matrix='...'>
 
12590
        syntax.
 
12591
 
 
12592
2007-12-17  Sebastien Pouliot  <sebastien@ximian.com>
 
12593
 
 
12594
        * xaml.cpp: Return an "empty" Value (not NULL) if no POINT_ARRAY
 
12595
        is provided. Fix testAllowEmptyPointsOnPoly[gon|line] JS tests.
 
12596
 
 
12597
2007-12-14  Jeffrey Stedfast  <fejj@novell.com>
 
12598
 
 
12599
        * runtime.cpp (fps_report_default): Default printf FPS report
 
12600
        callback.
 
12601
        (Surface::render_cb): Use instance-local variables for keeping
 
12602
        track of FPS and use the report func if RUNTIME_INIT_SHOW_FPS bit
 
12603
        is set.
 
12604
 
 
12605
        * runtime.h: Added a RUNTIME_INIT_SHOW_FPS flag
 
12606
        (class Surface): New method to set the FPS report callback for a
 
12607
        surface.
 
12608
 
 
12609
2007-12-14  Chris Toshok  <toshok@ximian.com>
 
12610
 
 
12611
        * type.cpp.in, type.cpp (types_init_register_events): need to
 
12612
        register DownloadProgressChanged and ImageFailed events on
 
12613
        imagebrushes.
 
12614
 
 
12615
        * brush.h, brush.cpp: same, and hook up the events from
 
12616
        ImageBrush's embedded image so that we can re-emit the events.
 
12617
        
 
12618
2007-12-14  Jeffrey Stedfast  <fejj@novell.com>
 
12619
 
 
12620
        * downloader.cpp (Downloader::Abort): Don't abort if we've already
 
12621
        been aborted or been notified that we've failed (needed protection
 
12622
        for the Plugin downloader).
 
12623
        (Downloader::Send): Set aborted = false.
 
12624
        (Downloader::NotifyFailed): Don't do anything if we've already
 
12625
        been notified of failure for this download request.
 
12626
 
 
12627
        * downloader.h (class Downloader): Keep track of aborted state as
 
12628
        well.
 
12629
 
 
12630
2007-12-14  Stephane Delcroix  <sdelcroix@novell.com>
 
12631
 
 
12632
        * brush.cpp: Fix for bnc 346204: Set both Width and Height for Image if
 
12633
        only one (Width XOR Height) is provided.
 
12634
 
 
12635
2007-12-14  Sebastien Pouliot  <sebastien@ximian.com> 
 
12636
 
 
12637
        * shape.cpp: Fix Path::GetBrushSize to ensure the geometry has
 
12638
        been built before calling cairo_stroke_extents. This fix sample
 
12639
        http://designwithsilverlight.com/tutorials/photoGalleryWall/default.html
 
12640
 
 
12641
2007-12-13  Sebastien Pouliot  <sebastien@ximian.com> 
 
12642
 
 
12643
        * shape.cpp|h: Shortcut path bounds calculation when both Width
 
12644
        and Height are specified. Add same clipping rules to Line, 
 
12645
        Polyline and Polygon classes.
 
12646
 
 
12647
2007-12-13  Sebastien Pouliot  <sebastien@ximian.com>
 
12648
 
 
12649
        * geometry.cpp: Resume using cairo_stroke_extents in some cases
 
12650
        because we need very precise bounds for Fill to work properly.
 
12651
        This fix Sprawl's cowboy hat ribbon :-)
 
12652
 
 
12653
2007-12-12  Stephane Delcroix  <sdelcroix@novll.com>
 
12654
 
 
12655
        * brush.cpp: Fix RelativeTransform for RadialGradientBrush'es too.
 
12656
 
 
12657
2007-12-11  Jeffrey Stedfast  <fejj@novell.com>
 
12658
 
 
12659
        * downloader.cpp|h: Made the ::Write() method take the same
 
12660
        int-type args as the NPP_Write() function (which means int32 for
 
12661
        both offset and nbytes).
 
12662
 
 
12663
2007-12-11  Sebastien Pouliot  <sebastien@ximian.com>
 
12664
 
 
12665
        * stylus.cpp: Fix JS unit tests for Stroke properties by having
 
12666
        a default DrawingAttributes inside the Stroke.
 
12667
 
 
12668
2007-12-10  Chris Toshok  <toshok@ximian.com>
 
12669
 
 
12670
        * dependencyobject.h, dependencyobject.cpp: more event changes.
 
12671
        events keep a integer "token" per event, that starts at 0, that is
 
12672
        returned from the plugin's addEventListener method, and can be can
 
12673
        be passed to the plugin's removeEventListener method.
 
12674
 
 
12675
2007-12-10  Sebastien Pouliot  <sebastien@ximian.com>
 
12676
 
 
12677
        * shape.cpp: Fix Shape::GetSizeForBrush to adjust to the Stretch
 
12678
        property of the Shape. Fix bug #346018
 
12679
 
 
12680
2007-12-10  Jeffrey Stedfast  <fejj@novell.com>
 
12681
 
 
12682
        * runtime.cpp (InitializeDrawingArea): Removed the call to
 
12683
        gtk_widget_set_size_request() - we now call it elsewhere (since
 
12684
        going fullscreen requiers us to call set_size_request() /before/
 
12685
        calling gtk_window_fullscreen(). When going to fullscreen mode,
 
12686
        this was causing the FullScreenMessage item to appear in the
 
12687
        upper-left corner rather than centered like it should have been.
 
12688
        (Surface): Make the call to gtk_widget_set_size_request() here now
 
12689
        that it no longer is called inside InitializeDrawingArea().
 
12690
 
 
12691
2007-12-07  Sebastien Pouliot  <sebastien@ximian.com> 
 
12692
 
 
12693
        * geometry.cpp: Set SHAPE_EMPTY if only Height or Width is specified.
 
12694
        * shape.cpp|h: Add Shape and Path NeedsClipping methods. Adjust the
 
12695
        bounds calculation on paths when Height *and* Width are present.
 
12696
 
 
12697
2007-12-07  Sebastien Pouliot  <sebastien@ximian.com>
 
12698
 
 
12699
        * shape.cpp: In Shape::ComputeBounds don't compute half thickness
 
12700
        unless the value is needed.
 
12701
 
 
12702
2007-12-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12703
 
 
12704
        * xaml.cpp: Plug more leaks.
 
12705
 
 
12706
2007-12-07  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12707
 
 
12708
        * animation.cpp, geometry.cpp: Fix a couple of memory leaks,
 
12709
          detected by the javascript tests.
 
12710
 
 
12711
2007-12-06  Jeffrey Stedfast  <fejj@novell.com>
 
12712
 
 
12713
        * media.cpp (media_element_get_attributes): Added.
 
12714
        (media_element_set_attributes): Added.
 
12715
        (MediaElement): Set an empty list of attributes as per the spec.
 
12716
 
 
12717
2007-12-06  Stephane Delcroix  <sdelcroix@novell.com>
 
12718
 
 
12719
        * media.cpp:
 
12720
        * brush.cpp: implement RelativeTransform for image brushes and 
 
12721
        LinearGradientBrush. RadialGradientBrush still missing.
 
12722
 
 
12723
2007-12-06  Chris Toshok  <toshok@ximian.com>
 
12724
 
 
12725
        * dependencyobject.h, dependencyobject.cpp: make
 
12726
        EventObject::AddHandler return the id (when using the event_name
 
12727
        variant).
 
12728
 
 
12729
2007-12-06  Chris Toshok  <toshok@ximian.com>
 
12730
 
 
12731
        * xaml.cpp (xaml_init): register the right constructors for
 
12732
        PathSegmentCollection, GeometryCollection, and
 
12733
        TransformCollection.
 
12734
 
 
12735
2007-12-05  Chris Toshok  <toshok@ximian.com>
 
12736
 
 
12737
        * animation.cpp, animation.h: a couple of fixes.  Move away from
 
12738
        watching the clock state in AnimationStorage and resetting the
 
12739
        property value there.  instead, just override Clock::Stop in
 
12740
        AnimationClock and call ResetPropertyValue on the storage.
 
12741
 
 
12742
        Also, when a storyboard's clock group is stopped, free it and
 
12743
        remove it from the parent clock's list of children.  This should
 
12744
        keep us from growing the number of clocks over time for
 
12745
        storyboards which don't have Begin() called again (the only
 
12746
        circumstance under which we destroy the clock).
 
12747
 
 
12748
        * clock.cpp, clock.h: handle the case where a clock can be started
 
12749
        and then stopped before the next clock tick.  This happens when
 
12750
        you move the mouse very quickly over the thumbnails in pageturn.
 
12751
 
 
12752
2007-12-05  Sebastien Pouliot  <sebastien@ximian.com>
 
12753
 
 
12754
        * geometry.cpp: Fix crash when EllipseGeometry is used for clipping
 
12755
        (no path provided). Fix Build/ComputeBounds when no center point
 
12756
        is provided.
 
12757
 
 
12758
2007-12-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12759
 
 
12760
        * uielement.h, visual.h, uielement.cpp, collection.cpp, control.cpp,
 
12761
          dirty.cpp: Move UIElement::parent to Visual, rename it to visual_parent,
 
12762
          and make it a real property with accessors.
 
12763
 
 
12764
2007-12-05  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
12765
 
 
12766
        * xaml.cpp, dependencyobject.h, collection.cpp, dependencyobject.cpp,
 
12767
          animation.cpp: Rename DependencyObject::parent/SetParent/GetParent to
 
12768
          logical_parent/SetLogicalParent/GetLogicalParent.
 
12769
 
 
12770
2007-12-04  Larry Ewing  <lewing@novell.com>
 
12771
 
 
12772
        * media.cpp (Image::Render): fix the conditions for the opacity
 
12773
        stability count.
 
12774
 
 
12775
2007-12-03  Larry Ewing  <lewing@novell.com>
 
12776
 
 
12777
        * src/media.cpp (Image::Render): use paint_with_alpha if opacity
 
12778
        is changing, use the old buffered alpha if it is not.
 
12779
 
 
12780
2007-12-04  Jb Evain  <jbevain@novell.com>
 
12781
 
 
12782
        * stylus.cpp|h: add stylus_info_get_current function.
 
12783
        Right now, it's an hack which always return a StylusInfo
 
12784
        of type Mouse, not inverted.
 
12785
 
 
12786
2007-12-03  Chris Toshok  <toshok@ximian.com>
 
12787
 
 
12788
        * clock.h, clock.cpp: rename ClampTimeToDuration to ClampTime, as
 
12789
        it now clamps to [0,duration_timespan].  This fixes the Simon
 
12790
        "button flying off the screen" bug.
 
12791
 
 
12792
2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
 
12793
 
 
12794
        * clock.cpp (RaiseEnqueuedEvents): Optimized a bit by not
 
12795
        iterating thru the list 6 times :)
 
12796
        (ClockGroup::RaiseAccumulatedEvents): Make a copy of the
 
12797
        child_clocks list here too, or we end up corrupting memory.
 
12798
 
 
12799
2007-12-03  Larry Ewing  <lewing@novell.com>
 
12800
 
 
12801
        * media.cpp (Image::Render): wrap the region clipping in a #define
 
12802
        for testing.
 
12803
 
 
12804
2007-12-03  Larry Ewing  <lewing@novell.com>
 
12805
 
 
12806
        * media.cpp (Image::Render): remove accumulated drawing cruft.
 
12807
 
 
12808
2007-12-03  Chris Toshok  <toshok@ximian.com>
 
12809
 
 
12810
        * animation.cpp: put back in the calls to ComputeBeginTime that I
 
12811
        accidentally committed a few days ago (and lewing reverted to fix
 
12812
        the build).  they're needed with the new clock changes.
 
12813
 
 
12814
2007-12-03  Chris Toshok  <toshok@ximian.com>
 
12815
 
 
12816
        * clock.cpp, clock.h: rework the clock code a bunch.  There are a
 
12817
        couple of large changes.
 
12818
 
 
12819
        Get rid of the stupid new_ and current_ fields.  Just update the
 
12820
        field immediately.  This cuts down on logic in if checks, and also
 
12821
        makes subclocks update much faster in relation to their parent
 
12822
        clock (we used to have to wait 1 tick per level in the tree for
 
12823
        state to propagate).
 
12824
 
 
12825
        Abstract out all the QueueEvent calls into setters in clock.h.
 
12826
 
 
12827
        Break up Clock::Tick some, so more of the code is reusable from
 
12828
        ClockGroup::Tick without having to call Clock::Tick and then work
 
12829
        behind its back.
 
12830
 
 
12831
2007-12-03  Sebastien Pouliot  <sebastien@ximian.com>
 
12832
 
 
12833
        * brush.cpp: Fix breakage introduced in r90549 (the matrix is 
 
12834
        already set on the pattern).
 
12835
 
 
12836
2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
 
12837
 
 
12838
        * dependencyobject.cpp (RemoveHandler): Simplified a little.
 
12839
 
 
12840
        * animation.cpp (Stop): Remove the CompletedEvent root_clock
 
12841
        handler. Fixes Simon's GAME OVER! textblock storyboard.
 
12842
 
 
12843
2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
 
12844
 
 
12845
        * runtime.cpp: Added clipping/bounding-box override values.
 
12846
 
 
12847
        * uielement.cpp (DoRender): Changed optional bounding-box/clipping
 
12848
        debugging drawing based on runtime settable bitflags.
 
12849
 
 
12850
2007-12-03  Larry Ewing  <lewing@novell.com>
 
12851
 
 
12852
        * uielement.cpp: Clean up the debug rendering code for bounding
 
12853
        boxes and clip regions.
 
12854
 
 
12855
2007-12-03  Jeffrey Stedfast  <fejj@novell.com>
 
12856
 
 
12857
        Fixes a bug pointed out by Larry when rendering lines beginning
 
12858
        with a 'J', where the tail escapes the bounding box.
 
12859
 
 
12860
        * font.cpp (Layout): Use the horiBearingX font metric.
 
12861
        (RenderLine): Same.
 
12862
 
 
12863
2007-12-03  Larry Ewing  <lewing@novell.com>
 
12864
 
 
12865
        * brush.cpp (RadialGradientBrush::SetupBrush): add debug spew
 
12866
        if we can't invert the matrix but still draw someting.
 
12867
 
 
12868
2007-11-29  Larry Ewing  <lewing@novell.com>
 
12869
 
 
12870
        * panel.cpp (Panel::ComputeBounds): clip the clip the subpath
 
12871
        bounds to the clip region as well.
 
12872
 
 
12873
        * control.cpp (Control::ComputeBounds): differenciate between our
 
12874
        bounds and our subpath bounds.
 
12875
 
 
12876
        * control.h: add bounds_with_children and GetSubpathBounds ().
 
12877
 
 
12878
2007-11-29  Jeffrey Stedfast  <fejj@novell.com>
 
12879
 
 
12880
        * font.cpp (TextFont::GetGlyphInfoByIndex): If we reach the end of
 
12881
        the font face charmap, use unichar = 0 rather than returning NULL.
 
12882
 
 
12883
2007-11-28  Chris Toshok  <toshok@ximian.com>
 
12884
 
 
12885
        * runtime.cpp (Realloc): when we Realloc(), we need to tell the
 
12886
        toplevel canvas to update its bounds.  This *may* be wrong, but it
 
12887
        definitely fixes matrix.
 
12888
        (UpdateFullScreen): we need to stop the timesource when emitting
 
12889
        the fullscreenchangeevent.  otherwise we can end up stuck in a
 
12890
        nested glib mainloop and never return from the emit (actually we
 
12891
        never even invoke the JS callback in matrix.  the nested loop
 
12892
        happens somewhere deep in the bowels of NPN_Invoke).
 
12893
 
 
12894
2007-11-28  Jeffrey Stedfast  <fejj@novell.com>
 
12895
 
 
12896
        * media.cpp (MediaElement::UpdateProgress): Got rid of a hardcoded
 
12897
        hack that forced the assumption of a streaming (vs progressive)
 
12898
        media download. Also fixed to emit a DownloadProgressChanged event
 
12899
        at progress == 1.0 (which is what th Silverlight book says we're
 
12900
        supposed to do).
 
12901
 
 
12902
2007-11-28  Larry Ewing  <lewing@novell.com>
 
12903
 
 
12904
        * src/uielement.cpp (UIElement::DoRender): make sure we don't
 
12905
        leave a path on the cairo context when clipping.
 
12906
 
 
12907
2007-11-28  Chris Toshok  <toshok@ximian.com>
 
12908
 
 
12909
        * uielement.cpp (UIElement::UIElement): compute the initial total
 
12910
        hit test visibility.
 
12911
 
 
12912
        * dirty.cpp (process_dirty_elements): don't invalidate/update
 
12913
        bounds when the hit test visibility changes.
 
12914
 
 
12915
        * frameworkelement.(h,cpp): calculate the bounds here using
 
12916
        width/height.
 
12917
 
 
12918
        * panel.cpp: chain up to frameworkelement.
 
12919
        
 
12920
2007-11-27  Jeffrey Stedfast  <fejj@novell.com>
 
12921
 
 
12922
        * text.cpp (TextBlock::SetValue): Check the resulting Inlines
 
12923
        collection formed from the Text property being set against the old
 
12924
        Inlines - if no change, don't set the new Inlines collection,
 
12925
        simply keep using the old. The idea is to prevent unnecessary
 
12926
        layout re-calculations and invalidates.
 
12927
 
 
12928
2007-11-27  Chris Toshok  <toshok@ximian.com>
 
12929
 
 
12930
        * dirty.[cpp,h] panel.[cpp,h], control.[cpp,h], uielement.[cpp,h],
 
12931
        canvas.cpp, collection.cpp, shape.cpp:
 
12932
 
 
12933
        rather large change - don't use a large rectangular bounding box
 
12934
        encompassing both the panel's frameworkelement bounds as well as
 
12935
        the bounds of all its children.  Instead, only worry about the
 
12936
        frameworkelement bounds, and let the children invalidate
 
12937
        themselves.  but do all this in a way that we still use the
 
12938
        subtree's bounding box to prune rendering and hit testing.
 
12939
 
 
12940
        since we won't be invalidating the entire box surrounding all
 
12941
        children, we need to propagate visibility information down the
 
12942
        tree as we do opacity.
 
12943
 
 
12944
        This should really speed up most animations (such as those in
 
12945
        sprawl and airlines) since we'll be invalidating far smaller
 
12946
        areas.
 
12947
        
 
12948
        (this code was stupidly hard for lewing and me to get right.  yay
 
12949
        for jet lag.)
 
12950
 
 
12951
2007-11-23  Larry Ewing  <lewing@novell.com>
 
12952
 
 
12953
        * runtime.cpp: add show=expose to toggle expose display.
 
12954
 
 
12955
2007-11-22  Jb Evain  <jbevain@novell.com>
 
12956
 
 
12957
        * xaml.cpp (XamlElementInstantce::ClearSetProperties): avoid
 
12958
        a glib warning if set_properties is NULL.
 
12959
 
 
12960
2007-11-21  Chris Toshok  <toshok@ximian.com>
 
12961
 
 
12962
        * media.cpp (MediaElement::UpdateProgress): only set 1 of
 
12963
        DownloadProgressProperty and BufferingProgressProperty.  The
 
12964
        former is used if we're playing progressively, the latter if we're
 
12965
        buffering before playing.  This fixes the buffering animation on
 
12966
        the halo site.
 
12967
        
 
12968
2007-11-21  Chris Toshok  <toshok@ximian.com>
 
12969
 
 
12970
        * runtime.cpp (Surface::Invalidate): add the int case around the
 
12971
        complete expression to quiet gcc.
 
12972
 
 
12973
2007-11-20  Larry Ewing  <lewing@novell.com>
 
12974
 
 
12975
        * runtime.cpp (Surface::expose_event_callback): take allocation
 
12976
        offsets into account when invalidating and drawing.  Fixes
 
12977
        #339010.
 
12978
 
 
12979
2007-11-20  Chris Toshok  <toshok@ximian.com>
 
12980
 
 
12981
        * xaml.cpp (XamlElementInstance::ClearSetProperties): in glib <
 
12982
        2.12, destroy the hash table and set it to NULL so we'll recreate
 
12983
        it.
 
12984
 
 
12985
2007-11-20  Chris Toshok  <toshok@ximian.com>
 
12986
 
 
12987
        * collection.cpp (VisualRemoved): switch from using
 
12988
        item->parent->ChildInvalidated(UIElement), use
 
12989
        item->parent->Invalidate (item->GetBounds()).
 
12990
 
 
12991
        * uielement.h, uielement.cpp: change ChildInvalidated(Region *) to
 
12992
        Invalidate (Region*) and update calls to it.  Remove
 
12993
        ChildInvalidated(UIElement*).  Also, remove all references to the
 
12994
        children_dirty_region field.  everything goes through dirty_region
 
12995
        now.
 
12996
 
 
12997
        * dirty.cpp: switch to using item->parent->Invalidate instead of
 
12998
        item->parent->ChildInvalidated, and remove references to
 
12999
        children_dirty_region.
 
13000
 
 
13001
2007-11-20  Chris Toshok  <toshok@ximian.com>
 
13002
 
 
13003
        * dependencyobject.cpp: add a ctor for EventClosure, and do a deep
 
13004
        copy before emitting an event.
 
13005
 
 
13006
2007-11-20  Jeffrey Stedfast  <fejj@novell.com>
 
13007
 
 
13008
        * runtime.cpp (surface_get_toplevel): Removed.
 
13009
 
 
13010
        * uielement.cpp (uielement_get_isloaded): Removed.
 
13011
 
 
13012
2007-11-20  Jb Evain  <jbevain@novell.com>
 
13013
 
 
13014
        * downloader.h (Downloader): override SetSurface and GetSurface
 
13015
        to work on a custom surface field.
 
13016
        * downloader.cpp (Downloader::Downloader): initialize
 
13017
        surface to NULL.
 
13018
        * runtime.h (Surface::CreateDownloader): initialize the surface
 
13019
        of the downloader.
 
13020
        * collection.cpp: when removing an UIElement from an UIElementCollection,
 
13021
        clear out its surface to NULL.
 
13022
        * visual.cpp: remove null check preventing to set the surface to NULL.
 
13023
        * dependencyobject.cpp: (DependencyObject::FindName): if the
 
13024
        current DO has no parent, fallback to its surface to try
 
13025
        FindName on its top level element (needed to call FindName
 
13026
        on a downloader for instance). Fixes #335018.
 
13027
 
 
13028
2007-11-20  Jackson Harper  <jackson@ximian.com>
 
13029
 
 
13030
        * xaml.cpp: If we need to reparse the attributes for an element
 
13031
        (because we loaded a class and the props need to be set on the new
 
13032
        class) we have to clear out the hash of properties that are marked
 
13033
        as already set. Otherwise we get a property already set error.
 
13034
 
 
13035
2007-11-20  Jackson Harper  <jackson@ximian.com>
 
13036
 
 
13037
        * xaml.cpp: Add new function to create a value from a string
 
13038
        without having the Kind available (you still need to have the type
 
13039
        in string form).
 
13040
        - SetAttribute now ensures that the attribute was set properly
 
13041
        - If the object we are trying to set an attribute on is a managed
 
13042
        object and there is no DependencyProperty for the attribute, we
 
13043
        try setting the attribute on the object.
 
13044
 
 
13045
2007-11-20  Sebastien Pouliot  <sebastien@ximian.com>
 
13046
 
 
13047
        * uielement.cpp: Ensure the default value for VisibilityProperty
 
13048
        is VisibilityCollapsed even if the value is invalid (for Javascript
 
13049
        compatibility, since 1.1 should throw an exception). See #340799
 
13050
 
 
13051
2007-11-20  Stephane Delcroix  <sdelcroix@novell.com>
 
13052
 
 
13053
        * uielement.cpp: FullInvalidate on setting Viibility to Visible.
 
13054
        Fixes bnc #342662.
 
13055
 
 
13056
2007-11-19  Larry Ewing  <lewing@novell.com>
 
13057
 
 
13058
        * uielement.cpp: setup the clip before push/pop group so that
 
13059
        we reduce the temp surface size.
 
13060
 
 
13061
2007-11-16  Sebastien Pouliot  <sebastien@ximian.com>
 
13062
 
 
13063
        * transform.cpp: Use cairo_matrix_init_translate instead of 
 
13064
        cairo_matrix_init + cairo_matrix_translate where possible (which
 
13065
        avoid the multiplication with the identity matrix).
 
13066
 
 
13067
2007-11-16  Jeffrey Stedfast  <fejj@novell.com>
 
13068
 
 
13069
        * runtime.cpp (surface_get_toplevel): New function needed by the
 
13070
        managed land to implement a bit of a hack for the Resize
 
13071
        event (when someone connects to the Resize event, if the toplevel
 
13072
        canvas is already loaded, we want to immediately call the
 
13073
        handler).
 
13074
 
 
13075
        * uielement.cpp (uielement_get_isloaded): Same.
 
13076
 
 
13077
2007-11-15  Jackson Harper  <jackson@ximian.com>
 
13078
 
 
13079
        * Makefile.am:
 
13080
        * parsertest.cpp: Some tests I use for checking the parsing
 
13081
        functions.
 
13082
 
 
13083
2007-11-15  Jackson Harper  <jackson@ximian.com>
 
13084
 
 
13085
        * color.h: Add equality operators.
 
13086
 
 
13087
2007-11-15  Jackson Harper  <jackson@ximian.com>
 
13088
 
 
13089
        * xaml.cpp: use isalpha for determining whether or not an int32 is
 
13090
        an enum.  This allows things like -1 to work.
 
13091
 
 
13092
2007-11-15  Jackson Harper  <jackson@ximian.com>
 
13093
 
 
13094
        * xaml.cpp: Make sure the entire string is validate ie no 25.0XXXX
 
13095
        for doubles.
 
13096
 
 
13097
2007-11-15  Jackson Harper  <jackson@ximian.com>
 
13098
 
 
13099
        * point.h|cpp:
 
13100
        * rect.h|cpp: Update signatures to allow for error checking when
 
13101
        creating types from strings.
 
13102
        * xaml.h|cpp: Consolidate code to create values from strings, add
 
13103
        some error checking.  Update most of the parsing methods so it is
 
13104
        possible to return errors when parsing.
 
13105
        * playlist.cpp: Sig update.
 
13106
        
 
13107
2007-11-15  Jackson Harper  <jackson@ximian.com>
 
13108
 
 
13109
        * stylus.h|cpp: Initialize these collections so we don't get NULLs
 
13110
        for GetValue on them.
 
13111
 
 
13112
2007-11-14  Chris Toshok  <toshok@ximian.com>
 
13113
 
 
13114
        * runtime.cpp (strcase_hash): swap this out for mono's eglib
 
13115
        implementation, augmented with g_ascii_tolower, to remove the
 
13116
        malloc/free and 2 passes over the string.
 
13117
 
 
13118
2007-11-14  Chris Toshok  <toshok@ximian.com>
 
13119
 
 
13120
        * dependencyobject.cpp: move the strcase_hash/equals functions...
 
13121
        
 
13122
        * runtime.cpp: here.
 
13123
 
 
13124
        * runtime.h: and make them public.
 
13125
 
 
13126
        * type.cpp.in, type.cpp (RegisterEvent): and use them here
 
13127
        (RegisterType): and here.
 
13128
 
 
13129
2007-11-14  Jb Evain  <jbevain@novell.com>
 
13130
 
 
13131
        * media.cpp|h: remove specific Image and MediaElement
 
13132
        accessors for progress property now that the code
 
13133
        moved to MediaBase.
 
13134
 
 
13135
2007-11-14  Jb Evain  <jbevain@novell.com>
 
13136
 
 
13137
        * type.cpp.in, type.cpp, media.h, media.cpp: Move
 
13138
        DownloadProgressProperty and DownloadProgressChangedEvent
 
13139
        to MediaBase so it gets shared for both Image and MediaElement.
 
13140
        Fixes #325255.
 
13141
 
 
13142
2007-11-14  Jb Evain  <jbevain@novell.com>
 
13143
 
 
13144
        * value.h.in: update code template to match current value.h.
 
13145
 
 
13146
2007-11-14  Sebastien Pouliot  <sebastien@ximian.com> 
 
13147
 
 
13148
        * openfile.cpp: Added support for Filter and FilterIndex.
 
13149
 
 
13150
2007-11-14  Sebastien Pouliot  <sebastien@ximian.com>
 
13151
 
 
13152
        * animation.cpp: Replaced g_assert_not_reached with g_warning.
 
13153
        At least until #340799 (enum validation) is fixed. Part of #335413
 
13154
        * shape.cpp: Add g_warning to replace the g_assert_not_reached 
 
13155
        removed earlier. At least until #340799 (enum validation) is fixed.
 
13156
        * uielement.cpp: Replaced g_assert_not_reached with g_warning.
 
13157
        At least until #340799 (enum validation) is fixed. Part of #335413
 
13158
 
 
13159
2007-11-13  Miguel de Icaza  <miguel@novell.com>
 
13160
 
 
13161
        * value.cpp (Value::ToString): Add method to help debug some
 
13162
        apps. 
 
13163
 
 
13164
2007-11-13  Jeffrey Stedfast  <fejj@novell.com>
 
13165
 
 
13166
        * text.cpp (SetValue): Get rid of \r's and treat \n's as LineBreak
 
13167
        elements.
 
13168
 
 
13169
2007-11-13  Sebastien Pouliot  <sebastien@ximian.com>
 
13170
 
 
13171
        * brush.cpp|h: Do not compute brush bounds for a SolidColorBrush 
 
13172
        as this is unrequired (API wise) and can be expensive (it was enough
 
13173
        to add custom bound calculation code to shapes and geometries).
 
13174
 
 
13175
2007-11-12  Sebastien Pouliot  <sebastien@ximian.com>
 
13176
 
 
13177
        * shape.cpp: Removed g_assert_not_reached and, if any bad value is
 
13178
        supplied (should be catched well before that, #340799), use the 
 
13179
        default value. Fix part of #335413
 
13180
 
 
13181
2007-11-09  Chris Toshok  <toshok@ximian.com>
 
13182
 
 
13183
        * dirty.cpp, uielement.h, uielement.cpp: glib was hurting my head.
 
13184
        convert this over to using our List class.  Also fix a bug where
 
13185
        elements with down dirty flags weren't being inserted propertly
 
13186
        into the up dirty list.
 
13187
 
 
13188
2007-11-09  Sebastien Pouliot  <sebastien@ximian.com>
 
13189
 
 
13190
        * animation.cpp: Fix crash on empty BeginStoryboard (#340384)
 
13191
 
 
13192
2007-11-09  Miguel de Icaza  <miguel@novell.com>
 
13193
 
 
13194
        * value.h (struct Value): Cope with NULL strings.
 
13195
 
 
13196
2007-11-09  Jackson Harper  <jackson@ximian.com>
 
13197
 
 
13198
        * xaml.cpp: Closepath needs to draw a line to the path's starting
 
13199
        point and needs to create a new path figure element at the
 
13200
        starting point.
 
13201
 
 
13202
2007-11-09  Jackson Harper  <jackson@ximian.com>
 
13203
 
 
13204
        * type.cpp|h.in: Add an accesor for the ContentProperty name.
 
13205
        
 
13206
2007-11-09  Jackson Harper  <jackson@ximian.com>
 
13207
 
 
13208
        * xaml.cpp: Rework to allow unparented properties.  createFromXaml
 
13209
        ("<Canvas.Background><SolidColorBrush></Canvas.Background") will
 
13210
        basically ignore the property and will return the SolidColorBrush
 
13211
        as the top element. This fixes 335865.
 
13212
 
 
13213
2007-11-08  Chris Toshok  <toshok@ximian.com>
 
13214
 
 
13215
        [ may go a long way toward fixing #337714, if it doesn't fix it
 
13216
        outright ]
 
13217
        
 
13218
        * uielement.h, uielement.cpp: add an overload of ChildInvalidated
 
13219
        that takes a UIElement* instead of a region.  The implementation
 
13220
        just invalidates the entire bounds of the child in the parent.
 
13221
 
 
13222
        * collection.h, collection.cpp: we weren't breaking the
 
13223
        item->parent link when removing visuals from a VisualCollection.
 
13224
        Add VisualRemoved, which invalidates the child's region (and stop
 
13225
        using child->Invalidate, since that won't work once the link to
 
13226
        the parent is broken) and breaks the parent link.  Call
 
13227
        VisualRemoved from everywhere we remove/replace a visual in our
 
13228
        collection.  Also, rename VisualUpdated to VisualAdded, since
 
13229
        that's more indicative of why the method is being called.
 
13230
        
 
13231
2007-11-08  Jeffrey Stedfast  <fejj@novell.com>
 
13232
 
 
13233
        * runtime.cpp (Attach): Emit the Resize event.
 
13234
        (drawing_area_size_allocate): Emit the Resize event.
 
13235
 
 
13236
2007-11-07  Chris Toshok  <toshok@ximian.com>
 
13237
 
 
13238
        * clock.cpp (Clock::Begin): guard against division by zero.
 
13239
 
 
13240
2007-11-07  Chris Toshok  <toshok@ximian.com>
 
13241
 
 
13242
        * runtime.cpp, runtime.h: make GetWidth()/GetHeight() return the
 
13243
        width the canvas tells the surface to be (if it does).  this fixes
 
13244
        issues uncovered by larry's improved bounds checking code.  Also,
 
13245
        remove the instance fields for screen_height/width.  they're only
 
13246
        used in one place, so make them local to that function.
 
13247
 
 
13248
2007-11-07  Chris Toshok  <toshok@ximian.com>
 
13249
 
 
13250
        * brush.h, brush.cpp: add some c++ setters/getters to make some
 
13251
        code a little smaller.
 
13252
 
 
13253
2007-11-06  Larry Ewing  <lewing@novell.com>
 
13254
 
 
13255
        * src/frameworkelement.cpp: Force a full invalidate if the width
 
13256
        or height property because panels include their children in the
 
13257
        bounds compution and will pass the dirty check.
 
13258
 
 
13259
        * media.cpp: Implement the Region based rendering for MediaElement
 
13260
        and Image.
 
13261
 
 
13262
        * panel.cpp: Unconditionally pass the region to the Children.
 
13263
 
 
13264
        * panel.cpp: when rendering children treat panels and other
 
13265
        objects differently.  For containers pass the clipped region
 
13266
        directly, for elements subdivide the region and paint each block.
 
13267
        Renable FindStartingElement with a slightly less expensive
 
13268
        algorithm.
 
13269
 
 
13270
        * rect.cpp: don't collapse complicated regions the drawing code is
 
13271
        smarter now.
 
13272
 
 
13273
2007-11-06  Jeffrey Stedfast  <fejj@novell.com>
 
13274
 
 
13275
        * font.cpp (TextFont): Fixed to not exit() even when no font could
 
13276
        be loaded from FreeType.
 
13277
 
 
13278
2007-11-06  Chris Toshok  <toshok@ximian.com>
 
13279
 
 
13280
        * dependencyobject.cpp (GetObjectType): make this g_critical, and
 
13281
        also print out a stack trace if STACK_DEBUG is enabled.
 
13282
 
 
13283
        * dependencyobject.h: stop Emitting the DestroyedEvent from the
 
13284
        dtor.  instead do it from unref before we delete the object.
 
13285
 
 
13286
2007-11-05  Chris Toshok  <toshok@ximian.com>
 
13287
 
 
13288
        * rect.h (ToGdkRectangle): quiet countless warnings.
 
13289
 
 
13290
2007-11-05  Larry Ewing  <lewing@novell.com>
 
13291
 
 
13292
        Merge most of dirty region branch.  This makes the dirty logic and
 
13293
        rendering code use the new region class to track more complicated
 
13294
        shapes than bounding boxes when processing changed areas.
 
13295
 
 
13296
        * media.cpp: switch back to indirect rendering for drawing media
 
13297
        elements until a solution to the boundry clipping can be found.
 
13298
 
 
13299
        * panel.cpp: disable FindStartingElement (the buggy) until a more
 
13300
        optimal method can be found.
 
13301
 
 
13302
        * dirty.cpp: Use dirty regions.  Process DirtyOpacity first (still
 
13303
        needs to be fixed to order dirty children.
 
13304
 
 
13305
2007-11-03  Chris Toshok  <toshok@ximian.com>
 
13306
 
 
13307
        * clock.cpp (ClockGroup::Tick): instead of calling Clock::Stop,
 
13308
        call SkipToFill if we have no active child clocks.
 
13309
        (ClockGroup::Stop): simplify this.
 
13310
        (ClockGroup::Seek): make this look a little more like ::Stop.
 
13311
 
 
13312
2007-11-03  Chris Toshok  <toshok@ximian.com>
 
13313
 
 
13314
        * xaml.cpp (repeat_behavior_from_str): add support for the
 
13315
        "ff.ffx" format for repeat behaviors.
 
13316
 
 
13317
        * clock.cpp, clock.h: the first sizeable amount of work done in a
 
13318
        while to correct the multitude of tiny bugs in clock handling.
 
13319
        this gets AnimationMatrix.xaml maybe 40% working.  Clean up and
 
13320
        comment Clock::Tick a lot, and remove a bunch of the old
 
13321
        CLOCK_DEBUG spew which was making the code that much more
 
13322
        difficult to look at.
 
13323
        
 
13324
2007-11-02  Jeffrey Stedfast  <fejj@novell.com>
 
13325
 
 
13326
        * font.cpp (TextFontDescription::SetScale): Removed, this hack
 
13327
        wasn't working as well as I'd hoped.
 
13328
        (TextFontDescription::GetScale): Same.
 
13329
        (TextFontDescription::CreatePattern): If the requested font size
 
13330
        is < 41.0 (seems to be the magic number where scaling loses impact
 
13331
        on metrics), use FontSize=41.0 and do proper scaling to get the
 
13332
        actual size we want. My worry was that asking for small font sizes
 
13333
        (smaller than 16.0?) would look ugly with this hack, but that is
 
13334
        surprisingly not true. By always requesting a font size that will
 
13335
        yield the generic font metrics (e.g. not some hacked font size),
 
13336
        we will always be able to wrap identically no matter what FontSize
 
13337
        is requested (so long as the width gets scaled appropriately).
 
13338
 
 
13339
        * text.cpp (TextBlock::ComputeTransform): Removed.
 
13340
 
 
13341
2007-11-02  Jeffrey Stedfast  <fejj@novell.com>
 
13342
 
 
13343
        * font.cpp (RenderLine): Render glyphs with index 0 too, so that
 
13344
        we render an empty box for glyphs not in the font (just like
 
13345
        Silverlight).
 
13346
 
 
13347
        * text.cpp (ComputeTransform): Fixed to use the correct matrix for
 
13348
        getting the scale values.
 
13349
 
 
13350
2007-11-01  Jackson Harper  <jackson@ximian.com>
 
13351
 
 
13352
        * trigger.h:
 
13353
        * text.h:
 
13354
        * geometry.h
 
13355
        * transform.h:
 
13356
        * animation.h:
 
13357
        * brush.h:
 
13358
        * panel.h: Add ContentProperty 'attributes'.
 
13359
        * typegen.cs:
 
13360
        * type.cpp|h:  Add content property information to types.  This
 
13361
        will be used by the parser and will allow the parser to drop it's
 
13362
        special type system.
 
13363
 
 
13364
2007-11-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13365
 
 
13366
        * animation.cpp: AnimationStorage: unregister from registered events on
 
13367
          destruction.
 
13368
 
 
13369
2007-11-01  Jeffrey Stedfast  <fejj@novell.com>
 
13370
 
 
13371
        * text.cpp (TextBlock::SetValue): Oops - if we are setting an
 
13372
        empty string on the Text property, then we need to clear out
 
13373
        whatever was there before (if anything).
 
13374
 
 
13375
2007-10-31  Jeffrey Stedfast  <fejj@novell.com>
 
13376
 
 
13377
        Fixes for handling lwsp cdata between <Run> elements.
 
13378
 
 
13379
        * xaml.cpp (flush_char_data): Reworked a bit. Now takes a 'start'
 
13380
        arg suggesting that we are being called in response to a new
 
13381
        element starting vs an element ending.
 
13382
        (start_element_handler): Pass true as the start arg to
 
13383
        flush_char_data().
 
13384
        (end_element_handler): Pass false as the start arg to
 
13385
        flush_char_data().
 
13386
 
 
13387
        * text.cpp (SetValue): Only add a run if the string is non-empty.
 
13388
 
 
13389
2007-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13390
 
 
13391
        * dependencyobject.cpp: Guard against calling NULL.
 
13392
 
 
13393
2007-10-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13394
 
 
13395
        * media.cpp: Redo ASFParser::Malloc to avoid warnings, and make sure the
 
13396
          return value is always checked.
 
13397
 
 
13398
2007-10-31  Chris Toshok  <toshok@ximian.com>
 
13399
 
 
13400
        * trigger.cpp (EventTrigger::SetTarget,
 
13401
        EventTrigger::RemoveTarget): use UIElement::LoadedEvent instead of
 
13402
        "Loaded".
 
13403
 
 
13404
2007-10-31  Jackson Harper  <jackson@ximian.com>
 
13405
 
 
13406
        * dependencyobject.h|cpp: Give DependencyProperties the ability to
 
13407
        be readonly.
 
13408
        * canvas.cpp:
 
13409
        * animation.cpp: Signature updates
 
13410
        
 
13411
2007-10-30  Jackson Harper  <jackson@ximian.com>
 
13412
 
 
13413
        * xaml.h: Add the error args to the loader.
 
13414
        * xaml.cpp: Make most of our parsing errors match Silverlight.
 
13415
 
 
13416
2007-10-30  Jeffrey Stedfast  <fejj@novell.com>
 
13417
 
 
13418
        * font.cpp (Path): Check the path data != NULL before we make any
 
13419
        cairo calls, no sense wasting cycles if we will no-op in the end.
 
13420
 
 
13421
2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13422
 
 
13423
        * media.cpp, media.h: Fix signedness mismatch warning.
 
13424
 
 
13425
2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13426
 
 
13427
        * mplayer.h: Added asf_player field.
 
13428
 
 
13429
2007-10-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13430
 
 
13431
        * Makefile.am: Add files in asf/.
 
13432
        * media.cpp, media.h: Read ASF markers from the file. Save the position when
 
13433
          advancing frames. Use the difference between the last position and the
 
13434
          current position to determine if any MarkerReached events are supposed
 
13435
          to be raised.
 
13436
        * mplayer.cpp: Add some error checking/reporting when opening streams.
 
13437
          Register our own demuxer with ffmpeg (defining MOON_DEMUXER is required
 
13438
          to actually use it).
 
13439
 
 
13440
2007-10-26  Jeffrey Stedfast  <fejj@novell.com>
 
13441
 
 
13442
        * font.cpp (RenderLine): Split out from TextLayout::Render() and
 
13443
        made to reset the brush at each segment to match Silverlight's
 
13444
        behaviour.
 
13445
 
 
13446
2007-10-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13447
 
 
13448
        * debug.cpp: Added print_gdb_trace with an explaining comment.
 
13449
        * debug.h: Make print_stack_trace compile (to nothing) when STACK_DEBUG
 
13450
          isn't defined.
 
13451
 
 
13452
2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
 
13453
 
 
13454
        * font.cpp (TextLayout::Render): Set y1 before creating/appending
 
13455
        the path instead of in the segment loop.
 
13456
        (TextLayout::Render): Make underline pos relative to y1 (aka the
 
13457
        baseline) that we calculated above. Makes this easier to
 
13458
        understand.
 
13459
 
 
13460
2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
 
13461
 
 
13462
        * font.cpp (TextLayout::Layout): Always calculate segment->width
 
13463
        here.
 
13464
        (TextLayout::Render): Not here.
 
13465
 
 
13466
        * text.cpp (Glyphs::GetTransformOrigin): Implemented.
 
13467
 
 
13468
2007-10-25  Jackson Harper  <jackson@ximian.com>
 
13469
 
 
13470
        * type.cpp|.in:
 
13471
        * runtime.h|cpp: Add the Error event to the surface.  Raising this
 
13472
        event will cause the plugins onError handler to be invoked, the
 
13473
        default onError handler notifies the user of the error with a
 
13474
        javascript alert.
 
13475
 
 
13476
2007-10-25  Sebastien Pouliot  <sebastien@ximian.com>
 
13477
 
 
13478
        * stylus.cpp|h: Keep the semi-working code as a fast path to
 
13479
        render strokes (if no outline color is used and when width ==
 
13480
        height). Added a hack to support OutlineColor.
 
13481
 
 
13482
2007-10-25  Jeffrey Stedfast  <fejj@novell.com>
 
13483
 
 
13484
        * brush.cpp (Brush::SetupBrush): Now takes width and height
 
13485
        arguments. Updated all brushes.
 
13486
 
 
13487
        * text.cpp (Glyphs::Render): We want to check this->width and
 
13488
        this->height, not the width/height arguments.
 
13489
 
 
13490
        * brush.cpp (ImageBrush::SetupBrush): If the image isn't loaded
 
13491
        yet (surface = NULL), return.
 
13492
        (LinearGradientBrush::SetupBrush): Get rid of some of the valgrind
 
13493
        warnings.
 
13494
 
 
13495
2007-10-24  Jeffrey Stedfast  <fejj@novell.com>
 
13496
 
 
13497
        * text.cpp (Glyphs::GetSizeForBrush): Implemented.
 
13498
 
 
13499
        * font.cpp (TextLayout::Layout): Slight fix for Wrap mode.
 
13500
 
 
13501
2007-10-24  Jackson Harper  <jackson@ximian.com>
 
13502
 
 
13503
        * type.cpp.in/h.in: Add some c-style functions for creating
 
13504
        instances.
 
13505
 
 
13506
2007-10-24  Jackson Harper  <jackson@ximian.com>
 
13507
 
 
13508
        * typegen.cs:
 
13509
        * type.cpp.in/h.in: Add a create instance call to types.  This
 
13510
        will allow the parser to use our Type object instead of creating
 
13511
        it's own.
 
13512
 
 
13513
2007-10-24  Chris Toshok  <toshok@ximian.com>
 
13514
 
 
13515
        * clock.cpp (ManualTimeSource::SetCurrentTime): pass FALSE to
 
13516
        g_main_context_iteration so we don't block if there isn't anything
 
13517
        to do.  also, emit 3 TickEvents to make sure the tick is
 
13518
        propagated down into the animations.
 
13519
 
 
13520
2007-10-24  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13521
 
 
13522
        * xaml.cpp: No need to check if the created object is an UIElement before
 
13523
          calling SetSurface anymore.
 
13524
        * visual.h: Update SetSurface to virtual.
 
13525
        * brush.cpp, brush.h: Override SetSurface so that we can forward the call to
 
13526
          our Image object.
 
13527
        * dependencyobject.h: Add virtual Set/GetSurface to DependencyObject (here
 
13528
          the methods do nothing, the surface is still stored in Visual, but this
 
13529
          allows classes that do not inherit from Visual to correctly set the
 
13530
          surface on their members which do inherit from Visual).
 
13531
 
 
13532
2007-10-24  Jeffrey Stedfast  <fejj@novell.com>
 
13533
 
 
13534
        * uri.cpp (Uri::Parse): Treat uri's w/o a protocol as file uri's.
 
13535
 
 
13536
2007-10-23  Jeffrey Stedfast  <fejj@novell.com>
 
13537
 
 
13538
        * text.cpp (TextBlock::ComputeTransform): If the scale has
 
13539
        changed, set dirty = true so that we recalculate the layout.
 
13540
 
 
13541
        * mplayer.cpp (audio_play): Instead of using the SET_VOLUME()
 
13542
        macro, just do it w/o so that we hush the compiler warning.
 
13543
 
 
13544
2007-10-23  Chris Toshok  <toshok@ximian.com>
 
13545
 
 
13546
        * clock.cpp (Clock::GetBeginTime): stop treating the BeginTime of
 
13547
        a clock in absolute terms.  instead, offset it from the current
 
13548
        time of the parent clock (or time manager).
 
13549
        (Clock::Begin): clamp progress to 1.0
 
13550
        (SMOOTHING_ALPHA): switch this to 0.30 to see if that helps things
 
13551
        by making it less sensitive to immediate changes.
 
13552
 
 
13553
2007-10-23  Chris Toshok  <toshok@ximian.com>
 
13554
 
 
13555
        * mplayer.cpp (Open): if RUNTIME_INIT_AUDIO_DISABLE, don't use
 
13556
        audio (so we sync to the clock).
 
13557
 
 
13558
        * runtime.h: add RUNTIME_INIT_AUDIO_DISABLE.
 
13559
 
 
13560
2007-10-23  Chris Toshok  <toshok@ximian.com>
 
13561
 
 
13562
        * clock.cpp (ManualTimeSource::SetCurrentTime): call
 
13563
        g_main_context_iteration as a stopgap to make video elements show
 
13564
        up.
 
13565
        (TimeManager::TimeManager): remove spew.
 
13566
        (TimeManager::Tick): re-enable the clock throttling.  oops.
 
13567
 
 
13568
2007-10-23  Larry Ewing  <lewing@novell.com>
 
13569
 
 
13570
        * src/runtime.cpp: clear the background in more cases.
 
13571
 
 
13572
2007-10-23  Larry Ewing  <lewing@novell.com>
 
13573
 
 
13574
        * src/runtime.cpp: make the eventbox windowless and remove the
 
13575
        stale event code.  Let gtk do the clearing.
 
13576
 
 
13577
2007-10-23  Jeffrey Stedfast  <fejj@novell.com>
 
13578
 
 
13579
        * mplayer.cpp (MediaPlayer::Open): Re-enable audio :)
 
13580
        (MediaPlayer::LoadVideoFrame): Keep decoding video until we find
 
13581
        the correct frame rather than just rendering the first frame we
 
13582
        find.
 
13583
 
 
13584
2007-10-23  Chris Toshok  <toshok@ximian.com>
 
13585
 
 
13586
        * mplayer.cpp: replace all occurences of av_gettime with
 
13587
        TimeManager::Instance()->GetCurrentTimeUsec().
 
13588
 
 
13589
        * runtime.cpp (overrides): add the "timesource=manual" OVERRIDE
 
13590
        thingy.
 
13591
        (render_cb): re-enable the fps on the console.  oops.
 
13592
 
 
13593
        * runtime.h (RuntimeInitFlags): add
 
13594
        RUNTIME_INIT_TIMESOURCE_MANUAL.
 
13595
 
 
13596
        * type.h.in, type.cpp.in: remove BASE (should have happened on my
 
13597
        last commit), and add in the TIMESOURCE's, and TIMESOURCE's "Tick"
 
13598
        event.
 
13599
 
 
13600
        * type.h, type.cpp: sync to the .in files.
 
13601
 
 
13602
        * clock.h, clock.cpp: add the idea of a TimeSource to the
 
13603
        TimeManager.  Two are written - SystemTimeSource, which uses the
 
13604
        gtk timeout, and ManualTimeSource, which allows code to set what
 
13605
        the global time should be.  Also, add GetCurrentTimeUsec() for use
 
13606
        by mplayer, so we can switch it away from av_gettime and make it
 
13607
        possible for video to sync to the ManualTimeSource.
 
13608
 
 
13609
2007-10-23  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13610
 
 
13611
        * runtime.cpp: Base -> EventObject changes when OBJECT_TRACKING is defined.
 
13612
 
 
13613
2007-10-23  Larry Ewing  <lewing@novell.com>
 
13614
 
 
13615
        * runtime.cpp: make sure we unref the surface.
 
13616
 
 
13617
2007-10-23  Larry Ewing  <lewing@novell.com>
 
13618
 
 
13619
        * runtime.cpp: avoid making gdk calls that pull in the platform
 
13620
        cairo.
 
13621
 
 
13622
2007-10-22  Jeffrey Stedfast  <fejj@novell.com>
 
13623
 
 
13624
        * text.cpp: Don't allow Pango rendering if disabled at
 
13625
        configure-time.
 
13626
        (TextBlock::ComputeTransform): Moved the scale logic here from
 
13627
        OnPropertyChanged() so that we catch all transform changes.
 
13628
 
 
13629
        * uielement.h: Made ComputeTransform() virtual.
 
13630
 
 
13631
2007-10-22  Chris Toshok  <toshok@ximian.com>
 
13632
 
 
13633
        * clock.cpp (TimeManager::Shutdown): don't cast to Base anymore..
 
13634
        we can just cast to Clock here.
 
13635
 
 
13636
        * dependencyobject.h, dependencyobject.cpp: remove the Base class,
 
13637
        and make roll EventObject and Base into one class (still called
 
13638
        EventObject).
 
13639
 
 
13640
2007-10-20  Sebastien Pouliot  <sebastien@ximian.com>
 
13641
 
 
13642
        * runtime.h: Add gtk.h (since it depended on stylus.h to get it)
 
13643
        * stylus.cpp|h: Add some missing functions. Rendering changes 
 
13644
        (not active, work in progress).
 
13645
 
 
13646
2007-10-18  Chris Toshok  <toshok@ximian.com>
 
13647
 
 
13648
        * dependencyobject.h: fix comment.
 
13649
 
 
13650
        * animation.h, animation.cpp: use the
 
13651
        Clock::CurrentStateInvalidated event to reset the property value
 
13652
        to baseValue instead of overriding the Clock::Stop method.  This
 
13653
        fixes clocks with FillBehavior="Stop" instead of storyboard with
 
13654
        FillBehavior="Fill".
 
13655
 
 
13656
        * clock.cpp (Clock::Tick): remove a stupid block of code that was
 
13657
        causing clocks which were Filling to spontaneously end up in their
 
13658
        Active state again.
 
13659
 
 
13660
2007-10-18  Sebastien Pouliot  <sebastien@ximian.com>
 
13661
 
 
13662
        * geometry.cpp: New code to handle arc segments. No known issues
 
13663
        (except the handling of near zero values which doesn't seems to
 
13664
        be constant).
 
13665
        * libmoon.h, Makefile.am: Remove reference to rsvg.h
 
13666
        * rsvg.cpp|h: Remove from SVN.
 
13667
 
 
13668
2007-10-17  Andrew Jorgensen  <ajorgensen@novell.com>
 
13669
 
 
13670
        * cairo-embed.h, pixman-embed.h: Added symbol renaming headers
 
13671
        based on the ones from libgdiplus.
 
13672
 
 
13673
2007-10-17  Chris Toshok  <toshok@ximian.com>
 
13674
 
 
13675
        * xaml.cpp (XNamespace::SetAttribute): make sure to add the newly
 
13676
        created managed dob to the created_elements list so it gets
 
13677
        unrefed properly.
 
13678
        (XamlLoader::XamlLoader): use ->ref() instead of base_ref().
 
13679
        (XamlLoader::~XamlLoader): use ->unref() instead of base_unref().
 
13680
 
 
13681
2007-10-17  Chris Toshok  <toshok@ximian.com>
 
13682
 
 
13683
        * Makefile.am (demo_LDADD): add MOON_PROG_LIBS.
 
13684
        (sizes_LDADD): same.
 
13685
 
 
13686
2007-10-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13687
 
 
13688
        * dependencyobject.h: Add a GET_OBJ_ID macro that resolves to -1 if
 
13689
          OBJECT_TRACKING isn't defined.
 
13690
        * runtime.h: Enable the contextual downloader warning again.
 
13691
        * dependencyobject.cpp: Fix build when DEBUG is defined.
 
13692
 
 
13693
2007-10-16  Jeffrey Stedfast  <fejj@gnome.org>
 
13694
 
 
13695
        * text.cpp (OnPropertyChanged): When intercepting non-TextBlock
 
13696
        properties changing value, don't fall thru to the rest of the
 
13697
        checks (as then we'd re-emit it to sublisteners which isn't what
 
13698
        we want I don't think). Also, don't change the font scale unless
 
13699
        it's >= 1.0 (e.g. don't down-scale). Fixes an infinite loop.
 
13700
 
 
13701
2007-10-16  Jeffrey Stedfast  <fejj@novell.com>
 
13702
 
 
13703
        * text.cpp (OnPropertyChanged): Listen for RenderTransformProperty
 
13704
        changes and apply the y-scale to the font so that we can more
 
13705
        accurately path the font glyphs at the scale we intend to render
 
13706
        them at.
 
13707
 
 
13708
        * font.cpp (TextFont): Cache the scale here.
 
13709
        (Kerning): Apply the scale.
 
13710
        (Descender): Here too.
 
13711
        (Ascender): And here.
 
13712
        (Height): Same.
 
13713
        (GetGlyphInfo): Create and apply the scale/invert matrix. Also
 
13714
        scale the glyph metrics.
 
13715
        (UnderlinePosition): Apply the scale.
 
13716
        (UnderlineThickness): Same here.
 
13717
        (TextFontDescription): Added a scale, default to 1.0
 
13718
        (CreatePattern): Set the scale on the pattern.
 
13719
        (UnsetFields): When unsetting values, restore them to their
 
13720
        default values.
 
13721
        (Merge): Merge the scale.
 
13722
        (GetScale): New method.
 
13723
        (SetScale): New method.
 
13724
 
 
13725
2007-10-16  Chris Toshok  <toshok@ximian.com>
 
13726
 
 
13727
        * dependencyobject.cpp (detach_depobj_values): call
 
13728
        obj->SetParent(NULL) here as well, so we don't reference a
 
13729
        destroyed parent.
 
13730
 
 
13731
        * runtime.cpp (Surface::Surface): use Surface::timeline instead of
 
13732
        a local variable.
 
13733
        (Surface::~Surface): make sure to remove the surface's clock_group
 
13734
        from the time manager.  Also, unref the timeline we create in the
 
13735
        ctor.
 
13736
        (runtime_shutdown): reimplement the oldest 10 alive object
 
13737
        printing stuff in the face of using a hashtable.
 
13738
 
 
13739
        * runtime.h: add Surface::timeline, so we can clean it up in
 
13740
        ~Surface.
 
13741
 
 
13742
        * dependencyobject.h (Base::) use a hash table to track alive
 
13743
        objects instead of a list.  this speeds up things immensely.
 
13744
 
 
13745
        * clock.cpp (ClockGroup::~ClockGroup): call SetParent(NULL) on our
 
13746
        children so any further GetParent() calls won't return a destroyed
 
13747
        object.
 
13748
 
 
13749
        * animation.cpp (Storyboard::~Storyboard): guard against a crash
 
13750
        when a parent clock is freed before the child clock.
 
13751
 
 
13752
        * text.cpp (TextBlock::TextBlock): plug a couple memory leaks.
 
13753
 
 
13754
2007-10-15  Chris Toshok  <toshok@ximian.com>
 
13755
 
 
13756
        * animation.[h,cpp]: remove the strong reference from
 
13757
        AnimationStorage to its target object, and instead use the
 
13758
        EventObject::DestroyEvent to implement a weak reference.  See the
 
13759
        TODO for a blurb about generalizing this.
 
13760
 
 
13761
        * typegen.cs (GenerateTypeCpp): remove the special case code that
 
13762
        makes INVALID the parent of DEPENDENCY_OBJECT - we need it to have
 
13763
        EVENTOBJECT as the parent for the DestroyedEvent to line up
 
13764
        properly in the event tables.
 
13765
 
 
13766
        * type.cpp.in, type.cpp (types_init_register_events): register the
 
13767
        Destroyed event.
 
13768
 
 
13769
        * dependencyobject.[h,cpp]: add EventObject::DestroyedEvent,
 
13770
        emitted just before we clean up the EventObject's event list.
 
13771
 
 
13772
2007-10-15  Jeffrey Stedfast  <fejj@novell.com>
 
13773
 
 
13774
        * text.cpp (Layout): I think I finally figured out the scaling to
 
13775
        apply to the units provided in the Indices property and also
 
13776
        discovered that the Advance is not applied at the uOffset, it is
 
13777
        applied independently of the uOffset.
 
13778
        (Render): Same fixes as in Layout().
 
13779
 
 
13780
2007-10-13  Chris Toshok  <toshok@ximian.com>
 
13781
 
 
13782
        * animation.cpp (balf): fix bug 325175 by not taking the square
 
13783
        root of a negative number (fixes the flashing in the credits for
 
13784
        Monotone.)  Also clean up this code so that we're not using
 
13785
        globals to communicate parameters (through Simpson) between balf
 
13786
        and BezierArcLength, and lower the tolerance (I doubt we need
 
13787
        *that* much precision).
 
13788
 
 
13789
2007-10-12  Chris Toshok  <toshok@ximian.com>
 
13790
 
 
13791
        * control.[h,cpp], brush.[h,cpp], text.[h,cpp], geometry.[h,cpp],
 
13792
        dependencyobject.[h,cpp], shape.[h,cpp], animation.[h,cpp],
 
13793
        transform.[h,cpp]: add an extra parameter to OnSubPropertyChanged,
 
13794
        which gives the actual object whose property changed.  Also, in a
 
13795
        few instances fix the NotifyAttachersOnPropertyChanged call that
 
13796
        some classes used to not use the subprop, but the prop.  The
 
13797
        subprop doesn't refer to "this" in those instances, but to @obj.
 
13798
        @prop refers to "this".
 
13799
 
 
13800
        * collection.[h,cpp]: use the above change to correctly support
 
13801
        the DependencyObject parameter of OnCollectionChanged (when the
 
13802
        change type is ItemChanged).
 
13803
        
 
13804
        * uielement.[h,cpp], panel.[h,cpp]: use the above two changes to
 
13805
        move the ZIndex property support from UIElement to Panel, which
 
13806
        makes more logical sense (and is likely the reason MS removed the
 
13807
        property from UIElement in 1.1) -- ZIndex is about what happens to
 
13808
        this UIElement in relation to its siblings.
 
13809
        
 
13810
2007-10-12  Sebastien Pouliot  <sebastien@ximian.com>
 
13811
 
 
13812
        * shape.cpp: Only set miter limit if line join is set to miter.
 
13813
 
 
13814
2007-10-12  Chris Toshok  <toshok@ximian.com>
 
13815
 
 
13816
        * collection.cpp: move the panel logic away from VisualCollection.
 
13817
        It belongs in Panel::OnCollectionChanged.
 
13818
 
 
13819
        * panel.cpp: flesh out Panel::OnCollectionChanged, making it do
 
13820
        everything the VisualCollection code used to do on its behalf.
 
13821
 
 
13822
        * uielement.h, uielement.cpp: introduce a new field for use with
 
13823
        the dirty code - force_redraw_of_new_bounds.  Basically, we set
 
13824
        the field according to the parameter passed to UpdateBounds.
 
13825
 
 
13826
        * dirty.cpp (UpdateBounds): force an invalidate if
 
13827
        el->force_redraw_of_new_bounds is set.
 
13828
 
 
13829
2007-10-12  Chris Toshok  <toshok@ximian.com>
 
13830
 
 
13831
        * clock.h, clock.cpp: add some Timeout functions (AddTimeout,
 
13832
        RemoveTimeout) which wrap the glib timeout calls we were making.
 
13833
        This lets us keep track of active timeout ids and remove them all
 
13834
        when the TimeManager shuts down.  So, if we leak MediaElements
 
13835
        (which seems to be happening in TopBanana), we don't crash.
 
13836
 
 
13837
        * mplayer.cpp: use the new TimeManager timeout call instead of the
 
13838
        glib mainloop directly.
 
13839
 
 
13840
        * media.cpp: same.
 
13841
        
 
13842
2007-10-12  Jeffrey Stedfast  <fejj@novell.com>
 
13843
 
 
13844
        * downloader.cpp (downloader_init): Default the DownloadProgress
 
13845
        to 0.0.
 
13846
 
 
13847
2007-10-12  Jackson Harper  <jackson@ximian.com>
 
13848
 
 
13849
        * downloader.h: Add an access to the downloader state.  I need
 
13850
        this in the plugin.
 
13851
 
 
13852
2007-10-12  Jb Evain  <jbevain@novell.com>
 
13853
 
 
13854
        * brush.cpp|h: add image_brush_set_source.
 
13855
 
 
13856
2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
 
13857
 
 
13858
        * mplayer.cpp (convert_to_rgb): Worked around an swscaler crash
 
13859
        where it doesn't handle J-Type picture frames.
 
13860
 
 
13861
2007-10-11  Sebastien Pouliot  <sebastien@ximian.com>
 
13862
 
 
13863
        * panel.cpp|h: Split Render into Render and RenderChildren, so 
 
13864
        the later can be overriden in InkPresenter.
 
13865
        * stylus.cpp|h: A quick (see FIXME) implementation to render 
 
13866
        ink found in some xaml files.
 
13867
 
 
13868
2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
 
13869
 
 
13870
        * mplayer.cpp: Updated to use the new Queue class.
 
13871
        (AdvanceFrame): Accessing the queue directly as a linked list
 
13872
        allows us to simplify the loop a little so that we don't have to
 
13873
        keep a reference to the previous packet's decoded frame.
 
13874
 
 
13875
        * list.cpp: Added a new Queue class which will replace GAsyncQueue
 
13876
        in mplayer.cpp.
 
13877
 
 
13878
2007-10-11  Jeffrey Stedfast  <fejj@novell.com>
 
13879
 
 
13880
        * mplayer.cpp: Added ctors/dtors for Audio and Video structs.
 
13881
        (AdvanceFrame): Keep a reference to the previous frame in case we
 
13882
        reach the end of the queue.
 
13883
 
 
13884
2007-10-11  Jb Evain  <jbevain@novell.com>
 
13885
 
 
13886
        * dependencyobject.cpp|h: add dependency_object_set_name.
 
13887
 
 
13888
        * media.cpp|h: add media_attribute_get_value and
 
13889
        media_attribute_set_value
 
13890
 
 
13891
        * playlist.cpp|h: populate MediaAttributeCollection when
 
13892
        a playlist entry is opened.
 
13893
 
 
13894
2007-10-11  Larry Ewing  <lewing@novell.com>
 
13895
 
 
13896
        * dirty.cpp, uielement.cpp|h: Use gdk_regions to tract dirty
 
13897
        areas... have more fun in general.
 
13898
        
 
13899
        * src/rect.h: replace Floor function with RoundOut function.
 
13900
        * panel.cpp, dirty.cpp: use RoundOut where appropriate.  Fixes
 
13901
        clipping issue in sprawl.
 
13902
 
 
13903
2007-10-11  Sebastien Pouliot  <sebastien@ximian.com>
 
13904
 
 
13905
        * xaml.cpp: Let InkPresenter handle childs like a Canvas (from 
 
13906
        which it inherits)
 
13907
 
 
13908
2007-10-11  Jb Evain  <jbevain@novell.com>
 
13909
 
 
13910
        * playlist.cpp: replace C++ casts to plain casts.
 
13911
 
 
13912
2007-10-11  Jb Evain  <jbevain@novell.com>
 
13913
 
 
13914
        * collection.cpp: replace dynamic_casts with plain casts
 
13915
        as per Miguel suggestion.
 
13916
 
 
13917
2007-10-11  Jb Evain  <jbevain@novell.com>
 
13918
 
 
13919
        * collection.cpp|h: add, implement and expose the
 
13920
        MediaAttributeCollection::GetItemByName method.
 
13921
 
 
13922
2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13923
 
 
13924
        * downloader.cpp, downloader.h: Fix some const char/char mismatch warnings.
 
13925
 
 
13926
2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13927
 
 
13928
        * text.h, animation.h, text.cpp: Fix some const char/char mismatch warnings.
 
13929
        * dependencyobject.h, dependencyobject.cpp, animation.cpp: Remove some const
 
13930
          char/char mismatch warnings.
 
13931
        * visual.cpp: Fix no newline warning.
 
13932
        * runtime.cpp: Fix a initialization warning.
 
13933
        * demo.cpp: Remove unused variable.
 
13934
 
 
13935
2007-10-11  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13936
 
 
13937
        * dependencyobject.cpp: base_unref_delayed: do nothing if base is NULL,
 
13938
          matches base_unref behaviour.
 
13939
        * dependencyobject.h: Use g_atomic_int* to make ref counting atomic
 
13940
          operations.
 
13941
 
 
13942
2007-10-10  Chris Toshok  <toshok@ximian.com>
 
13943
 
 
13944
        * runtime.cpp (runtime_shutdown): explicitly drain all remaining
 
13945
        pending managed unrefs.
 
13946
 
 
13947
        * dependencyobject.cpp: remove the Base::ref/unref implementations
 
13948
        from here.  Add the threadsafe base_unref_delayed code, as well as
 
13949
        code to manage a tick call to free up the instances on the next
 
13950
        clock tick.  Also provide an external api (drain_unrefs -- bad
 
13951
        name, fix me plz k thx) so that runtime.cpp can explicitly unref
 
13952
        everything when we shutdown (if they haven't already been dealt
 
13953
        with.)
 
13954
 
 
13955
        * dependencyobject.h: clean up the OBJECT_TRACKING ifdefs so that
 
13956
        we don't have 2 implementations of all these methods.  Instead,
 
13957
        just ifdef the relevant portions of the methods, and keep them in
 
13958
        dependencyobject.h.  Also, add prototypes for drain_unrefs and
 
13959
        base_unref_delayed, which is called from managed code.
 
13960
 
 
13961
        * collection.h, collection.cpp: make Clear take an optional
 
13962
        "emit_event" argument (default = true.)  Call Clear instead of
 
13963
        list->Clear(true) in our dtor so we clean up the namespaces and
 
13964
        Detach properly.
 
13965
 
 
13966
        * debug.cpp: use an extern "C" block. looks nicer.
 
13967
 
 
13968
2007-10-10  Sebastien Pouliot  <sebastien@ximian.com>
 
13969
 
 
13970
        * brush.cpp: Handle GradientStop with negative offset like 
 
13971
        Silverlight (seems to) do.
 
13972
 
 
13973
2007-10-10  Chris Toshok  <toshok@ximian.com>
 
13974
 
 
13975
        * panel.cpp (Panel::~Panel): no need to clear our Children
 
13976
        collection.  the normal dtor stuff will do that for us.
 
13977
 
 
13978
2007-10-10  Larry Ewing  <lewing@novell.com>
 
13979
 
 
13980
        * media.cpp: Fill with the element extents don't just paint the
 
13981
        surface because if the stretch is specified we may end up painting
 
13982
        outside the proper area.
 
13983
 
 
13984
2007-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13985
 
 
13986
        * media.cpp: When updating the MediaElement's progress, get the Downloader's
 
13987
          DownloadProgressProperty.
 
13988
 
 
13989
2007-10-10  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
13990
 
 
13991
        * visual.cpp, visual.h: Added visual_set_surface, and guard against
 
13992
          overwriting a set surface with null.
 
13993
 
 
13994
2007-10-10  Jackson Harper  <jackson@ximian.com>
 
13995
 
 
13996
        * collection.cpp: Set the surface when adding a visual element.
 
13997
 
 
13998
2007-10-10  Jackson Harper  <jackson@ximian.com>
 
13999
 
 
14000
        * shape.cpp: We need to do something when line properties are
 
14001
        changed. Fixes test-animation-line.xaml
 
14002
 
 
14003
2007-10-10  Jackson Harper  <jackson@ximian.com>
 
14004
 
 
14005
        * xaml.cpp: Don't allow the same property to be set twice.
 
14006
 
 
14007
2007-10-09  Jackson Harper  <jackson@ximian.com>
 
14008
 
 
14009
        * xaml.cpp: When we create custom elements we also need to set the
 
14010
        surface on them and mark them for cleanup.
 
14011
 
 
14012
2007-10-09  Jackson Harper  <jackson@ximian.com>
 
14013
 
 
14014
        * xaml.cpp: When we are creating objects from a string, set the
 
14015
        encoding to utf8 so that expat doesn't try to determine the
 
14016
        encoding from the ?xml declaration (which will be incorrect
 
14017
        because the string is in utf8).
 
14018
 
 
14019
2007-10-09  Chris Toshok  <toshok@ximian.com>
 
14020
 
 
14021
        * clock.cpp (ClockGroup::Stop): If the clock group has children we
 
14022
        depend on stopping them first.  But if the clock group is without
 
14023
        children, chain up to Clock::Stop here.
 
14024
 
 
14025
2007-10-09  Jb Evain  <jbevain@novell.com>
 
14026
 
 
14027
        * uielement.h: define new methods RenderClipPath and
 
14028
        IntersectBoundsWithClipPath.
 
14029
        * uielement.cpp: implement them.
 
14030
        * panel.cpp, shape.cpp, media.cpp: use them.
 
14031
 
 
14032
2007-10-09  Chris Toshok  <toshok@ximian.com>
 
14033
 
 
14034
        * clock.cpp, trigger.cpp, uielement.cpp, geometry.cpp, shape.cpp,
 
14035
        frameworkelement.cpp, transform.cpp, media.cpp, animation.cpp,
 
14036
        brush.cpp, text.cpp: s/Attachee/Attacher.
 
14037
 
 
14038
        * dependencyobject.h: couple of Detach changes: 1) Add a DetachAll
 
14039
        call that is used at dtor time to call Detach on all
 
14040
        DependencyObject-subclassed Values, and 2) make NULL available in
 
14041
        detach as a wildcard - passing NULL for the property detaches all
 
14042
        properties that the current object might be watching on.
 
14043
 
 
14044
        Also, correct a longstanding problem in terminology/api.  if A's
 
14045
        code calls B->Attach (..., this), then A is the Attacher, not the
 
14046
        Attachee.  Basically s/Attachee/Attacher in all places,
 
14047
        everywhere.
 
14048
 
 
14049
        * dependencyobject.cpp: same changes as above.  Also, change the
 
14050
        current_values hash table to key off the DependencyProperty, not
 
14051
        off the DependencyProperty name.  This allows us to use a direct
 
14052
        hash, as opposed to a string hash.
 
14053
        
 
14054
        * collection.cpp (dtor): make sure sure to detach from all the
 
14055
        list elements before we clear the list.
 
14056
 
 
14057
2007-10-09  Jeffrey Stedfast  <fejj@novell.com>
 
14058
 
 
14059
        * font.cpp (Layout): Only break words on ASCII lwsp, we should not
 
14060
        break on nbsp's for example.
 
14061
 
 
14062
2007-10-09  Jackson Harper  <jackson@ximian.com>
 
14063
 
 
14064
        * xaml.cpp: Make sure the Surface gets set on custom created
 
14065
        UIElements.  Also add them to the created list, so they get freed.
 
14066
 
 
14067
2007-10-09  Jackson Harper  <jackson@ximian.com>
 
14068
 
 
14069
        * control.cpp: Since controls are UIElements we need to make sure
 
14070
        their surface is set when we create them from XAML.
 
14071
 
 
14072
2007-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
14073
 
 
14074
        * dependencyobject.cpp: resolve_property_path: Add a nullcheck.
 
14075
 
 
14076
2007-10-09  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
14077
 
 
14078
        * debug.cpp, debug.h: Conditionally compile support for managed stack
 
14079
          frames.
 
14080
 
 
14081
        * runtime.cpp: add more debug code.
 
14082
 
 
14083
2007-10-08  Jeffrey Stedfast  <fejj@novell.com>
 
14084
 
 
14085
        * text.cpp (OnPropertyChanged): We may need to relayout even if
 
14086
        the wrapping is set to NoWrap.
 
14087
 
 
14088
2007-10-08  Zoltan Varga  <vargaz@gmail.com>
 
14089
 
 
14090
        * text.cpp (OnPropertyChanged): Do a relayout if the Width property
 
14091
        changes and text wrapping is enabled.
 
14092
 
 
14093
2007-10-08  Jeffrey Stedfast  <fejj@novell.com>
 
14094
 
 
14095
        * mplayer.cpp (Open): If the media has video, load the first video
 
14096
        frame.
 
14097
        (Seek): Same.
 
14098
        (AdvanceFrame): Fixed to "end" properly.
 
14099
 
 
14100
        * media.cpp: Don't manually call DisplayFrame() anymore.
 
14101
 
 
14102
2007-10-08  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
14103
 
 
14104
        * xaml.cpp: Set the surface of newly created objects (where applicable).
 
14105
        * canvas.h, uielement.h, canvas.cpp: Move the surface field to Visual.
 
14106
        * playlist.cpp, media.cpp, text.cpp: Create the downloader using Surface'
 
14107
          brand new CreateDownloader method.
 
14108
        * visual.h: Added a surface field, complete with setters and getters.
 
14109
        * downloader.cpp, downloader.h: Add a context field.
 
14110
        * runtime.h: Add a downloader_context field, and CreateDownloader methods.
 
14111
        * runtime.cpp: Add a downloader_context field.
 
14112
 
 
14113
2007-10-09  Larry Ewing  <lewing@novell.com>
 
14114
 
 
14115
        * media.cpp: add clipping to shape::DoDraw and to the bounds
 
14116
        computations.
 
14117
 
 
14118
2007-10-08  Larry Ewing  <lewing@novell.com>
 
14119
 
 
14120
        * media.cpp:
 
14121
        * panel.cpp: intersect the bounds with the clip path to
 
14122
        optimize the invalidated region.
 
14123
 
 
14124
        * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
 
14125
        with a NULL.
 
14126
 
 
14127
2007-10-08  Larry Ewing  <lewing@novell.com>
 
14128
 
 
14129
        * media.cpp:
 
14130
        * panel.cpp: intersect the bounds with the clip path to
 
14131
        optimize the invalidated region.
 
14132
 
 
14133
        * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
 
14134
        with a NULL.
 
14135
 
 
14136
2007-10-08  Larry Ewing  <lewing@novell.com>
 
14137
 
 
14138
        * media.cpp:
 
14139
        * panel.cpp: intersect the bounds with the clip path to
 
14140
        optimize the invalidated region.
 
14141
 
 
14142
        * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
 
14143
        with a NULL.
 
14144
 
 
14145
2007-10-08  Larry Ewing  <lewing@novell.com>
 
14146
 
 
14147
        * media.cpp:
 
14148
        * panel.cpp: intersect the bounds with the clip path to
 
14149
        optimize the invalidated region.
 
14150
 
 
14151
        * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
 
14152
        with a NULL.
 
14153
 
 
14154
2007-10-08  Larry Ewing  <lewing@novell.com>
 
14155
 
 
14156
        * media.cpp:
 
14157
        * panel.cpp: intersect the bounds with the clip path to
 
14158
        optimize the invalidated region.
 
14159
 
 
14160
        * shape.cpp: return 0.0 when shape_get_stroke_thickness is called
 
14161
        with a NULL.
 
14162
 
 
14163
2007-10-08  Larry Ewing  <lewing@novell.com>
 
14164
 
 
14165
        * runtime.cpp: change previous logic to drop the alpha
 
14166
        completely here until more testing can be done.
 
14167
 
 
14168
2007-10-08  Larry Ewing  <lewing@novell.com>
 
14169
 
 
14170
        * runtime.cpp: draw the background color blended over white.
 
14171
 
 
14172
2007-10-08  Larry Ewing  <lewing@novell.com>
 
14173
 
 
14174
        * media.cpp: render clip paths on media elements.
 
14175
 
 
14176
2007-10-07  Larry Ewing  <lewing@novell.com>
 
14177
 
 
14178
        * xaml.cpp:
 
14179
        * rect.cpp:
 
14180
        * point.cpp:
 
14181
        * array.cpp: use g_utf8_next_char in some places to start making
 
14182
        the parsers more utf8 safe.  Make rect/point_from_str more robust
 
14183
        against separator characters
 
14184
 
 
14185
2007-10-07  Chris Toshok  <toshok@ximian.com>
 
14186
 
 
14187
        * clock.cpp (Clock::Tick): make sure we're reversed before
 
14188
        switching to Fill if the clock is at 0 (and make sure we're not
 
14189
        reversed before switching to Fill on the other end of the
 
14190
        timespan).  Some animations were skipping directly to fill without
 
14191
        ever running.
 
14192
        (ClockGroup::Tick): don't Tick a child clock if it's about to
 
14193
        Stop.  the new tick might cause it to fill.. this needs work
 
14194
        still.
 
14195
 
 
14196
2007-10-06  Jb Evain  <jbevain@novell.com>
 
14197
 
 
14198
        * media.cpp (Image::Render): Deal with clipping.
 
14199
 
 
14200
2007-10-05  Chris Toshok  <toshok@ximian.com>
 
14201
 
 
14202
        * animation.cpp (KeyFrameComparer): fix airlines (and probably a
 
14203
        host of other keyframe usage besides).  The problem was that this
 
14204
        function was treating its args as keyframe*'s, when in actuality
 
14205
        they were keyframe**'s.  that explains the intermittent nature of
 
14206
        the bug, as well as the faulty sorting I was experiencing earlier.
 
14207
 
 
14208
        * clock.cpp (TimeManager::Tick): reinstate the throttling, yay.
 
14209
 
 
14210
2007-10-05  Chris Toshok  <toshok@ximian.com>
 
14211
 
 
14212
        * clock.cpp (TimeManager::Tick): I have no idea how this is
 
14213
        possible, but the throttle code is *completely* screwing up the
 
14214
        Airlines demo animations.
 
14215
 
 
14216
2007-10-05  Jackson Harper  <jackson@ximian.com>
 
14217
 
 
14218
        * control.cpp: need to pass this down.  Fixes dragging controls in
 
14219
        top banana.
 
14220
 
 
14221
2007-10-05  Jeffrey Stedfast  <fejj@gnome.org>
 
14222
 
 
14223
        * media.cpp (DownloaderComplete): Call mplayer->DisplayFrame() in
 
14224
        the paused case.
 
14225
        (Stop): Here too.
 
14226
        (SetValue): And here too after a Seek() (altho it won't work if
 
14227
        the media is paused).
 
14228
 
 
14229
        * mplayer.cpp (AdvanceFrame): Introduced a new bool variable,
 
14230
        update, which is true if any avcodec_decode_video() sets redraw to
 
14231
        true.
 
14232
        (DisplayFrame): New method largely based on JB's work to load the
 
14233
        current video frame into the mplayer surface.
 
14234
 
 
14235
2007-10-05  Jb Evain  <jbevain@novell.com>
 
14236
 
 
14237
        * media.cpp|h, playlist.cpp|h: Don't open the first entry
 
14238
        when a playlist entry has been stopped before switching to
 
14239
        the next one.
 
14240
 
 
14241
2007-10-04  Chris Toshok  <toshok@ximian.com>
 
14242
 
 
14243
        * clock.cpp: fix a couple of compilation warnings, and tighten up
 
14244
        the list_clocks output.
 
14245
 
 
14246
2007-10-04  Jeffrey Stedfast  <fejj@gnome.org>
 
14247
 
 
14248
        * text.cpp (SetIndices): Use g_ascii_strtod() instead of strtod()
 
14249
        since it is not locale dependant.
 
14250
 
 
14251
        * rect.cpp (rect_from_str): Same.
 
14252
 
 
14253
        * point.cpp (point_from_str): Same.
 
14254
 
 
14255
        * xaml.cpp (get_point): Fixed to update *in properly on success.
 
14256
 
 
14257
2007-10-05  Jb Evain  <jbevain@novell.com>
 
14258
 
 
14259
        * media.cpp: correctly advertise 'Opening' state of MediaElement.
 
14260
 
 
14261
2007-10-04  Jeffrey Stedfast  <fejj@novell.com>
 
14262
 
 
14263
        * xaml.cpp: (more_points_available): Simplified by looping while
 
14264
        isspace. Also, update our input pointer if we have to scan over
 
14265
        lwsp.
 
14266
        (get_point): Now returns bool based on whether it manages to
 
14267
        extract a point or not.
 
14268
        (geometry_from_str): Updated.
 
14269
 
 
14270
2007-10-04  Jackson Harper  <jackson@ximian.com>
 
14271
 
 
14272
        * xaml.cpp: Points after the initial two line points should
 
14273
        actually create new line segments, not a polyline, this fixes
 
14274
        relative points on multiple lines.
 
14275
 
 
14276
2007-10-04  Jeffrey Stedfast  <fejj@novell.com>
 
14277
 
 
14278
        * text.cpp (TextBlock): Can't use GetValue() here yet as stuff
 
14279
        hasn't completely been initialized.
 
14280
        (Glyphs::SetIndices): Do not do scaling here, this seems to be
 
14281
        font size dependant.
 
14282
 
 
14283
        * shape.cpp (DoDraw): Use 'delete []' to free dmul.
 
14284
 
 
14285
2007-10-04  Jackson Harper  <jackson@ximian.com>
 
14286
 
 
14287
        * xaml.cpp: Handle repeated bezier segments properly.
 
14288
 
 
14289
2007-10-04  Chris Toshok  <toshok@ximian.com>
 
14290
 
 
14291
        * clock.cpp: lots of little changes.  fixes clock16.xaml, and
 
14292
        therefor the score animation in dr.popper goes away properly.
 
14293
        also fixes a few other issues with FillBehavior (checked by our
 
14294
        clock xaml tests.)
 
14295
 
 
14296
2007-10-04  Jeffrey Stedfast  <fejj@gnome.org>
 
14297
 
 
14298
        * text.cpp (Glyphs::.ctor): We no longer have a TextFont member
 
14299
        variable.
 
14300
        (Layout): Use a local TextFont variable.
 
14301
        (Render): Same.
 
14302
        (text_init): Always call font_init() as Glyphs use it even when
 
14303
        text=pango is specified.
 
14304
 
 
14305
2007-10-04  Sebastien Pouliot  <sebastien@ximian.com>
 
14306
 
 
14307
        * shape.cpp|h: Shapes that uses their Width and Height must use
 
14308
        them for brush size. Fix brush rendering when used with 
 
14309
        UIElement.RenderTransform property.
 
14310
 
 
14311
2007-10-03  Chris Toshok  <toshok@ximian.com>
 
14312
 
 
14313
        * text.cpp: make Glyphs usable even when text=pango.  "usable"
 
14314
        means "don't crash" :)
 
14315
 
 
14316
2007-10-03  Chris Toshok  <toshok@ximian.com>
 
14317
 
 
14318
        * uielement.h: rename UseAA() to EnableAntiAlias().  it's
 
14319
        arguably a better name, and more importantly it's the name that
 
14320
        media.cpp/h changed it too, which broke the AA hack used in
 
14321
        dirty.cpp.
 
14322
 
 
14323
        * dirty.cpp (process_dirty_elements): rename UseAA() to
 
14324
        EnableAntiAlias().
 
14325
 
 
14326
2007-10-03  Sebastien Pouliot  <sebastien@ximian.com>
 
14327
 
 
14328
        * array.cpp: Move double array allocations back to new/delete.
 
14329
 
 
14330
2007-10-03  Jeffrey Stedfast  <fejj@novell.com>
 
14331
 
 
14332
        * font.cpp (EmSize): Removed, not needed.
 
14333
        (GetGlyphInfo): Commented out vertical glyph metrics, saves a fair
 
14334
        bit of memory that we aren't using.
 
14335
 
 
14336
        * text.cpp (TextBlock::SetFontSource): Implemented.
 
14337
        (text_init): Default StyleSimulations to None.
 
14338
 
 
14339
2007-10-03  Sebastien Pouliot  <sebastien@ximian.com>
 
14340
 
 
14341
        * brush.cpp|h: SL and Cairo defaults to different values (end 
 
14342
        color versus start color) when a gradiant is restricted to a 
 
14343
        single color (e.g. if the start and end points of a linear 
 
14344
        gradient are identical).
 
14345
 
 
14346
2007-10-03  Jeffrey Stedfast  <fejj@novell.com>
 
14347
 
 
14348
        * text.cpp: Implemented the Glyphs element.
 
14349
 
 
14350
        * font.cpp: Made GlyphMetrics and GlyphInfo structs public for use
 
14351
        with the the Glyphs element implemented in text.cpp.
 
14352
        (GetGlyphInfo): Fixes to allow loading of the index=0 glyph.
 
14353
        (GetGlyphInfoByIndex): New method.
 
14354
        (CreatePattern): If the filename is specified, don't call
 
14355
        FcFontMatch(), simply return the constructed pattern.
 
14356
 
 
14357
2007-10-02  Chris Toshok  <toshok@ximian.com>
 
14358
 
 
14359
        * clock.h, clock.cpp: remove TimeManager::current_fps, it's
 
14360
        unused.
 
14361
 
 
14362
2007-10-02  Chris Toshok  <toshok@ximian.com>
 
14363
 
 
14364
        * runtime.cpp (Surface::UpdateFullScreen): just call
 
14365
        gtk_window_fullscreen instead of setting decorations/above
 
14366
        manually.  this puts us on top of the panel.
 
14367
 
 
14368
2007-10-02  Chris Toshok  <toshok@ximian.com>
 
14369
 
 
14370
        * clock.h, clock.cpp: rip out the old stupid throttling code and
 
14371
        replace it with an exponential moving average of the delays.
 
14372
 
 
14373
2007-10-02  Chris Toshok  <toshok@ximian.com>
 
14374
 
 
14375
        * clock.h, clock.cpp: add Timeline::Get/SetSpeedRatio methods, and
 
14376
        use them to make test/xaml/clock8.xaml work.
 
14377
 
 
14378
2007-10-02  Larry Ewing  <lewing@novell.com>
 
14379
 
 
14380
        * shape.cpp (Path::ComputeBounds): use the specified width/height
 
14381
        if stretch is != StretchNone.  Fixes rendering issues with halo
 
14382
        and several other sites.
 
14383
 
 
14384
2007-10-02  Chris Toshok  <toshok@ximian.com>
 
14385
 
 
14386
        * animation.h, animation.cpp: override Stop() on AnimationClocks
 
14387
        so we can reset the property value to the baseValue stored in our
 
14388
        AnimationStorage.
 
14389
 
 
14390
        * clock.h, clock.cpp: fix the starting of stopped clockgroups when
 
14391
        there are active children (fixes the storyboards running for 1
 
14392
        tick then stopping).  Add more convoluted code in order to get the
 
14393
        expected behavior when FillBehavior=Stop on a storyboard.
 
14394
 
 
14395
2007-10-02  Chris Toshok  <toshok@ximian.com>
 
14396
 
 
14397
        * clock.h, clock.cpp: a few changes.  quit with all the delay
 
14398
        computation in the throttling code, and just deal with fps until
 
14399
        we're ready to switch to delays.  it simplifies everything a
 
14400
        bunch.  Also, narrow the type for Clock::Get/SetParent to
 
14401
        ClockGroup.  Add some rudimentary code for printing out the state
 
14402
        of all clocks (use TimeManager::Instance()->ListClocks() or
 
14403
        time_manager_list_clocks()).  Also, remove the TimeManager::Tick
 
14404
        code which started clocks.  This commit changes the way
 
14405
        storyboards are registered, so the only things in the
 
14406
        TimeManager's list should be the per-surface ClockGroups, which
 
14407
        are started in Storyboard::Begin (if they aren't already running.)
 
14408
 
 
14409
        * collection.cpp (VisualCollection::Add): this is a bug waiting to
 
14410
        happen.  Call VisualUpdate (thereby setting the child's parent and
 
14411
        initializing the transforms/opacity) before emitting Loaded on the
 
14412
        child.
 
14413
 
 
14414
        * animation.h, animation.cpp: Storyboards now add their clocks to
 
14415
        the per-surface ClockGroup.  This involves some groveling to find
 
14416
        the surface, but it's nothing we haven't seen before.  There's no
 
14417
        direct TimeManager calls here now - stopping the surface's
 
14418
        ClockGroup will stop all animations running on it.
 
14419
 
 
14420
        * runtime.h, runtime.cpp: add the per-surface ClockGroup.  all
 
14421
        storyboards attach to this, and this attaches to the TimeManager.
 
14422
        
 
14423
2007-10-02  Jackson Harper  <jackson@ximian.com>
 
14424
 
 
14425
        * media.cpp: Some default values to avoid nullref exceptions.
 
14426
 
 
14427
2007-10-02  Sebastien Pouliot  <sebastien@ximian.com>
 
14428
 
 
14429
        * xaml.cpp: Add support for 'F' in the PML parser to enable setting
 
14430
        the FillMode of Geometry objects. Removed default value set as it is 
 
14431
        identical to the default property value.
 
14432
 
 
14433
2007-10-02  Jb Evain  <jbevain@novell.com>
 
14434
 
 
14435
        * playlist.cpp|h: implemented start time for playlist entries.
 
14436
 
 
14437
2007-10-02  Jb Evain  <jbevain@novell.com>
 
14438
 
 
14439
        * playlist.cpp|h, media.cpp|h: rename MediaSource::OpenSource to OpenInternal.
 
14440
 
 
14441
2007-10-02  Larry Ewing  <lewing@novell.com>
 
14442
 
 
14443
        * uielement.cpp (UIElement::Invalidate): Only invalidate if
 
14444
        opacity is > 0.
 
14445
        * dirty.cpp (process_dirty_elements): be sure to invalidate before
 
14446
        and after the opacity change.
 
14447
 
 
14448
2007-10-02  Jb Evain  <jbevain@novell.com>
 
14449
 
 
14450
        * playlist.cpp: deal with non lowercase file exts.
 
14451
 
 
14452
2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
 
14453
 
 
14454
        * font.cpp: Reduced Glyph table memory usage.
 
14455
 
 
14456
2007-10-01  Chris Toshok  <toshok@ximian.com>
 
14457
 
 
14458
        * dirty.cpp (process_dirty_elements): remove the special if checks
 
14459
        which kept the ComputeBounds/Invalidate code from running on the
 
14460
        toplevel surface.  Canvas::ComputeBounds() does the right thing
 
14461
        for the toplevel surface, so we just trust it.  fixes invalidation
 
14462
        of root canvases.
 
14463
 
 
14464
        * panel.cpp (OnPropertyChanged): remove the ComputeBounds call.
 
14465
        (OnSubPropertyChanged): same.
 
14466
 
 
14467
2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
 
14468
 
 
14469
        * brush.cpp|h: Change SetupBrush and SetupGradient signatures to 
 
14470
        void (instead of the, now, unused bool);
 
14471
 
 
14472
2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
 
14473
 
 
14474
        * font.cpp (Layout): Made WrapWithOverflow closer to Silverlight's.
 
14475
 
 
14476
2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
 
14477
 
 
14478
        * shape.cpp|h: Remove Path::IsFilled since the property 
 
14479
        PathFigure::IsFilledProperty doesn't exists anymore.
 
14480
 
 
14481
2007-10-01  Jeffrey Stedfast  <fejj@novell.com>
 
14482
 
 
14483
        * text.cpp (LayoutPango): Fixed Wrap vs WrapWithOverflow text
 
14484
        wrapping.
 
14485
 
 
14486
        * font.cpp (Layout): Fixed the TextWrapping="Wrap" case.
 
14487
 
 
14488
2007-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
14489
 
 
14490
        * runtime.cpp: Only show the server as the url in the fullscreen
 
14491
        message.
 
14492
 
 
14493
2007-10-01  Sebastien Pouliot  <sebastien@ximian.com>
 
14494
 
 
14495
        * panel.cpp: Call ComputeBounds before invalidating on Background 
 
14496
        changes. Fix parts of #327691 (like BubbleMark-CLR and Monotone).
 
14497
 
 
14498
2007-10-01  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
14499
 
 
14500
        * fullscreen.h, fullscreen.xaml: Added.
 
14501
        * text.h: Make GetActualHeight and GetActualWidth public.
 
14502
        * runtime.h, runtime.cpp: Added IsTopLevel (since there can be two toplevel
 
14503
          objects now: the fullscreen message and the toplevle canvas),
 
14504
          SetSourceLocation and Show/HideFullScreenMessage.
 
14505
        * dirty.cpp: Use Surface::IsTopLevel instead of comparing directly agains
 
14506
          Surface::GetTopLevel.
 
14507
 
 
14508
2007-09-30  Zoltan Varga  <vargaz@gmail.com>
 
14509
 
 
14510
        * xaml.cpp (CreateManagedObject): Move the call to GetMapping ()
 
14511
        to managed code.
 
14512
 
 
14513
        * text.cpp (text_destroy): Avoid crash if default_foreground_brush
 
14514
        is not set.
 
14515
 
 
14516
2007-09-28  Chris Toshok  <toshok@ximian.com>
 
14517
 
 
14518
        * Makefile.am: remove the XRANDR conditional here.  it's #defined
 
14519
        in config.h now.
 
14520
 
 
14521
2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
 
14522
 
 
14523
        * font.cpp (CreatePattern): If a filename has been specified for
 
14524
        loading a font, don't set family values. Also, call
 
14525
        FcDefaultSubstitute() on the pattern before trying to find a
 
14526
        match.
 
14527
 
 
14528
2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
 
14529
 
 
14530
        Optimization hack that saves time by not recalculating the layout
 
14531
        when the foreground brush changes (since we'd have exactly the
 
14532
        same layout).
 
14533
 
 
14534
        * font.cpp (TextRun): Now takes the address of the brush than the
 
14535
        brush itself, so that when brushes change on the Inline, we get
 
14536
        the brush change for free.
 
14537
 
 
14538
        * text.cpp (LayoutSilverlight): Pass the addresses of the
 
14539
        foreground brushes to TextRun ctor and don't bother with the
 
14540
        default foreground brush here, save that for ::Paint-time.
 
14541
        (LayoutPango): Same idea as LayoutSilverlight().
 
14542
        (Paint): Get the default foreground and pass that off to the
 
14543
        pango/silverlight text renderers.
 
14544
        (OnPropertyChanged): Don't force a re-layout if the property that
 
14545
        changed was the TextBlock::ForegroundProperty.
 
14546
        (OnCollectionChanged): Same (but for Inline::ForegroundProperty).
 
14547
 
 
14548
        * mango.cpp (mango_renderer_show_layout): Now takes a default_fg
 
14549
        argument so that we don't have to specify it in the creation of
 
14550
        our layout attributes (this saving us a re-layout when a brush
 
14551
        changes).
 
14552
        (mango_attr_foreground_new): Now takes the address of the brush
 
14553
        rather than the brush itself, so that when brushes change on the
 
14554
        Inline, we get the brush change for free.
 
14555
 
 
14556
2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
 
14557
 
 
14558
        * text.cpp (TextBlock): We cannot re-use the
 
14559
        default_foreground_brush here because we cannot allow it to be
 
14560
        altered in any way.
 
14561
 
 
14562
2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
 
14563
 
 
14564
        * font.cpp (TextFont::IsScalable): New method.
 
14565
        (TextFont::Path): Paths a glyph but does not stroke or fill. Only
 
14566
        available if the font is scalable.
 
14567
        (TextLayout::Render): Cache each segment's cairo_path_t so that
 
14568
        future renders do not have to do it on a glyph-by-glyph basis
 
14569
        (avoids possible glyph cache misses). May also save time by doing
 
14570
        a single fill rather than a fill per glyph.
 
14571
 
 
14572
2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
 
14573
 
 
14574
        * font.cpp (RenderGlyphBitmap): No longer takes a TextDecorations
 
14575
        argument.
 
14576
        (RenderGlyphPath): Same.
 
14577
        (UnderlinePosition): New method.
 
14578
        (UnderlineThickness): New method.
 
14579
        (TextLayout::Render): Draw our underline here in 1 stroke (haha, I
 
14580
        made a funny).
 
14581
 
 
14582
2007-09-28  Jeffrey Stedfast  <fejj@novell.com>
 
14583
 
 
14584
        * text.cpp (LayoutSilverlight): LineBreaks don't really care about
 
14585
        TextDecorations or Foreground properties.
 
14586
 
 
14587
        * font.cpp (TextRun::~TextRun): unref the font.
 
14588
        (TextSegment): now references the original TextRun instead of
 
14589
        copying pointers/values.
 
14590
        (TextLayout::Render): Updated for above change.
 
14591
 
 
14592
2007-09-28  Zoltan Varga  <vargaz@gmail.com>
 
14593
 
 
14594
        * xaml.cpp (SetNameAttribute): New callback to enable managed code to process
 
14595
        x:Name attributes.
 
14596
        (LoadCode): Change return type to bool to indicate a loading error.
 
14597
 
 
14598
2007-09-28  Jeffrey Stedfast  <fejj@gnome.org>
 
14599
 
 
14600
        * media.cpp (SingleMedia::~SingleMedia): Close the media stream.
 
14601
        (MediaElement::AdvanceFrame): If mplayer->AdvanceFrame() returns
 
14602
        false, then it signifies MediaEnded, no need to explicitly check.
 
14603
        (MediaElement::SetSource): Delete the current source here.
 
14604
        (MediaElement::~MediaElement): C++ `delete' operator doesn't
 
14605
        handle freeing NULL pointers.
 
14606
        (MediaElement::DownloaderComplete): No need to delete the source
 
14607
        here, done in SetSource() instead.
 
14608
 
 
14609
        * font.cpp: Created my own GlyphMetrics struct which uses doubles
 
14610
        instead of ints for more accurate layout/rendering calculations.
 
14611
        (Layout): When comparing to max_width, add 1.0 to account for
 
14612
        rounding errors/hinting. Add 1.0 to the Actual/BoundingBox
 
14613
        width/height values for the same reason.
 
14614
 
 
14615
2007-09-28  Sebastien Pouliot  <sebastien@ximian.com>
 
14616
 
 
14617
        * xaml.cpp: Free locally allocated Points inside get_point_array.
 
14618
 
 
14619
2007-09-28  Jeffrey Stedfast  <fejj@gnome.org>
 
14620
 
 
14621
        * font.cpp (GetGlyphInfo): Don't cache the bitmap if we're caching
 
14622
        the path.
 
14623
 
 
14624
2007-09-28  Sebastien Pouliot  <sebastien@ximian.com>
 
14625
 
 
14626
        * shape.cpp: ComputeBoundsSlow is no more so we can re-enable the
 
14627
        thickness == 0 optimization.
 
14628
 
 
14629
2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
 
14630
 
 
14631
        * xaml.cpp (flush_char_data): g_strchomp() the cdata (as
 
14632
        Silverlight does).
 
14633
 
 
14634
        * text.cpp: Merged with custom text layout code - layout algorithm
 
14635
        is chosen at runtime_init() via flags or environment variable.
 
14636
 
 
14637
2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
 
14638
 
 
14639
        * runtime.cpp (runtime_init): Don't check pango version info,
 
14640
        we're just gonna statically link in pango (and/or do
 
14641
        configure-time checks if the user decides to link to a system
 
14642
        pango). Implemented some preliminary environment variable parsing
 
14643
        action to decide if the user wnts to use ffmpeg vs ms codecs,
 
14644
        pango vs my "silverlight" text layout engine, etc.
 
14645
 
 
14646
2007-09-27  Jeffrey Stedfast  <fejj@novell.com>
 
14647
 
 
14648
        * runtime.cpp (runtime_init): Now takes a flags argument for
 
14649
        enabling/disabling features. If RUNTIME_INIT_BROWSER is not set,
 
14650
        then make sure pango is recent enough (if not, print a warning
 
14651
        akin to the cairo warning).
 
14652
 
 
14653
2007-09-27  Sebastien Pouliot  <sebastien@ximian.com>
 
14654
 
 
14655
        * array.cpp: Fix issues on double parsing, including bug #328915 and
 
14656
        test cases in /moon/test/xaml/points-torture.xaml
 
14657
 
 
14658
2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
14659
 
 
14660
        * animation.cpp: Add a few null checks.
 
14661
 
 
14662
2007-09-27  Larry Ewing  <lewing@novell.com>
 
14663
 
 
14664
        * media.cpp: Don't mark our download progress as 100% until we've
 
14665
        been notified by the downloader that it is complete.  Some
 
14666
        programs check download progress to decide when they can safely
 
14667
        poke at the media element properties.
 
14668
        * downloader.cpp: set the final downloader progress to 1.0 not 100.
 
14669
 
 
14670
2007-09-27  Sebastien Pouliot  <sebastien@ximian.com>
 
14671
 
 
14672
        * xaml.cpp: Don't freak out if <?xml ... ?> isn't on the first 
 
14673
        line. Fix bug #328907.
 
14674
 
 
14675
2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
14676
 
 
14677
        * control.h, control.cpp: Added control_initialize_from_xaml_callbacks, and
 
14678
          change InitializeFromXaml to take a XamlLoader argument.
 
14679
 
 
14680
2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
14681
 
 
14682
        * xaml.cpp: More unrefs.
 
14683
 
 
14684
2007-09-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
14685
 
 
14686
        * text.cpp: Unref a few newly created objects.
 
14687
        * control.cpp: Remove an unnecessary ref.
 
14688
 
 
14689
2007-09-26  Zoltan Varga  <vargaz@gmail.com>
 
14690
 
 
14691
        * text.cpp (SetValue): Implement proper handling of the Text property.
 
14692
        (GetValue): Ditto.
 
14693
        (OnPropertyChanged): Force a relayout when the foreground property changes.
 
14694
        (Layout): Remove the laying out of the contents of the Text property, since the
 
14695
        text is now contained in the first inline.
 
14696
        
 
14697
2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
 
14698
 
 
14699
        * font.cpp (Layout): Include the space char on the line before
 
14700
        wrapping, this is noticable when TextDecorations="Underline" is
 
14701
        enabled.
 
14702
        (TextLayout::RenderGlyphBitmap): Moved to TextFont class.
 
14703
        (TextLayout::RenderGlyphPath): Same. Also implemented underlining.
 
14704
        (TextFont::Render): Implemented.
 
14705
 
 
14706
2007-09-26  Sebastien Pouliot  <sebastien@ximian.com>
 
14707
 
 
14708
        * geometry.h: PathFigure::IsFilledProperty doesn't exist anymore
 
14709
        (and was removed elsewhere, except here);
 
14710
 
 
14711
2007-09-26  Chris Toshok  <toshok@ximian.com>
 
14712
 
 
14713
        * clock.cpp (TimeManager::Tick): a few changes.  first and
 
14714
        foremost, fix the signs on the FPS_ADJUSTMENTS.  oops.  also, add
 
14715
        a buffer of 50ms on either side of the timeout before we consider
 
14716
        the Tick either slow or fast.  Increase the number of out-of-line
 
14717
        ticks we need and decrease the fps adjustment.
 
14718
 
 
14719
2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
 
14720
 
 
14721
        * text.cpp (OnCollectionChanged): Needs to call Invalidate().
 
14722
 
 
14723
2007-09-26  Chris Toshok  <toshok@ximian.com>
 
14724
 
 
14725
        * clock.cpp: initialize the min_timeout based on a good default
 
14726
        max fps (60 in our case).  Also, calculate the fps adjustments in
 
14727
        a nicer way.
 
14728
 
 
14729
        * runtime.cpp: remove the non-xrandr SetMaximumRefreshRate call -
 
14730
        it's handled by TimeManager's default.
 
14731
 
 
14732
2007-09-26  Jeffrey Stedfast  <fejj@novell.com>
 
14733
 
 
14734
        * font.cpp: A bunch of fixes/changes to mimic Microsoft's
 
14735
        Silverlight TextBlock layout logic.
 
14736
 
 
14737
2007-09-26  Andrew Jorgensen  <ajorgensen@novell.com>
 
14738
 
 
14739
        * Makefile.am: Added missing files for dist tarball
 
14740
 
 
14741
2007-09-26  Chris Toshok  <toshok@ximian.com>
 
14742
 
 
14743
        * clock.h, clock.cpp: add some very naive, rather lame fps tuning.
 
14744
        we just adjust fps by a fixed amount (4fps) either up or down, if
 
14745
        a certain number (5, by default) of ticks in a row take either
 
14746
        less or more time to complete (respectively), than the current
 
14747
        timeout.
 
14748
 
 
14749
2007-09-26  Sebastien Pouliot  <sebastien@ximian.com> 
 
14750
 
 
14751
        * moon-path.c: Fix typos.
 
14752
        * shape.h: Remove old ComputeBounds[Slow|Fast] from header.
 
14753
 
 
14754
2007-09-26  Sebastien Pouliot  <sebastien@ximian.com>
 
14755
 
 
14756
        * shape.h|cpp: Remove Line (direct path manipulation) hack.
 
14757
 
 
14758
2007-09-26  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
14759
 
 
14760
        * xaml.cpp: Unref collections and matrix transforms we create.
 
14761
 
 
14762
2007-09-25  Sebastien Pouliot  <sebastien@ximian.com>
 
14763
 
 
14764
        * geometry.h|cpp, shape.cpp: Implement GetBounds without a cairo 
 
14765
        context.
 
14766
 
 
14767
2007-09-26  Zoltan Varga  <vargaz@gmail.com>
 
14768
 
 
14769
        * text.cpp (TextBlock): Set an empty string as a default Text property.
 
14770
        (InsideObject): Implement this for text blocks.
 
14771
 
 
14772
2007-09-25  Sebastien Pouliot  <sebastien@ximian.com>
 
14773
 
 
14774
        * font.cpp: Fix warning.
 
14775
 
 
14776
2007-09-25  Larry Ewing  <lewing@novell.com>
 
14777
 
 
14778
        * brush.cpp|h: add image_brush_create_similar to simplify creating
 
14779
        similar surfaces.  Use it where appropriate.
 
14780
 
 
14781
        * media.ccp: use image_brush_create_similar where possible. In
 
14782
        MediaElement::Render draw with opacity directly rather than
 
14783
        creating a temporary surface for every frame. Rework image opacity
 
14784
        cache so that we don't have to recreate the surface every time. 
 
14785
 
 
14786
2007-09-25  Jb Evain  <jbevain@novell.com>
 
14787
 
 
14788
        * media.cpp|h: let the MediaElement be the only one to trigger
 
14789
        its own events, terminate its friendship with MediaBase.
 
14790
 
 
14791
2007-09-25  Jb Evain  <jbevain@novell.com>
 
14792
 
 
14793
        * playlist.cpp|h: trigger a parsing error when no href attribute
 
14794
        is found for base and ref elements.
 
14795
 
 
14796
2007-09-25  Jb Evain  <jbevain@novell.com>
 
14797
 
 
14798
        * playlist.cpp|h, media.cpp: Auto play for playlists.
 
14799
 
 
14800
2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
 
14801
 
 
14802
        * font.cpp (Render): Fixed some y1 offset logic that didn't amke
 
14803
        any sense (and was wrong afaict anyway). We now render exactly
 
14804
        like Microsoft Silverlight.
 
14805
 
 
14806
2007-09-24  Jb Evain  <jbevain@novell.com>
 
14807
 
 
14808
        * playlist.cpp: close the previous source before playing
 
14809
        the next one.
 
14810
 
 
14811
2007-09-24  Jb Evain  <jbevain@novell.com>
 
14812
 
 
14813
        * mplayer.cpp: on Close, reset height and width to zero.
 
14814
 
 
14815
2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
 
14816
 
 
14817
        * media.cpp (OnPropertyChanged): Set recalculate_matrix to true if
 
14818
        either the NaturalWidth or NaturalHeight changes.
 
14819
 
 
14820
2007-09-24  Jb Evain  <jbevain@novell.com>
 
14821
 
 
14822
        * media.cpp|h, playlist.cpp|h: refactor MediaSource so that
 
14823
        only a SingleMedia deals with the MediaPlay directly. A playlist
 
14824
        being a collection of either other playlist or singlemedias,
 
14825
        playing one at a time.
 
14826
 
 
14827
2007-09-24  Jb Evain  <jbevain@novell.com>
 
14828
 
 
14829
        * media.cpp, playlist.cpp: let the Media Sources change
 
14830
        the state of the MediaElement (Playing/Paused/Stopped).
 
14831
 
 
14832
2007-09-24  Jb Evain  <jbevain@novell.com>
 
14833
 
 
14834
        * media.h: let the media source change the properties
 
14835
        of the media element. Make MediaSource friend of MediaElement
 
14836
        to do so.
 
14837
        * playlist.h, playlist.cpp: adjus to the changes in MediaSource.
 
14838
 
 
14839
2007-09-24  Jeffrey Stedfast  <fejj@novell.com>
 
14840
 
 
14841
        * font.cpp: Added kerning.
 
14842
 
 
14843
        * mplayer.cpp: Added mutex locking for the target_pts variable.
 
14844
 
 
14845
2007-09-24  Jb Evain  <jbevain@novell.com>
 
14846
 
 
14847
        * playlist.cpp: Playlist::IsPlaylistFile: return false
 
14848
        on null argument.
 
14849
 
 
14850
2007-09-23  Jb Evain  <jbevain@novell.com>
 
14851
 
 
14852
        * playlist.cpp: A base element stores the base in
 
14853
        a href attribute, not in its body.
 
14854
 
 
14855
2007-09-22  Chris Toshok  <toshok@ximian.com>
 
14856
 
 
14857
        * Makefile.am (USE_XRANDR): define USE_XRANDR.
 
14858
 
 
14859
        * runtime.cpp (Surface::realized_callback): get the RANDR screen
 
14860
        config info, and set the TimeManager's max refresh to match the
 
14861
        screen's .
 
14862
 
 
14863
        * clock.h, clock.cpp (TimeManager::SetMaximumRefreshRate): new
 
14864
        method.
 
14865
 
 
14866
2007-09-22  Zoltan Varga  <vargaz@gmail.com>
 
14867
 
 
14868
        * xaml.h xaml.cpp: Add support for parsing x:Code elements and
 
14869
        passing them to managed code.
 
14870
 
 
14871
2007-09-21  Jeffrey Stedfast  <fejj@gnome.org>
 
14872
 
 
14873
        * mplayer.cpp (audio_play): Slightly optimized the volume
 
14874
        adjustment loop.
 
14875
 
 
14876
        * font.cpp (Layout): Keep track of the line ascend and pad our
 
14877
        extents with an extra pixel on all sides to account for hinting.
 
14878
        (Render): Starts rendering glyphs 1 pixel in. Also modified the
 
14879
        logic such that we didn't have to treat path/bitmap glyphs
 
14880
        differently.
 
14881
 
 
14882
2007-09-21  Jeffrey Stedfast  <fejj@novell.com>
 
14883
 
 
14884
        * font.cpp: Now handles scalable fonts by rendering their outline
 
14885
        paths rather than rendering bitmaps.
 
14886
 
 
14887
        * moon-path.c (moon_path_move_to): Resize the path auto-magically
 
14888
        if we don't have enough room. Same for all of the other
 
14889
        line_to/curve_to/etc.
 
14890
 
 
14891
2007-09-21  Jeffrey Stedfast  <fejj@gnome.org>
 
14892
 
 
14893
        * font.cpp (SetMaxWidth): Oops, set max_width = max (rather than
 
14894
        the old width extents).
 
14895
        (Layout): When breaking a long line, the new line height should
 
14896
        not be set to 0 (duh), it should be set to the font height.
 
14897
 
 
14898
2007-09-21  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
14899
 
 
14900
        * xaml.cpp, xaml.h: Added a XamlLoaderCalbacks structure that contains all
 
14901
          the callbacks XamlLoader needs. Added xaml_loader_set_callbacks for
 
14902
          managed code to set them. Keep track of mappings in native code, call
 
14903
          into managed code only if a mapping is not found here. Keep a list of
 
14904
          missing assemblies, allows managed code to request downloading of
 
14905
          several assemblies before trying to parse xaml again. Added
 
14906
          XamlLoader::CreateManagedObject, tries to parse xmlns/name, if
 
14907
          successful (and only then), requests a vm to be loaded, before calling
 
14908
          into managed code to actually create the managed object.
 
14909
 
 
14910
2007-09-20  Chris Toshok  <toshok@ximian.com>
 
14911
 
 
14912
        * type.cpp, type.cpp.in (types_init_register_events): register the
 
14913
        LostFocus/GotFocus events.
 
14914
 
 
14915
        * uielement.h: add LostFocusEvent/GotFocusEvent.
 
14916
 
 
14917
        * uielement.cpp (uielement_init): lookup LostFocus/GotFocus events.
 
14918
 
 
14919
2007-09-20  Jeffrey Stedfast  <fejj@gnome.org>
 
14920
 
 
14921
        * text.cpp (InsideObject): Removed.
 
14922
 
 
14923
        * font.cpp (Layout): Add the horiBearingX value of the last glyph
 
14924
        in each line to the width of said line.
 
14925
        (RenderGlyphBitmap): Cache the surface and use it as a mask when
 
14926
        filling so that the true source pattern shows thru.
 
14927
 
 
14928
2007-09-20  Jeffrey Stedfast  <fejj@novell.com>
 
14929
 
 
14930
        * mango.cpp (mango_renderer_draw_glyphs): Cache the paths that we
 
14931
        render.
 
14932
        (mango_renderer_show_layout): Instead of having pango render the
 
14933
        text, do it ourselves using our cached paths from the previous
 
14934
        call to mango_renderer_layout_path().
 
14935
        (mango_renderer_layout_path): Clear our cache paths.
 
14936
 
 
14937
2007-09-20  Jeffrey Stedfast  <fejj@novell.com>
 
14938
 
 
14939
        * text.cpp (OnPropertyChanged): Don't dirty actual width/height on
 
14940
        foreground changes.
 
14941
        (OnSubPropertyChanged): Same.
 
14942
 
 
14943
        * font.cpp (GetFont): No longer need to pass the size to
 
14944
        TextFont::Load().
 
14945
        (TextFont::Load): No longer needs the size argument.
 
14946
        (TextFont::.ctor): We just get the size from the pattern now.
 
14947
        (TextFontDescription::CreatePattern): Call FcFontMatch() on our
 
14948
        generated font pattern here instead of having our lower-level
 
14949
        TextFont::.ctor do it.
 
14950
        (TextFont::Ascender): Use the size metrics so that this always
 
14951
        works properly (at least it seems to).
 
14952
        (TextFont::Height): Same.
 
14953
        (TextLayout::Layout): Changed line-height logic a bit for
 
14954
        LineBreaks.
 
14955
 
 
14956
2007-09-20  Chris Toshok  <toshok@ximian.com>
 
14957
 
 
14958
        * type.cpp.in, type.cpp (LookupEvent): fix this to check in parent
 
14959
        type event hashes as well if we don't find it in ours.
 
14960
 
 
14961
2007-09-20  Sebastien Pouliot  <sebastien@ximian.com>
 
14962
 
 
14963
        * brush.cpp: Implemented MappingMode for LinearGradientBrush.
 
14964
        Buttons from Dr Popper are now rendered correctly.
 
14965
 
 
14966
2007-09-20  Chris Toshok  <toshok@ximian.com>
 
14967
 
 
14968
        * typegen.cs (GenerateTypeCpp): add a call to
 
14969
        types_init_register_events.
 
14970
 
 
14971
        * type.h.in, type.cpp.in: add Type::RegisterEvent,
 
14972
        Type::LookupEvent, Type::GetEventCount, and Type::GetEventBase.
 
14973
 
 
14974
        * type.cpp.in: add types_init_register_events, which registers all
 
14975
        the events we care about for all the types.  we do it here to
 
14976
        guarantee that events have been registered by the time any
 
14977
        instance code is run for any type.
 
14978
        
 
14979
        * dependencyobject.h, dependencyobject.cpp: remove the event
 
14980
        registration from EventObject, it's moving to Type.  so the Type
 
14981
        will contain the name to id hash, and the EventObject will only
 
14982
        contain an array of GSLists, where the index into that array is
 
14983
        the event's id.
 
14984
        
 
14985
        * clock.cpp (clock_init): lookup the static events here.
 
14986
 
 
14987
        * runtime.cpp (runtime_init): same.
 
14988
 
 
14989
        * animation.cpp (animation_init): same.
 
14990
 
 
14991
        * downloader.cpp (downloader_init): same.
 
14992
 
 
14993
        * uielement.cpp (uielement_init): same.
 
14994
 
 
14995
        * src/clock.h, src/uielement.h, src/media.h, src/animation.h,
 
14996
        src/type.h, src/runtime.h, src/downloader.h: events are static to
 
14997
        the classes now, instead of being per-instance.
 
14998
 
 
14999
        * src/types.h src/types.cpp: regen.
 
15000
        
 
15001
2007-09-20  Sebastien Pouliot  <sebastien@ximian.com> 
 
15002
 
 
15003
        * geometry.cpp: Avoid re-allocating path memory when possible.
 
15004
        * moon-path.c|h: Added documentation and new moon_path_renew and 
 
15005
        moon_path_clear functions to reduce memory re-allocations.
 
15006
        * shape.cpp|h: Avoid re-allocating path memory when possible.
 
15007
 
 
15008
2007-09-20  Sebastien Pouliot  <sebastien@ximian.com>
 
15009
 
 
15010
        * brush.cpp|h: Implemented MappingMode for RadialGradientBrush.
 
15011
        Bubbles from bubblemark.com are now rendered correctly.
 
15012
 
 
15013
2007-09-19  Sebastien Pouliot  <sebastien@ximian.com>
 
15014
 
 
15015
        * shape.cpp|h: Remove dead code.
 
15016
 
 
15017
2007-09-19  Jeffrey Stedfast  <fejj@novell.com>
 
15018
 
 
15019
        * font.cpp: More fixes to make stuff build/work (more or less).
 
15020
 
 
15021
        * text.patch: Patch to make text layout/rendering use my new code
 
15022
        rather than pango.
 
15023
 
 
15024
2007-09-19  Chris Toshok  <toshok@ximian.com>
 
15025
 
 
15026
        * text.cpp (TextBlock::Layout): don't insert multiple fg_attrs.
 
15027
 
 
15028
2007-09-19  Sebastien Pouliot  <sebastien@ximian.com>
 
15029
 
 
15030
        * moon-path.c|h: New. Create simple or complex paths without a
 
15031
        (expensive) cairo_context_t using an API similar to cairo.
 
15032
        * geometry.cpp|h: Use moon_path functions. Added (still inactive)
 
15033
        code to compute bounds for paths.
 
15034
        * shape.cpp|h: Use moon_path functions. Avoid Cairo extents API 
 
15035
        for Polylines and Polygons. Still not perfect for large thickness 
 
15036
        and steep angles but 8-10x faster and better (no artifact left) 
 
15037
        than previous code, see new xaml animation tests).
 
15038
        * rsvg.cpp|h: Adapt to use moon-path functions.
 
15039
        * Makefile.am: Add moon-path.c and moon-path.h to the build.
 
15040
 
 
15041
2007-09-19  Jeffrey Stedfast  <fejj@gnome.org>
 
15042
 
 
15043
        * font.cpp: More hackery.
 
15044
 
 
15045
2007-09-19  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15046
 
 
15047
        * panel.cpp: Add a null check.
 
15048
        * xaml.cpp: Created a list that contains most created elements in order to
 
15049
          unref them once parsing is finished (we need to unref all created
 
15050
          elements except the top one, but the parser callback functions don't
 
15051
          know which is the top one, so we delay the unrefing until the end). If
 
15052
          parsing is done manually (*_from_str, etc), just use unref.
 
15053
        * text.h, text.cpp: Add text_destroy to properly destroy the default
 
15054
          foreground brush on shutdown.
 
15055
        * clock.cpp: When we allocate a clock, unref it after adding it to the
 
15056
          group.
 
15057
        * collection.h: Store the parent in the Node, since we can't call
 
15058
          obj->GetParent () in a destructor (it will walk up the hierarchy using
 
15059
          the type system, but since the parent can be in the destructor, the type
 
15060
          system isn't reliable anymore).
 
15061
        * mango.h, mango.cpp: MangoAttrForeground: hold a reference to the
 
15062
          foreground brush, not to the element. Add a mango_renderer_get_type_safe
 
15063
          that can reinitialize static variables (after a libmoon reload) from
 
15064
          glib.
 
15065
        * geometry.cpp, transform.cpp, brush.cpp: Use Value::CreateUnref for default
 
15066
          values.
 
15067
        * collection.cpp: Store the parent in the Node, since we can't call
 
15068
          obj->GetParent () in a destructor (it will walk up the hierarchy using
 
15069
          the type system, but since the parent can be in the destructor itself,
 
15070
          the type system isn't reliable anymore).
 
15071
        * dependencyobject.cpp: Attachee: don't hold a ref to the container anymore.
 
15072
        * media.cpp: Sprinkle a few unrefs here and there.
 
15073
        * animation.cpp: Don't ref root_clock, CreateClock already gives us a ref.
 
15074
          Add a null check in the Storyboard destructor. Use Value::CreateUnref
 
15075
          for default values.
 
15076
        * runtime.cpp: Attach: Don't attach a null element. Call text_destroy on
 
15077
          shutdown.
 
15078
 
 
15079
2007-09-18  Jeffrey Stedfast  <fejj@gnome.org>
 
15080
 
 
15081
        Continued fixes to go along with Rolf's other TextBlock leak
 
15082
        fixes.
 
15083
 
 
15084
        * mango.cpp (mango_attr_foreground_new): Don't ref the fg.
 
15085
        (mango_attr_foreground_destroy): Don't unref the fg.
 
15086
 
 
15087
        * text.cpp (default_foreground): Make return a static reference.
 
15088
        (Layout): Don't ref the fg.
 
15089
 
 
15090
2007-09-17  Jeffrey Stedfast  <fejj@gnome.org>
 
15091
 
 
15092
        * font.cpp: more progress on text layout.
 
15093
 
 
15094
2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15095
 
 
15096
        * xaml.cpp, xaml.h: Move callbacks from PluginXamlLoader back to XamlLoader.
 
15097
 
 
15098
2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15099
 
 
15100
        * xaml.cpp: Fix warning.
 
15101
 
 
15102
2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15103
 
 
15104
        [Removed mono dependency for 1.0 moonlight applications. 
 
15105
        We now have a native [Plugin]XamlLoader that is the native counterpart of the 
 
15106
        managed Loader object, the native loader handles xaml loading when the 
 
15107
        mono runtime isn't loaded.]
 
15108
 
 
15109
        * xaml.cpp, xaml.h: Added a XamlLoader class that replaces the callbacks.
 
15110
          Changed xaml_create_from* to take a loader (XamlLoader*) argument. This
 
15111
          was necessary because the callback handler isn't given enough
 
15112
          information (it needs to know the plugin, but this information is not
 
15113
          passed on), and it now also avoids the potential problem of overwriting
 
15114
          static callbacks when several plugins are created simultanously.
 
15115
        * control.cpp, demo.cpp: Update according to API change.
 
15116
 
 
15117
2007-09-17  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15118
 
 
15119
        * panel.cpp, dependencyobject.cpp, dirty.cpp: Add some null checks.
 
15120
 
 
15121
2007-09-14  Jeffrey Stedfast  <fejj@novell.com>
 
15122
 
 
15123
        * font.cpp|h: New font/text rendering engine (e.g. replacement for
 
15124
        pango). Nowhere near complete yet.
 
15125
 
 
15126
2007-09-14  Miguel de Icaza  <miguel@novell.com>
 
15127
 
 
15128
        * media.cpp (Stop, Pause): Do not dereference source if it is not
 
15129
        yet set (TopBanana does this).
 
15130
 
 
15131
2007-09-13  Jb Evain  <jbevain@novell.com>
 
15132
 
 
15133
        * media.cpp|h, playlist.cpp|h: Work on playlist integration.
 
15134
 
 
15135
2007-09-10  Jeffrey Stedfast  <fejj@novell.com>
 
15136
 
 
15137
        * mplayer.cpp (StopThreads): When resetting current_pts and
 
15138
        target_pts, use the audio (or video) initial_pts value rather than
 
15139
        0 since they are meant to be absolute pts values, not
 
15140
        relative. This fixes a bug in the halo3 site where pressing Stop
 
15141
        would cause the current time string to become "59:55" when it
 
15142
        should have been "00:00".
 
15143
 
 
15144
        * media.cpp (OnPropertyChanged): Only Invalidate() on
 
15145
        PositionProperty changes if we have video content to render. Fixes
 
15146
        bug #82474.
 
15147
 
 
15148
        * mplayer.cpp (HasVideo): New method that returns true if the
 
15149
        media source has video content.
 
15150
 
 
15151
2007-09-10  Jeffrey Stedfast  <fejj@gnome.org>
 
15152
 
 
15153
        * mplayer.cpp (Duration): Only use audio duration as the defacto
 
15154
        duration if we've got a valid pcm handle.
 
15155
 
 
15156
2007-09-10  Chris Toshok  <toshok@ximian.com>
 
15157
 
 
15158
        * animation.cpp (HookupAnimationsRecurse): make the message
 
15159
        involving failure to hookup a property more verbose.  Looks like
 
15160
        MS is treating a TranslateTransform as a ScaleTransform in popfly
 
15161
        - that is, they're trying to animate ScaleX on a
 
15162
        TranslateTransform (which is oddly enough named "scale".)
 
15163
 
 
15164
        * media.cpp: Emit ImageFailedEvent if we failed to load the image.
 
15165
        Remove that damn TODO printf.
 
15166
 
 
15167
        * media.h: add ImageFailedEvent to Image, and change signature of
 
15168
        CreateSurface so we can return false if there's an error.
 
15169
 
 
15170
        * xaml.cpp (parser_error): use the new ParserErrorEventArgs ctor.
 
15171
 
 
15172
        * error.h: make these classes instead of structs, and also make
 
15173
        them copy/free the type specific strings.  it'll result in more
 
15174
        allocations but it cleans up the code using them.
 
15175
 
 
15176
2007-09-07  Sebastien Pouliot  <sebastien@ximian.com>
 
15177
 
 
15178
        * shape.cpp: Fixed Polygon "special" case when it only has to draw
 
15179
        a line. Fixed Line::ComputeBound (Shape::ComputeBoundFast wasn't 
 
15180
        working) which is now 10x faster than calling ComputeBoundSlow (the
 
15181
        working alternative). Started to reuse the same concept for Polyline
 
15182
        and Polygon but the (#def-out) code doesn't yet handle line joins 
 
15183
        correctly (so it still use the correct ComputeBoundSlow);
 
15184
 
 
15185
2007-09-06  Chris Toshok  <toshok@ximian.com>
 
15186
 
 
15187
        * dirty.cpp (process_dirty_elements): some guards against unioning
 
15188
        an empty rectangle.
 
15189
 
 
15190
2007-09-06  Chris Toshok  <toshok@ximian.com>
 
15191
 
 
15192
        * runtime.cpp (Surface::Invalidate): only invalidate the actual
 
15193
        rectangle.  The +1/-2 stuff is done in dirty.cpp, if it needs to
 
15194
        be.
 
15195
 
 
15196
        * rect.h (Rect::Floor): drop fractional part of all values.
 
15197
 
 
15198
        * media.h,media.cpp: we cheat and turn off AA on MediaElements
 
15199
        when they aren't rotated or skewed.
 
15200
 
 
15201
        * uielement.h, uielement.cpp: we need to keep track of 2
 
15202
        dirty_rects.  one for the element itself, which is GrowBy(1)'ed in
 
15203
        dirty.cpp if the child uses AA, and one for children who have
 
15204
        passed their invalidation rect up the tree (we don't grow this
 
15205
        one).  Also, add the default UseAA method, which returns true, and
 
15206
        the ChildInvalidated method, which mirrors Invalidate(Rect r) but
 
15207
        uses the children_dirt_rect.
 
15208
 
 
15209
        * panel.h, panel.cpp (Panel::~Panel): clear our children
 
15210
        collection.
 
15211
        (Panel::FindStartingElement): the meat of the optimization hack -
 
15212
        we determine if we can skip parts of the tree if the expose
 
15213
        rectangle exists completely within the bounds of an opaque
 
15214
        element, unrotated, unskewed element.
 
15215
        
 
15216
        * dirty.cpp (process_dirty_elements): handle
 
15217
        item->children_dirty_rect as well as item->dirty_rect.  Also, Grow
 
15218
        the item's dirty_rect by 1 before combining them, if the item uses
 
15219
        AA.
 
15220
 
 
15221
2007-09-05  Jb Evain  <jbevain@novell.com>
 
15222
 
 
15223
        * playlist.cpp: the asx format is case insensitive, parse it
 
15224
        accordingly.
 
15225
 
 
15226
2007-09-05  Sebastien Pouliot  <sebastien@ximian.com>
 
15227
 
 
15228
        * animation.h: Make KeySpline::GetObjectType virtual.
 
15229
 
 
15230
2007-09-05  Jb Evain  <jbevain@novell.com>
 
15231
 
 
15232
        * playlist.cpp, playlist.h: work on playlist parsing.
 
15233
 
 
15234
2007-09-05  Jb Evain  <jbevain@novell.com>
 
15235
 
 
15236
        * xaml.h: export timespan_from_str.
 
15237
 
 
15238
2007-09-05  Jb Evain  <jbevain@novell.com>
 
15239
 
 
15240
        * list.h, list.cpp: add Remove(Node) and RemoveAt(int) method.
 
15241
 
 
15242
2007-09-04  Chris Toshok  <toshok@ximian.com>
 
15243
 
 
15244
        * media.cpp (Image::Render): unref the backing pixbuf as soon as
 
15245
        possible.
 
15246
        (Image::CleanupSurface): guard against double unreffing the
 
15247
        backing pixbuf.
 
15248
 
 
15249
2007-09-04  Chris Toshok  <toshok@ximian.com>
 
15250
 
 
15251
        * xaml.cpp (xaml_set_property_from_str): delete the color.
 
15252
        (dependency_object_set_attributes): same.
 
15253
 
 
15254
2007-09-04  Chris Toshok  <toshok@ximian.com>
 
15255
 
 
15256
        * media.cpp (Image::CreateSurface): if we need to create a new
 
15257
        surface, make sure to unref the old one.
 
15258
 
 
15259
        * geometry.cpp (PathGeometry::PathGeomtry): use
 
15260
        Value::CreateUnrefPtr (bad name, imo, but eh)
 
15261
        (PathFigure::PathFigure): same.
 
15262
 
 
15263
2007-09-04  Jb Evain  <jbevain@novell.com>
 
15264
 
 
15265
        * playlist.h, playlist.cpp: Work on the overall design.
 
15266
 
 
15267
2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
 
15268
 
 
15269
        * brush.cpp (image_brush_create_pattern): Revert previous patch as
 
15270
        it broke test suite.
 
15271
 
 
15272
2007-09-04  Jb Evain  <jbevain@novell.com>
 
15273
 
 
15274
        * list.h, list.cpp: add a List::ForEach method.
 
15275
 
 
15276
2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
 
15277
 
 
15278
        * brush.cpp (image_brush_create_pattern): Set CAIRO_FILTER_FAST
 
15279
        (based on lewings performance patch).
 
15280
 
 
15281
2007-09-04  Sebastien Pouliot  <sebastien@ximian.com>
 
15282
 
 
15283
        * text.h|cpp: TextBlock actual_[height|width] are already cached 
 
15284
        because they're expansive to calculate. Make sure we don't compute
 
15285
        them until they're really required (e.g. when a lot of properties
 
15286
        changes when loading an XAML file).
 
15287
 
 
15288
2007-09-04  Chris Toshok  <toshok@ximian.com>
 
15289
 
 
15290
        * animation.cpp (KeyFrameAnimation_ResolveKeyFrames): add the
 
15291
        keyframes in reverse order so the sort works.
 
15292
 
 
15293
2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
 
15294
 
 
15295
        * list.cpp (Insert): Fixed.
 
15296
 
 
15297
        * runtime.cpp (render_cb): Added some "FPS" debug spew.
 
15298
 
 
15299
        * media.cpp (AdvanceFrame): On MediaEnded, don't remove the source
 
15300
        timeout id, by returning false, it is removed for us.
 
15301
 
 
15302
Tue Sep 4 17:50:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
 
15303
 
 
15304
        * media.cpp: fix memory leaks and crashes when a download gets
 
15305
        aborted.
 
15306
 
 
15307
2007-09-04  Jeffrey Stedfast  <fejj@novell.com>
 
15308
 
 
15309
        * mplayer.cpp: Changed all pts variables to int64_t from uint64_t
 
15310
        as that seems to be what ffmpeg uses internally. Also added a new
 
15311
        'eof' state so that we can easily tell if we've reached the end of
 
15312
        the media stream (eof is true and no packets queued).
 
15313
 
 
15314
2007-09-04  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15315
 
 
15316
        * media.h, media.cpp: If we get a play request before the media is loaded,
 
15317
          save the request and start playing when the media is loaded. Hopefully
 
15318
          this is what MS is doing.
 
15319
 
 
15320
2007-09-04  Jeffrey Stedfast  <fejj@gnome.org>
 
15321
 
 
15322
        * collection.cpp (Clear): Use list->IsEmpty () as it is cheaper
 
15323
        than comparing the Length() to 0.
 
15324
 
 
15325
        * list.cpp: Added more tests.
 
15326
 
 
15327
2007-09-03  Sebastien Pouliot  <sebastien@ximian.com> 
 
15328
 
 
15329
        * rect.cpp: Safer IsEmpty (handles negative values)
 
15330
        * shape.cpp: In Shape::ComputeBoundsSlow make empty shape returns
 
15331
        empty bounds. In Shape::DoDraw avoid call to  cairo_set_matrix if 
 
15332
        shape is empty.
 
15333
 
 
15334
2007-09-03  Sebastien Pouliot  <sebastien@ximian.com>
 
15335
 
 
15336
        * media.cpp: Fix premul and remove confusing macro.
 
15337
 
 
15338
2007-09-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15339
 
 
15340
        * clock.cpp, uielement.cpp, trigger.cpp, panel.cpp, animation.cpp,
 
15341
          canvas.cpp, namescope.cpp: Plug some leaks.
 
15342
        * value.h.in, value.h, value.cpp: Added CreateUnrefRef and CreateUnref.
 
15343
        * dependencyobject.cpp: free_attachee: unref the contained dob. Use
 
15344
          base_unref () instead of accessing the pointer in a few places to allow
 
15345
          for null pointers.
 
15346
        * debug.cpp: get_stack_trace is now able to get meaningful data for managed
 
15347
          parts of the stack trace as well.
 
15348
 
 
15349
2007-09-03  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15350
 
 
15351
        * list.cpp: List::Unlink: Link my neighbours to eachother.
 
15352
 
 
15353
2007-09-01  Sebastien Pouliot  <sebastien@ximian.com>
 
15354
 
 
15355
        * rect.cpp: Fix union with empty rectangles (so x and y are not
 
15356
        assigned to 0 resulting in large bounds). Fix IsEmpty.
 
15357
        * shape.cpp: Fix possible division by 0, resulting in infinite 
 
15358
        values (and much too large bounds)
 
15359
 
 
15360
2007-08-31  Jeffrey Stedfast  <fejj@novell.com>
 
15361
 
 
15362
        *.cpp: Updated for the slightly different List API (list nodes no
 
15363
        longer have Next() or Prev() methods, just access the pointers
 
15364
        directly).
 
15365
 
 
15366
        * animation.cpp: Made sorted_list a GPtrArray and updated to use
 
15367
        g_ptr_array_insert_sorted(). Also, a lot of the 'list' (not
 
15368
        sorted_list) accesses assumed nodes were of type KeyFrameNode,
 
15369
        which they were not. Fixed.
 
15370
 
 
15371
        * xaml.cpp: Made XamlElementInstance.dtor virtual.
 
15372
 
 
15373
        * collection.h: Made the Collection::Node.dtor virtual.
 
15374
 
 
15375
        * list.cpp: Rewritten, if we add a virtual .dtor to List::Node, we
 
15376
        can no longer guarantee that List::Node->next will have the same
 
15377
        address as the List::Node object and so the list implementation
 
15378
        broke. This rewrite is a bit less fancy, but doesn't rely on that
 
15379
        feature.
 
15380
 
 
15381
2007-08-31  Sebastien Pouliot  <sebastien@ximian.com> 
 
15382
 
 
15383
        * media.cpp, panel.cpp, shape.cpp, text.cpp: Calling GrowBy 
 
15384
        doesn't change the current rectangle (but returns a new one).
 
15385
        However everything seems to work, so they are probably not needed.
 
15386
 
 
15387
2007-08-31  Jeffrey Stedfast  <fejj@novell.com>
 
15388
 
 
15389
        * text.cpp (OnPropertyChanged): Need to Invalidate() too.
 
15390
 
 
15391
2007-08-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15392
 
 
15393
        * runtime.h, runtime.cpp: Implement fullscreen support, drawing_area does
 
15394
          now reference either the fullscreen drawing area or the normal drawing
 
15395
          area. Refactored drawing area initialization and destruction into
 
15396
          seperate methods. Modified ConnectEvent to be able to specify whether
 
15397
          the drawing area should attach to realize/unrealize events (fullscreen
 
15398
          drawing area shouldn't). Only emit ResizeEvent if we're not in
 
15399
          fullscreen mode. Added normal_height/width, contains the size of the
 
15400
          surface when not in fullscreen (as opposed to screen_height/width for
 
15401
          fullscreen mode). Height/width now contains the actual size of the area
 
15402
          where we draw, whether in fullscreen mode or not.
 
15403
 
 
15404
2007-08-31  Sebastien Pouliot  <sebastien@ximian.com> 
 
15405
 
 
15406
        * shape.cpp: #ifdef out an optimization that doesn't work with
 
15407
        ComputeBoundsSlow (a specified stroke brush, with a thickness of 0,
 
15408
        wouldn't render at all with it's fill brush). Added same shortcut 
 
15409
        (as before) for Shape::ComputeBoundsSlow.
 
15410
 
 
15411
2007-08-31  Sebastien Pouliot  <sebastien@ximian.com>
 
15412
 
 
15413
        * shape.cpp: Added a shortcut in Shape::ComputeBoundsFast when shapes
 
15414
        are known to be empty (UIElement::SHAPE_EMPTY).
 
15415
 
 
15416
2007-08-31  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15417
 
 
15418
        * shape.h, shape.cpp: Revert to the old CanFill method for shapes,
 
15419
          apparently a point is inside a shape unregarding to whether it's filled
 
15420
          or not, unlike geometries.
 
15421
 
 
15422
2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
 
15423
 
 
15424
        * shape.cpp: Better degenerate handling for round-rectangles and 
 
15425
        for ellipses.
 
15426
 
 
15427
2007-08-30  Chris Toshok  <toshok@ximian.com>
 
15428
 
 
15429
        * collection.h, collection.cpp: change the prototype of
 
15430
        Collection::Add, ::Insert, and ::SetVal to return bool.  Make the
 
15431
        subclasses check the return value before doing their type specific
 
15432
        handling of the child.  Fixes the crash from invalid xaml in
 
15433
        alan's testcase.
 
15434
 
 
15435
        * animation.h, animation.cpp: track collection api change.
 
15436
 
 
15437
2007-08-30  Chris Toshok  <toshok@ximian.com>
 
15438
 
 
15439
        * collection.cpp (Collection::Add): make the warning a lot more
 
15440
        useful if the child isn't of the right type.
 
15441
 
 
15442
2007-08-30  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15443
 
 
15444
        * xaml.cpp: Unref the namescope.
 
15445
        * debug.h, debug.cpp: Added. Implemented get_stack_trace and
 
15446
          print_stack_trace.
 
15447
        * clock.cpp: Unref the _instance.
 
15448
        * dependencyobject.h, dependencyobject.cpp: Implement object tracking for
 
15449
          debug purposes. It's able to log to console object creation,
 
15450
          destruction, ref/unrefs with a stacktrace with C++ unmangled function
 
15451
          names, file and line number. Keep a count of created and destroyed
 
15452
          objects, and a list of objects still alive. Ref and unref attached
 
15453
          objects, and free the attachees when we're deleted.
 
15454
        * animation.h, animation.cpp: Add animation_destroy, and destroy the default
 
15455
          dependency property for a few properties.
 
15456
        * type.cpp, type.cpp.in: Initialize Type::types to NULL.
 
15457
        * runtime.cpp: Add a g_type_inited to avoid initializing g_types several
 
15458
          types. Call animation_destroy on shutdown, and add some object tracking
 
15459
          output to runtime_init and runtime_shutdown.
 
15460
        * Makefile.am: Added debug.*.
 
15461
 
 
15462
2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
 
15463
 
 
15464
        * shape.cpp: In some degenerate cases Radius[X|Y] can be ignored 
 
15465
        for rectangles.
 
15466
 
 
15467
2007-08-30  Jeffrey Stedfast  <fejj@novell.com>
 
15468
 
 
15469
        * mplayer.cpp (AdvanceFrame): If there is no video stream, return
 
15470
        based on audio state. Also, if current_pts >= target_pts already,
 
15471
        return true rather than false to pretend we advanced a frame (it's
 
15472
        really not that important to our caller, all the value is used for
 
15473
        is updating position).
 
15474
 
 
15475
2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
 
15476
 
 
15477
        * shape.cpp: Handle negative values for Height and Width (not 
 
15478
        drawn) and for Radius[X|Y] (absolute values).
 
15479
 
 
15480
2007-08-30  Jb Evain  <jbevain@novell.com> 
 
15481
 
 
15482
        * media.h, media.cpp: introduce a new MediaSource class that a
 
15483
        MediaElement uses, so we can have either a SingleMedia or a Playlist
 
15484
        as a source.
 
15485
        * playlist.cpp, playlist.h: added
 
15486
        * Makefile.am: add the previous files.
 
15487
 
 
15488
2007-08-30  Sebastien Pouliot  <sebastien@ximian.com> 
 
15489
 
 
15490
        * shape.cpp: Fix small rectangle fills when no stroke brush is 
 
15491
        specified.
 
15492
 
 
15493
2007-08-29  Jeffrey Stedfast  <fejj@novell.com>
 
15494
 
 
15495
        * text.cpp (OnPropertyChanged): Don't recalculate width/height nor
 
15496
        bounds on TextProperty change explicitly, it should already be
 
15497
        recalculated later in the function in the same place it gets
 
15498
        reclauclated for other property changes.
 
15499
        (ComputeBounds): Updated to work the same as the rest of the
 
15500
        elements work.
 
15501
 
 
15502
2007-08-29  Sebastien Pouliot  <sebastien@ximian.com> 
 
15503
 
 
15504
        * shape.cpp: Fix ComputeBoundsFast to consider the stroke 
 
15505
        thickness
 
15506
 
 
15507
2007-08-29  Sebastien Pouliot  <sebastien@ximian.com>
 
15508
 
 
15509
        * shape.cpp: Fix Path::BuildPath cairo_path_t caching as we modify 
 
15510
        the path after we get a copy of it. Remove the now unrequired 
 
15511
        clipping inside the *::BuildPath for StretchUniformToFill.
 
15512
 
 
15513
2007-08-29  Jeffrey Stedfast  <fejj@novell.com>
 
15514
 
 
15515
        * media.cpp (Render): Cache the pattern matrix.
 
15516
        (DownloaderComplete): Remove the assert and simply handle that
 
15517
        case by returning (which defers the call until OnLoaded).
 
15518
 
 
15519
2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15520
 
 
15521
        * runtime.cpp: Initialize the FullScreen variables. Helps a lot in
 
15522
          making things consistent.
 
15523
 
 
15524
2007-08-29  Chris Toshok  <toshok@ximian.com>
 
15525
 
 
15526
        * merged delayed-rendering-branch branch to head.  ChangeLog is:
 
15527
        
 
15528
        2007-08-28  Chris Toshok  <toshok@ximian.com>
 
15529
 
 
15530
                * control.cpp (GetTransformFor): change this to act as
 
15531
                Canvas::GetTransformFor does - we only put in the transform from
 
15532
                parent to child here - don't include the parent's transform as
 
15533
                well.  Fixes the airlines demo.
 
15534
 
 
15535
        2007-08-28  Chris Toshok  <toshok@ximian.com>
 
15536
 
 
15537
                * dirty.cpp (process_dirty_elements): use a different method for
 
15538
                checking if against the toplevel canvas, and also use
 
15539
                UIElement::parent instead of DependencyObject::GetParent() to get
 
15540
                controls working a little better than before.
 
15541
 
 
15542
                * control.h, control.cpp: remove UpdateTransform.  this is handled
 
15543
                by the dirty.cpp code now.
 
15544
 
 
15545
                * dependencyobject.h, dependencyobject.cpp: copy over the
 
15546
                event_object_{add,remove}_event_handler change from the trunk so
 
15547
                we can continue to work with HEAD olive.
 
15548
 
 
15549
        2007-08-22  Chris Toshok  <toshok@ximian.com>
 
15550
 
 
15551
                * uielement.cpp (Invalidate): don't actually invalidate the
 
15552
                element unless it's visible.
 
15553
                (OnPropertyChanged): the above change requires us to invalidate
 
15554
                the element before setting the flags (in the case where we're
 
15555
                hiding an element).
 
15556
 
 
15557
        2007-08-21  Jeffrey Stedfast  <fejj@novell.com>
 
15558
 
 
15559
                * media.cpp (ComputeBounds): Use the FrameworkElement width/height
 
15560
                unless unspecified, only then should we use video width/height.
 
15561
 
 
15562
        2007-08-21  Chris Toshok  <toshok@ximian.com>
 
15563
 
 
15564
                * uielement.cpp (DoRender): short-circuit rendering of uielements
 
15565
                when their opacity is 0.
 
15566
 
 
15567
                * dirty.cpp (process_dirty_elements): handle controls.
 
15568
 
 
15569
        2007-08-21  Chris Toshok  <toshok@ximian.com>
 
15570
 
 
15571
                * shape.h: add Shape::ComputeBoundsSlow, which uses the slow
 
15572
                (cairo_*_extents) codepath for computing bounds.  Use this path
 
15573
                for polygons, polylines, and paths.  Implement a Line-specific
 
15574
                fast ComputeBounds.
 
15575
 
 
15576
        2007-08-20  Chris Toshok  <toshok@ximian.com>
 
15577
 
 
15578
                * media.cpp (MediaElement::ComputeBounds): GrowBy(1).
 
15579
                (Image::ComputeBounds): use bounding_rect_for_transformed_rect.
 
15580
 
 
15581
        2007-08-20  Chris Toshok  <toshok@ximian.com>
 
15582
 
 
15583
                * rect.h, rect.cpp: add bounding_rect_from_transformed_rect.
 
15584
 
 
15585
                * panel.cpp (Panel::ComputeBounds): use the bounding_rect
 
15586
                call, and Rect::GrowBy
 
15587
 
 
15588
                * media.cpp (MediaElement::ComputeBounds): use the bounding_rect
 
15589
                call.
 
15590
 
 
15591
        2007-08-20  Chris Toshok  <toshok@ximian.com>
 
15592
 
 
15593
                * shape.h, shape.cpp: move the ellipse bound computing to shape
 
15594
                instead.
 
15595
 
 
15596
2007-08-29  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15597
 
 
15598
        * clock.h: Implement TimeManager::GetObjectType.
 
15599
        * dependencyobject.h, dependencyobject.cpp: Move all type management down to
 
15600
          Base (GetObjectType, Is, GetType, GetTypeName), and implement
 
15601
          GetObjectType in the classes that don't do it already. Remove
 
15602
          BASE_FLOATS, simplifying ref counting.
 
15603
        * type.cpp.in, type.h, type.cpp, type.h.in: Added Base and inherited classes
 
15604
          that don't already inherit from DependencyObject.
 
15605
        * runtime.h, runtime.cpp: Add the Fullscreen API (not implemented yet, only
 
15606
          raises events), and implement GetObjectType.
 
15607
 
 
15608
2007-08-28  Sebastien Pouliot  <sebastien@ximian.com> 
 
15609
 
 
15610
        * shape.cpp: Fix StretchUniformToFill
 
15611
 
 
15612
2007-08-28  Sebastien Pouliot  <sebastien@ximian.com>
 
15613
 
 
15614
        * shape.cpp: Fix StrokeDashArray and StrokeDashOffset as they now
 
15615
        (new since refresh?) need to be multiplied with the stroke's 
 
15616
        thickness
 
15617
 
 
15618
2007-08-28  Jeffrey Stedfast  <fejj@novell.com>
 
15619
 
 
15620
        * text.cpp (Render): Fixed the "no text to render" optimization:
 
15621
        don't check TextBlock::TextProperty to see if we have any text to
 
15622
        render, instead check TextBlock::layout (which will have any text
 
15623
        from inlines as well).
 
15624
        (OnPropertyChanged): If the TextProperty changes, recalculate the
 
15625
        layout and bounds.
 
15626
 
 
15627
2007-08-28  Sebastien Pouliot  <sebastien@ximian.com>
 
15628
 
 
15629
        * geometry.h: Add a Path* parameter to Draw as we need to know some 
 
15630
        stuff (e.g. stroke thickness) in order to detect degenerate cases.
 
15631
        * geometry.cpp: Handle degenerate case for RectangleGeometry.
 
15632
        * panel.cpp, uielementy.cpp: Adjust Draw calls for optional Path 
 
15633
        element (NULL in the case of clipping).
 
15634
        * shape.cpp|h: Move cairo_path_t caching logic from Path to Shape
 
15635
        class. Add GetFillRule method. Handle most cases where a large stroke
 
15636
        thickness change the SL drawing behaviour (wrt Cairo behaviour)
 
15637
        * uielement.h: Add flags for empty/normal/degenerate shapes
 
15638
 
 
15639
2007-08-28  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15640
 
 
15641
        * panel.cpp: InsideObject: The point is only inside us if we have a
 
15642
          background, otherwise we act like if we were transparent (which is what
 
15643
          we are if we aren't painting anything inside us).
 
15644
        * geometry.h, uielement.cpp, shape.h: Rename CanFill to IsFilled so that
 
15645
          it's closer to what it actually does.
 
15646
        * shape.cpp: Changed implementation of Shape::CanFill to return true only if
 
15647
          we're actually filled, and rename CanFill to IsFilled so that it's
 
15648
          closer to what it actually does. 
 
15649
 
 
15650
2007-08-27  Jackson Harper  <jackson@ximian.com>
 
15651
 
 
15652
        * dependencyobject.cpp|h: Don't return Collections when getting
 
15653
        parents.
 
15654
 
 
15655
2007-08-27  Jeffrey Stedfast  <fejj@novell.com>
 
15656
 
 
15657
        * mplayer.cpp (Play): Always add a timeout, even for audio-only
 
15658
        media, so that the callback can check if the media has ended and
 
15659
        emit the MediaEnded event.
 
15660
 
 
15661
        * media.cpp (AdvanceFrame): Emit the MediaEndedEvent.
 
15662
 
 
15663
        * mplayer.cpp (MediaEnded): New convenience function.
 
15664
 
 
15665
2007-08-27  Sebastien Pouliot  <sebastien@ximian.com>
 
15666
 
 
15667
        * shape.cpp: Remove cairo_new_path call in moon_rounded_rectangle
 
15668
        as this clear any path data in the context (see
 
15669
        test-path-group.xaml)
 
15670
 
 
15671
2007-08-27  Jeffrey Stedfast  <fejj@novell.com>
 
15672
 
 
15673
        * mplayer.cpp (audio_play): Implement software balance/volume here
 
15674
        rather than using the system's mixer (as that changes the
 
15675
        balance/volume for all applications which is a bad thing). Fixes
 
15676
        bug #82602.
 
15677
 
 
15678
2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15679
 
 
15680
        * panel.cpp: InsideObject: only skip checking the children if the
 
15681
          point is not in the clipped area.
 
15682
 
 
15683
        * uielement.h, uielement.cpp: Added InsideClip, and moved the
 
15684
          corresponding code from InsideObject to InsideClip.
 
15685
 
 
15686
2007-08-27  Sebastien Pouliot  <sebastien@ximian.com>
 
15687
 
 
15688
        * xaml.cpp: Fix calculation for smooth quadatric bezier (T) as seen in
 
15689
        tests/xaml/test-path-smoothquadraticbezier.xaml
 
15690
 
 
15691
2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15692
 
 
15693
        * uielement.h, uielement.cpp: Implement InsideObject here too, the same
 
15694
          implementation as Shape has (for our Clip property).
 
15695
        * frameworkelement.cpp: InsideObject: call new base implementation as well.
 
15696
        * panel.cpp: InsideObject: don't check our children, the mouse may be over
 
15697
          them, but they're not visible for some reason (the parent object might
 
15698
          be clipped, etc).
 
15699
 
 
15700
2007-08-27  Rolf Bjarne Kvinge <RKvinge@novell.com> 
 
15701
 
 
15702
        * panel.cpp: Panel::HandleMotion, if we're the captured element, handle the
 
15703
          motion event even though the mouse isn't over us.
 
15704
        * runtime.h: Add a public Surface::GetCapturedElement.
 
15705
 
 
15706
2007-08-24  Jeffrey Stedfast  <fejj@novell.com>
 
15707
 
 
15708
        * mplayer.cpp (StopThreads): Need to reset current_pts to 0 so the
 
15709
        video frames will update if we seek backwards.
 
15710
 
 
15711
        * uielement.cpp (DoRender): Shortcut out if total_opacity == 0.0
 
15712
 
 
15713
        * media.cpp (UpdateProgress): Use the downloader progress value as
 
15714
        the buffering progress value as well (since we don't yet stream).
 
15715
        (DownloaderComplete): Call UpdateProgres() here so that we can
 
15716
        flush the 100% progress value.
 
15717
 
 
15718
        * downloader.cpp (Write): Update the progress first, so that the
 
15719
        writer callback can query the actual progress (all data read up to
 
15720
        and /including/ this point in time).
 
15721
        (NotifyFinished): Set progress to 100% and emit an event.
 
15722
 
 
15723
2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
15724
 
 
15725
        * value.h[.in]: Added AsNPObj.
 
15726
        * type.cpp[.in]: Initialize Type::NPOBJ correctly.
 
15727
 
 
15728
2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
15729
 
 
15730
        * media.cpp: (DownloaderCompleted): The initial state of media
 
15731
        elements that aren't autoplayed is 'Paused'.
 
15732
 
 
15733
2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
 
15734
 
 
15735
        * media.cpp (MediaElement): Initialize 'loaded' to false.
 
15736
        (SetSource): Don't call DownloaderComplete() if we haven't been
 
15737
        loaded yet.
 
15738
        (GetValue): Convert to position from ms to TimeSpan ticks.
 
15739
        (OnLoaded): Set loaded to true and, if we have a downloader which
 
15740
        has completed the download, call DownloaderComplete() which will
 
15741
        then open the media file and autoplay if appropriate.
 
15742
        (OnPropertyChanged): Protect against creating a downloader for an
 
15743
        empty string uri.
 
15744
 
 
15745
2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
 
15746
 
 
15747
        * media.cpp (DownloaderComplete): If we fail to open, emit the
 
15748
        MediaFailedEvent and set some default values.
 
15749
        (OnPropertyChanged): Don't StopLoader() here, do that all in
 
15750
        SetSource (since SetSource needs to do it anyway).
 
15751
        (SetSource): Call StopLoader() here and close the MediaPlayer,
 
15752
        etc.
 
15753
 
 
15754
2007-08-23  Jackson Harper  <jackson@ximian.com>
 
15755
 
 
15756
        * runtime.cpp|h: Make Resize use our event system (so the plugin
 
15757
        can use it).
 
15758
        * dependencyobject.cpp|h: Rename the add/remove handler functions
 
15759
        to not require dependencyobjects.
 
15760
 
 
15761
2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
 
15762
 
 
15763
        * media.cpp (OnPropertyChanged): Don't autoplay here.
 
15764
        (advance_frame): Do ms->TimeSpan conversion here, too.
 
15765
        (DownloaderComplete): Instead of calling ::Pause(), just set the
 
15766
        pause state since the MediaPlayer already starts out in paused
 
15767
        state.
 
15768
 
 
15769
2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
15770
 
 
15771
        * clock.h: Add defines and methods to convert between timespans and
 
15772
        floats.
 
15773
        * media.cpp: Create a default (empty) Markers collection. When setting
 
15774
        MediaPlayer time values, convert between ticks (in TimeSpans) and 
 
15775
        milliseconds (which is what MediaPlayer expects). Emit MediaOpened
 
15776
        when we're finished downloading a media, and if we're not autoplaying
 
15777
        it, we're pausing it. Update uses of Value (gint64) constructors.
 
15778
        * value.cpp|h|h.in: Remove the Value (gint64) constructor and add a 
 
15779
        Value (gint64, Type::Kind) constructor to avoid mixups between
 
15780
        INT64 and TIMESPAN values. Check for null before unref'ing a 
 
15781
        dependency object.
 
15782
        * xaml.cpp: Update uses of Value (gint64) constructors.
 
15783
        
 
15784
2007-08-23  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
15785
 
 
15786
        * type.[cpp|h].in: Add const's here that were only added manually
 
15787
        to the generated files.
 
15788
 
 
15789
2007-08-23  Jeffrey Stedfast  <fejj@novell.com>
 
15790
 
 
15791
        * mplayer.cpp: Implemented volume/balance
 
15792
 
 
15793
2007-08-23  Sebastien Pouliot  <sebastien@ximian.com>
 
15794
 
 
15795
        * shape.cpp: Remove unneeded (cairo_close_path) and dead (break)
 
15796
        code in Polygon::Draw.
 
15797
 
 
15798
2007-08-22  Chris Toshok  <toshok@ximian.com>
 
15799
 
 
15800
        * clock.cpp (Tick): guard against division by zero.  gets
 
15801
        "monotone" displaying.
 
15802
 
 
15803
2007-08-22  Sebastien Pouliot  <sebastien@ximian.com>
 
15804
 
 
15805
        * shape.cpp|h: Provide GetTransformOrigin on Shape and remove them 
 
15806
        from Rectangle and Ellipse. Monotone requires that on Path and I can't
 
15807
        recall the reason I made this (while all the test cases I made still
 
15808
        work that way).
 
15809
 
 
15810
2007-08-22  Jeffrey Stedfast  <fejj@novell.com>
 
15811
 
 
15812
        * mplayer.cpp (MediaPlayer): Init mixer variables.
 
15813
 
 
15814
2007-08-22  Jeffrey Stedfast  <fejj@novell.com>
 
15815
 
 
15816
        * media.cpp (advance_frame): Don't bother invalidating here, we'll
 
15817
        do that in OnPropertyChanged() for the PositionProperty.
 
15818
        (OnPropertyChanged): Invalidate if Position has changed and
 
15819
        opacity > 0.0f (and we actually have video).
 
15820
        (ComputeBounds): Use the FrameworkElement width/height if set.
 
15821
        (GetTransformOrigin): Same.
 
15822
 
 
15823
2007-08-21  Jeffrey Stedfast  <fejj@novell.com>
 
15824
 
 
15825
        * mplayer.cpp (Open): Merged both Open() implementations into a
 
15826
        single one. We no longer use Open() without passing a uri (since
 
15827
        Stop() has been implemented in a better way).
 
15828
        (AdvanceFrame): Keep track of our current pts so that we won't get
 
15829
        ahead of the audio if called too often.
 
15830
 
 
15831
2007-08-20  Chris Toshok  <toshok@ximian.com>
 
15832
 
 
15833
        * rect.cpp (bounding_rect_for_transformed_rect): oops, got
 
15834
        MAX2/MIN2 mixed up.
 
15835
 
 
15836
2007-08-20  Chris Toshok  <toshok@ximian.com>
 
15837
 
 
15838
        * rect.h, rect.cpp (bounding_rect_for_transformed_rect): horrible
 
15839
        name, I know, but we need this functionality.  it's not enough to
 
15840
        use UL and LR corners of the rectangle when computing the bounding
 
15841
        rect for a transformed rectangle.  we have to test all 4 points.
 
15842
 
 
15843
        * panel.cpp (ComputeBounds): use
 
15844
        bounding_rect_for_transformed_rect.
 
15845
 
 
15846
2007-08-17  Chris Toshok  <toshok@ximian.com>
 
15847
 
 
15848
        * dependencyobject.cpp (strcase_equal, strcase_hash): new case
 
15849
        insensitive hash functions.
 
15850
        (RegisterFull): the property hash tables (per type, used for
 
15851
        GetDependencyProperty) need to be case insensitive.
 
15852
 
 
15853
2007-08-17  Chris Toshok  <toshok@ximian.com>
 
15854
 
 
15855
        * xaml.cpp: remove Hidden from the visibility_map.
 
15856
        (enum_from_str): if we don't see a name we recognize, try to parse
 
15857
        it as a number.  This could maybe be someplace else.
 
15858
 
 
15859
        * enums.h: remove VisibilityHidden
 
15860
 
 
15861
        * uielement.h, uielement.cpp: remove
 
15862
        VisibilityHidden/LAYOUT_VISIBLE
 
15863
 
 
15864
        * control.h: remove GetLayoutVisible.
 
15865
 
 
15866
        * panel.cpp (ComputeBounds): switch from item->GetLayoutVisible to
 
15867
        item->GetVisible, since there's no need to distinguish between the
 
15868
        two anymore.
 
15869
 
 
15870
2007-08-17  Jackson Harper  <jackson@ximian.com>
 
15871
 
 
15872
        * clock.h: Add ToSeconds utility functions.
 
15873
 
 
15874
2007-08-16  Jeffrey Stedfast  <fejj@novell.com>
 
15875
 
 
15876
        * list.cpp (InsertSorted): For the stable evrsion, work backwards
 
15877
        instead of forwards (improves performance in the typical case,
 
15878
        altho we aren't gonna sue this feature anymore - z-sorted lists
 
15879
        will now be GPtrArrays).
 
15880
 
 
15881
        * garray-ext.cpp|h: New src file containing an extension to
 
15882
        GPtrArray for inserting an item into a presorted array.
 
15883
 
 
15884
        * collection.cpp (VisualCollection): z_sorted is now a GPtrArray,
 
15885
        updated all usages of it.
 
15886
 
 
15887
        * panel.cpp (Render): Updated now that z_sorted is an array
 
15888
        instead of a linked list.
 
15889
 
 
15890
2007-08-16  Jackson Harper  <jackson@ximian.com>
 
15891
 
 
15892
        * xaml.cpp: Transforms can be set as attributes, they are just a
 
15893
        matrix in string form, that become a MatrixTransform on the
 
15894
        object.
 
15895
        - Made the debug a little nicer
 
15896
 
 
15897
2007-08-15  Jackson Harper  <jackson@ximian.com>
 
15898
 
 
15899
        * xaml.cpp: Since the callback setting is now a once per a domain
 
15900
        thing, we don't want to check if they are already set. The 'are
 
15901
        they already set' check only worked when we were setting them at
 
15902
        the beginning of each parsing attempt.  With our current setup it
 
15903
        was causing everything to get loaded in the same domain.
 
15904
 
 
15905
2007-08-13  Jeffrey Stedfast  <fejj@novell.com>
 
15906
 
 
15907
        * mplayer.cpp (AdvanceFrame): Init frame to NULL so we don't
 
15908
        segfault if there are no packets in the queue.
 
15909
 
 
15910
2007-08-13  Chris Toshok  <toshok@ximian.com>
 
15911
 
 
15912
        * animation.cpp (*KeyFrame::InterpolateValue): for all the
 
15913
        keyframes, if we don't have a Value defined, don't bother
 
15914
        interpolating anything, just return baseValue.
 
15915
 
 
15916
2007-08-13  Chris Toshok  <toshok@ximian.com>
 
15917
 
 
15918
        * collection.cpp: fix merging/unmerging of child namescopes.
 
15919
 
 
15920
        * namescope.h, namescope.cpp: add a flag (merged) and a list of
 
15921
        child merged namescopes which are searched any time this namescope
 
15922
        is searched.  Reimplement merge as list->Append, and unmerge as
 
15923
        list->Remove.
 
15924
 
 
15925
        * dependencyobject.h: add ClearValue, and make GetParent
 
15926
        inlineable.
 
15927
 
 
15928
        * dependencyobject.cpp: add impl for ClearValue, and remove
 
15929
        GetParent.  Also, when finding a name we only check non-merged
 
15930
        namescopes.  The merged ones in the hieararchy will be checked as
 
15931
        the children of the non-merged ones.  Given that the set of names
 
15932
        in merged scopes can't overlap, I'm not strictly sure this is
 
15933
        necessary, except to reproduce Silverlight's faulty lookups after
 
15934
        subtree removal.
 
15935
 
 
15936
2007-08-10  Jeffrey Stedfast  <fejj@novell.com>
 
15937
 
 
15938
        * collection.cpp (Clear): Unregister the object names.
 
15939
 
 
15940
        * dependencyobject.h (GetName): uhh... just return the value, lets
 
15941
        not go returning "(null)" in string form.
 
15942
 
 
15943
2007-08-10  Chris Toshok  <toshok@ximian.com>
 
15944
 
 
15945
        * runtime.h, runtime.cpp (key_press_callback): map the gdk keyval
 
15946
        to the silverlight Key and call s->toplevel->HandleKeyDown.
 
15947
        (key_release_callback): same.
 
15948
        (gdk_keyval_to_key): new function, to map between gdk and
 
15949
        silverlight.
 
15950
        
 
15951
        * uielement.h, uielement.cpp: add HandleKeyDown/HandleKeyUp, which
 
15952
        just package up the args into a structure and Emit the event.
 
15953
 
 
15954
        * enums.h: add the Key enum from the silverlight docs.
 
15955
 
 
15956
2007-08-10  Jeffrey Stedfast  <fejj@novell.com>
 
15957
 
 
15958
        * dependencyobject.cpp (resolve_property_path): Keep track of the
 
15959
        last '.' so that when we go to get the DependencyProperty, we can
 
15960
        pass the property name component rather than the full path of the
 
15961
        property name. Fixes the color fades in Monotone.
 
15962
 
 
15963
2007-08-09  Chris Toshok  <toshok@ximian.com>
 
15964
 
 
15965
        * animation.h, animation.cpp: if any keyframe's keytime changes,
 
15966
        we need to re-resolve the collection.
 
15967
 
 
15968
2007-08-09  Jeffrey Stedfast  <fejj@novell.com>
 
15969
 
 
15970
        * mplayer.cpp (Play): Only start up the io/audio threads if we
 
15971
        aren't simply paused (e.g. if they are already alive).
 
15972
        (IsPlaying): Return true only if playing && !paused.
 
15973
        (audio_loop): Changed the locking logic to lock outside of the
 
15974
        loop rather than inside. We now only release the lock inside the
 
15975
        loop if/when the paused state changes.
 
15976
 
 
15977
2007-08-08  Chris Toshok  <toshok@ximian.com>
 
15978
 
 
15979
        * animation.h: sprinkle Resolve() methods and resolved flags
 
15980
        around.
 
15981
 
 
15982
        * animation.cpp (Storyboard::HookupAnimationsRecurse): call
 
15983
        Resolve() on the animation as we recurse.
 
15984
        (KeyFrameNodeComparer): compare using the keyframe's resolved
 
15985
        keytime.
 
15986
        (KeyFrameNodeFinder): nuke.
 
15987
        (KeyFrameCollection::Add): just mark the collection as needing to
 
15988
        be resolved.  don't muck with the sorted list here.
 
15989
        (KeyFrameCollection::Insert): same.
 
15990
        (KeyFrameCollection::Remove): same.
 
15991
        (KeyFrameCollection::Clear): also mark the collection as
 
15992
        unresolved.
 
15993
        (KeyFrameCollection::GetKeyFrameForTime): use resolved keytime.
 
15994
        (KeyFrameAnimation_ResolveKeyFrames): implement most of the
 
15995
        algorithm posted at
 
15996
        http://msdn2.microsoft.com/en-us/library/ms742524.aspx to resolve
 
15997
        keytimes of different types.  this is all untested, unfortunately,
 
15998
        as I can't get non-TimeSpan keytimes to work on SL.
 
15999
        (*AnimationUsingKeyFrames::GetCurrentValue): use resolved
 
16000
        keytime.
 
16001
        (*AnimationUsingKeyFrames::GetNaturalDurationCore): resolve
 
16002
        the key frames before using sorted_list.
 
16003
        (*AnimationUsingKeyFrames::Resolve): override the empty
 
16004
        default, and call KeyFrameAnimation_ResolveKeyFrames.
 
16005
 
 
16006
2007-08-08  Chris Toshok  <toshok@ximian.com>
 
16007
 
 
16008
        * clock.cpp (Begin): make sure we handle clocks that seek in the
 
16009
        first tick.
 
16010
 
 
16011
2007-08-08  Chris Toshok  <toshok@ximian.com>
 
16012
 
 
16013
        * canvas.cpp (Canvas::Canvas): create a temporary namescope
 
16014
        whenever we create a canvas.  We need this for animations that are
 
16015
        started before the canvas is attached to the tree, or in any case
 
16016
        where FindName is called on code associated with a subtree before
 
16017
        it's added to the surface.
 
16018
 
 
16019
        * animation.cpp (Storyboard::HookupAnimationsRecurse): turns out
 
16020
        Storyboard.TargetName can be assigned to the parent storyboard as
 
16021
        well as the animation.  Loop up the clock hierarchy when looking
 
16022
        for the targetname.
 
16023
        
 
16024
2007-08-07  Chris Toshok  <toshok@ximian.com>
 
16025
 
 
16026
        * animation.cpp, animation.h
 
16027
        (*AnimationUsingKeyFrames::GetNaturalDurationCore): no need to
 
16028
        iterate over all the keyframes looking for the last one - just
 
16029
        look at the last one in the sorted list.
 
16030
 
 
16031
2007-08-07  Jeffrey Stedfast  <fejj@novell.com>
 
16032
 
 
16033
        * media.cpp (SetValue): Only crop position values if we're not
 
16034
        updating state from the media player (we're allowed to set values
 
16035
        outside of the duration range from the media player). Also, do our
 
16036
        seeking here.
 
16037
        (OnPropertyChanged): Don't do our seeking here because we can't
 
16038
        get the actual seek position as GetValue()'s override will
 
16039
        re-query the media player for its actual position.
 
16040
 
 
16041
        * mplayer.cpp (Open): Don't create the threads here anymore,
 
16042
        create them in Play() instead. Also calculate ahead of time the
 
16043
        new audio->pts_per_frame value which allows the video to keep even
 
16044
        better sync with the audio (we used to base this on actual time
 
16045
        spent playing the audio frame rather which could sometimes be off
 
16046
        a smidgen).
 
16047
        (AdvanceFrame): If seek_pts is non-zero, then we need to base
 
16048
        target_pts on it rather than video->initial_pts (assuming we have
 
16049
        no audio to sync to).
 
16050
        (Play): Set playing = true and create the audio/io threads.
 
16051
        (Close): A lot of the logic has been moved into a new method,
 
16052
        StopThreads().
 
16053
        (StopThreads): Stop the threads and reset minimal state.
 
16054
        (Stop): Call StopThreads() and seek back to the beginning of the
 
16055
        av stream.
 
16056
        (Seek): Implemented.
 
16057
        (Position): Back to subtracting the initial_pts so that we always
 
16058
        have a range of 0:duration. If seek_pts is set and >target_pts,
 
16059
        use that rather than target_pts so even if we are in a stopped
 
16060
        state, querying the position will return expected results.
 
16061
        (audio_play): Return audio->pts_per_frame rather than the actual
 
16062
        time difference.
 
16063
 
 
16064
2007-08-06  Jackson Harper  <jackson@ximian.com>
 
16065
 
 
16066
        * xaml.cpp: add VisualCollections.
 
16067
 
 
16068
2007-08-06  Chris Toshok  <toshok@ximian.com>
 
16069
 
 
16070
        * clock.cpp, clock.h: this might be completely wrong and break
 
16071
        other demos... but childless clockgroups Stop when they hit their
 
16072
        duration, they don't SkipToFill.  fixes the silverlightclr balls
 
16073
        demo.
 
16074
 
 
16075
2007-08-06  Larry Ewing  <lewing@novell.com>
 
16076
 
 
16077
        * dependencyobject.h:
 
16078
        * dependencyobject.cpp:
 
16079
        * media.cpp:
 
16080
        * type.h: 
 
16081
        * type.cpp: add const to the various string apis.
 
16082
 
 
16083
2007-08-06  Jeffrey Stedfast  <fejj@novell.com>
 
16084
 
 
16085
        * mplayer.cpp: Fixes to make it work with media files w/ no audio
 
16086
        (or where we are unable to play the audio).
 
16087
 
 
16088
2007-08-04  Chris Toshok  <toshok@ximian.com>
 
16089
 
 
16090
        * brush.h, brush.cpp: add VisualBrush.
 
16091
 
 
16092
        * xaml.cpp (xaml_init): hookup VisualBrush parsing.
 
16093
 
 
16094
        * value.h, type.h, type.cpp: sync up the VisualBrush stuff.
 
16095
 
 
16096
2007-08-04  Chris Toshok  <toshok@ximian.com>
 
16097
 
 
16098
        * panel.cpp (Panel::ChildInvalidated): for the Invalidated stuff
 
16099
        to work properly, panel needs to call
 
16100
        FrameworkElement::Invalidate, not parent->ChildInvalidated
 
16101
        directly.
 
16102
 
 
16103
        * uielement.h, uielement.cpp: add an Invalidated event for use by
 
16104
        the visual brush.
 
16105
        
 
16106
2007-08-03  Chris Toshok  <toshok@ximian.com>
 
16107
 
 
16108
        * collection.cpp (Collection::Add, Collection::Insert): reinstate
 
16109
        jackson's merging code, but only do it if @data's namescope is
 
16110
        temporary.
 
16111
 
 
16112
        * namescope.h, namescope.cpp: Add {Set,Get}Temporary.
 
16113
 
 
16114
        * xaml.cpp (xaml_create_from_str): set the namescope to be
 
16115
        temporary if create_namescope is false.
 
16116
        (xaml_create_from_file): same.
 
16117
 
 
16118
2007-08-03  Chris Toshok  <toshok@ximian.com>
 
16119
 
 
16120
        * panel.h, panel.cpp: add an optimization for the 2 updates that
 
16121
        travel down the tree (UpdateTotalOpacity and UpdateTransform).
 
16122
        Since we're already invalidating the panel's bounds (in fact we do
 
16123
        it before traversing), we can ignore the invalidates which come
 
16124
        back up the tree from the children.
 
16125
 
 
16126
        * media.cpp, media.h: make NaturalDuration a Duration.  this gets
 
16127
        the last of roeder's demos sorta working.
 
16128
 
 
16129
2007-08-03  Jeffrey Stedfast  <fejj@novell.com>
 
16130
 
 
16131
        * mplayer.cpp: Whenever we change the 'paused' state, signal to
 
16132
        the other thread(s) that it has changed so that they can go on
 
16133
        with their lives immediately rather than waiting for the kernel to
 
16134
        context switch.
 
16135
 
 
16136
2007-08-02  Chris Toshok  <toshok@ximian.com>
 
16137
 
 
16138
        * control.cpp (GetTransformFor, OnSubPropertyChanged): now, before
 
16139
        you get your panties in a twist, check this out.  If you have a
 
16140
        control and set both its Canvas.LeftProperty and that of its root
 
16141
        object (the return value of InitializeFromXaml), the effects are
 
16142
        *additive*, yet GetValue on each object returns exactly what you'd
 
16143
        expect - the value you set on it.  The only reasonable explanation
 
16144
        for this is that Control has Canvas's layout algorithm c&p'ed into
 
16145
        it.
 
16146
 
 
16147
2007-08-02  Chris Toshok  <toshok@ximian.com>
 
16148
 
 
16149
        * xaml.h, xaml.cpp: switch the xaml_create_from_{file,str}
 
16150
        functions to returning DependencyObjects instead of UIElements.
 
16151
        in javascript you can create arbitrary xaml hierarchies (transform
 
16152
        groups, brushes, etc).
 
16153
 
 
16154
        * control.cpp: need a cast here due to the above change.
 
16155
 
 
16156
2007-08-02  Chris Toshok  <toshok@ximian.com>
 
16157
 
 
16158
        * runtime.h, runtime.cpp (Surface::Invalidate): add this call, and
 
16159
        stuff the gtk_widget_queue_draw_area call there.
 
16160
 
 
16161
        * uielement.h, uielement.cpp, canvas.h, canvas.cpp, panel.h,
 
16162
        panel.cpp, control.h, control.cpp: change the way
 
16163
        UIElement::Invalidate works.  It used to call GetSurface() which
 
16164
        would recurse up the tree to the root, and return the Surface*
 
16165
        back down.  It would then call gtk_widget_queue_draw_area there.
 
16166
        This left little room for optimization.  Switch everything over to
 
16167
        using a new method implemented by all container classes,
 
16168
        ChildInvalidated.  Basically Invalidate's recurse up to the root
 
16169
        as before, but the actual gtk call happens at the root (well, 1
 
16170
        level above it.  at the Surface itself).  In the future we can
 
16171
        freeze Invalidates in container elements when they do things like
 
16172
        update their transform so we'll just send 1 Invalidate up the
 
16173
        tree, not N Invalidates for N children.
 
16174
        
 
16175
2007-08-02  Jeffrey Stedfast  <fejj@novell.com>
 
16176
 
 
16177
        * media.cpp (DownloaderComplete): Set the CanPause and CanSeek
 
16178
        properties.
 
16179
 
 
16180
        * mplayer.cpp (~MediaPlayer): Destroy the pause_mutex
 
16181
        (IsPaused): New method.
 
16182
 
 
16183
        * media.cpp (MediaElement::GetValue): If the Position is being
 
16184
        requested, query the MediaPlayer.
 
16185
        (MediaElement::SetValue): Make sure the PositionProperty value is
 
16186
        within bounds and force it to be if not.
 
16187
        (MediaElement::Stop): Do nothing if we aren't playing/paused.
 
16188
        (MediaElement::OnPropertyChanged): Call mplayer->Seek() if the
 
16189
        position changed.
 
16190
 
 
16191
2007-08-02  Chris Toshok  <toshok@ximian.com>
 
16192
 
 
16193
        * uielement.h, uielement.cpp: propagate opacity changes the way we
 
16194
        do transform changes.  Store the total opacity of an item in the
 
16195
        item, as we do with absolute_xform.  This keeps us from doing a
 
16196
        walk up to the root of the hierarchy every time we have to draw an
 
16197
        element (which we we were doing before in
 
16198
        UIElement::GetTotalOpacity.)
 
16199
 
 
16200
        * panel.cpp, panel.h: when we update our total opacity, loop over
 
16201
        the children telling them to update as well.
 
16202
 
 
16203
        * collection.cpp: propagate the panel's total opacity downward
 
16204
        into the newly added subtree.
 
16205
 
 
16206
2007-08-02  Chris Toshok  <toshok@ximian.com>
 
16207
 
 
16208
        * uielement.h, uielement.cpp, canvas.h, canvas.cpp: inline
 
16209
        GetSurface/SetSurface.
 
16210
 
 
16211
2007-08-02  Chris Toshok  <toshok@ximian.com>
 
16212
 
 
16213
        * canvas.cpp (Canvas::OnChildPropertyChanged): return true if we
 
16214
        handle the property changing.
 
16215
 
 
16216
        * control.h, control.cpp: rip out all the proxying behavior.
 
16217
        Control now works as a very specialized container.  Imagine if
 
16218
        Panel had only 1 child, and no generalized way of manipulating it
 
16219
        (other than initializing it from a xaml fragment), and you have
 
16220
        Control.
 
16221
 
 
16222
2007-08-01  Larry Ewing  <lewing@novell.com>
 
16223
 
 
16224
        * xaml.cpp: don't ever make the previous point relative.
 
16225
 
 
16226
2007-08-01  Jeffrey Stedfast  <fejj@novell.com>
 
16227
 
 
16228
        * text.h: Removed deprecated enum values for FontWeights
 
16229
 
 
16230
        * media.cpp, mplayer.cpp: Updated to add features newly added with
 
16231
        the July 2007 release of Silverlight 1.1
 
16232
 
 
16233
2007-07-31  Chris Toshok  <toshok@ximian.com>
 
16234
 
 
16235
        * runtime.cpp (Attach): attach a namescope to the toplevel canvas
 
16236
        if there isn't one when it's attached.
 
16237
 
 
16238
2007-07-31  Jeffrey Stedfast  <fejj@novell.com>
 
16239
 
 
16240
        * media.cpp: NaturalDuration is actually a TimeSpan, not a
 
16241
        Duration.
 
16242
 
 
16243
2007-07-31  Chris Toshok  <toshok@ximian.com>
 
16244
 
 
16245
        * media.h, media.cpp: move the MediaBase events to MediaElement.
 
16246
 
 
16247
2007-07-31  Jeffrey Stedfast  <fejj@novell.com>
 
16248
 
 
16249
        * text.h: Added StyleSimulations enum values.
 
16250
 
 
16251
        * xaml.cpp: Updated the StyleSimulations enum mapping.
 
16252
 
 
16253
2007-07-31  Chris Toshok  <toshok@ximian.com>
 
16254
 
 
16255
        * text.h, text.cpp: Glyph.StyleSimulations changed from a char* to
 
16256
        enum StyleSimulations.
 
16257
 
 
16258
        * xaml.cpp: add stylesimulations enum map.
 
16259
 
 
16260
2007-07-30  Chris Toshok  <toshok@ximian.com>
 
16261
 
 
16262
        * uielement.cpp, uielement.h: add the Tag property.
 
16263
 
 
16264
2007-07-30  Chris Toshok  <toshok@ximian.com>
 
16265
 
 
16266
        * animation.h, animation.cpp: add the three KeyFrameCollection
 
16267
        subclass types, and switch all references to "KeyFrameCollection"
 
16268
        to the more specific types.
 
16269
 
 
16270
        * xaml.cpp (xaml_init): make KeyFrameCollection a ghost element
 
16271
        with Color/Double/PointKeyFrameCollections as subclasses.
 
16272
 
 
16273
        * value.h, type.h, type.cpp: sync up with the KeyFrameCollection
 
16274
        type changes.
 
16275
        
 
16276
2007-07-30  Larry Ewing  <lewing@novell.com>
 
16277
 
 
16278
        * color.cpp: make sure that we size expand 3 digit color
 
16279
        specifications properly.
 
16280
 
 
16281
2007-07-30  Chris Toshok  <toshok@ximian.com>
 
16282
 
 
16283
        * uielement.h, uielement.cpp: remove InsideObject from here, and
 
16284
        move its warning to Visual::InsideObject instead.
 
16285
 
 
16286
        * visual.h, visual.cpp: add visual.cpp, and move implementation of
 
16287
        InsideObject there.
 
16288
 
 
16289
        * Makefile.am (libmoon_la_SOURCES): add visual.cpp
 
16290
 
 
16291
2007-07-30  Larry Ewing  <lewing@novell.com>
 
16292
 
 
16293
        * xaml.cpp: correct smooth path segments to use the correct value for
 
16294
        cp1 and don't try to make it relative because all the sources are
 
16295
        absolute.  Test case at http://intertwingly.net/stories/2007/05/06/?icon=caution
 
16296
        
 
16297
2007-07-30  Chris Toshok  <toshok@ximian.com>
 
16298
 
 
16299
        * clock.h, clock.cpp: add very naive, probably broken first pass
 
16300
        at Clock::Seek.
 
16301
 
 
16302
2007-07-30  Chris Toshok  <toshok@ximian.com>
 
16303
 
 
16304
        * geometry.h, geometry.cpp: PathFigure.IsFilled is gone in RC1.
 
16305
 
 
16306
2007-07-30  Chris Toshok  <toshok@ximian.com>
 
16307
 
 
16308
        * brush.h, brush.cpp: track breaking change of the
 
16309
        Brush.Transform/RelativeTransform properties - they're speced to
 
16310
        be Transforms, not TransformGroups.
 
16311
 
 
16312
2007-07-29  Chris Toshok  <toshok@ximian.com>
 
16313
 
 
16314
        * collection.h, collection.cpp: change "ResourceCollection" to
 
16315
        "ResourceDictionary".
 
16316
 
 
16317
        * uielement.cpp: same.
 
16318
 
 
16319
        * type.cpp, type.h, value.cpp, value.h: same.
 
16320
 
 
16321
        * xaml.cpp: same.
 
16322
 
 
16323
2007-07-27  Chris Toshok  <toshok@ximian.com>
 
16324
 
 
16325
        * xaml.cpp (xaml_set_property_from_str): look up the enum map from
 
16326
        the property name, not the value.
 
16327
 
 
16328
2007-07-27  Chris Toshok  <toshok@ximian.com>
 
16329
 
 
16330
        * transform.h, transform.cpp: cache the transformation matrix once
 
16331
        we recompute it.  This gives us the responsiveness of delayed
 
16332
        updating without the cost of calculating the matrix once per
 
16333
        object associated with it.  a property change just sets the
 
16334
        "need_update" flag, which causes a recompute on the next
 
16335
        GetTransform call.
 
16336
 
 
16337
2007-07-27  Larry Ewing  <lewing@novell.com>
 
16338
 
 
16339
        * uielement.cpp: implement initial support for OpacityMask.
 
16340
 
 
16341
2007-07-26  Miguel de Icaza  <miguel@novell.com>
 
16342
 
 
16343
        This implements support for relative MediaElement sources and
 
16344
        makes all of them go through the downloader, like we do for
 
16345
        images.
 
16346
        
 
16347
        * media.cpp (MediaElement): Do an implementation of SetSource
 
16348
        similar to the one in Image.   Although there is some code that
 
16349
        could be shared, the problem is that some parameters get in the
 
16350
        way.   
 
16351
 
 
16352
        (MediaElement::DownloaderComplete): Move the playback here. 
 
16353
        
 
16354
        (StopLoader): Utility routine, factor this out also on the Image
 
16355
        case, and hook this up to the destructor of Image and
 
16356
        MediaElement.
 
16357
        
 
16358
 
 
16359
2007-07-25  Chris Toshok  <toshok@ximian.com>
 
16360
 
 
16361
        * media.h, media.cpp: add the MediaElement events,and emit
 
16362
        DownloadProgressChanged and CurrentStateChanged.
 
16363
 
 
16364
2007-07-25  Chris Toshok  <toshok@ximian.com>
 
16365
 
 
16366
        * media.h, media.cpp: register the 3 MediaBase events.  now we
 
16367
        need to figure out where to emit them.
 
16368
 
 
16369
2007-07-25  Jackson Harper  <jackson@ximian.com>
 
16370
 
 
16371
        * value.cpp: Assign the kind for NPOBJs.
 
16372
 
 
16373
2007-07-25  Miguel de Icaza  <miguel@novell.com>
 
16374
 
 
16375
        * openfile.cpp (open_file_dialog_show): Change this method to
 
16376
        return an array with all the selected files.   
 
16377
 
 
16378
2007-07-24  Chris Toshok  <toshok@ximian.com>
 
16379
 
 
16380
        * runtime.h, runtime.cpp: permit setting of the the surface's
 
16381
        background color, which is used to fill the widget before we
 
16382
        render the toplevel canvas.  only do this, though, if the canvas
 
16383
        is not transparent.
 
16384
 
 
16385
2007-07-24  Chris Toshok  <toshok@ximian.com>
 
16386
 
 
16387
        * runtime.cpp (Surface::Attach): call Canvas::SetSurface instead
 
16388
        of making the assignment.
 
16389
 
 
16390
        * canvas.h, canvas.cpp: make surface private, and add SetSurface
 
16391
        for runtime.cpp to use.
 
16392
 
 
16393
2007-07-24  Chris Toshok  <toshok@ximian.com>
 
16394
 
 
16395
        * brush.h, brush.cpp: make ImageBrush::SetSource take a const
 
16396
        char*.
 
16397
 
 
16398
2007-07-24  Jackson Harper  <jackson@ximian.com>
 
16399
 
 
16400
        * type.h.in: Add the NPOBJ type.
 
16401
        * value.h.in: Add the npobj value, it's just stored as a pointer
 
16402
        so that we don't become dependent on mozilla.
 
16403
        * value.cpp|h,type.h: sync.
 
16404
 
 
16405
2007-07-24  Jackson Harper  <jackson@ximian.com>
 
16406
 
 
16407
        * typegen.cs: Kind.cs lives in agmono now.
 
16408
 
 
16409
 
 
16410
2007-07-24  Chris Toshok  <toshok@ximian.com>
 
16411
 
 
16412
        * media.h, media.cpp: const-ify the PartName argument of the
 
16413
        SetSource methods.  also, ref the new downloader before unreffing
 
16414
        the old one in Image::SetSource.  they could be the same object.
 
16415
 
 
16416
2007-07-24  Chris Toshok  <toshok@ximian.com>
 
16417
 
 
16418
        * geometry.cpp (RectangleGeometry::Draw): if the geometry's rect
 
16419
        is NULL, return early.
 
16420
 
 
16421
2007-07-23  Chris Toshok  <toshok@ximian.com>
 
16422
 
 
16423
        * Makefile.am (libmooninclude_headers): add some missing headers.
 
16424
 
 
16425
        * error.h: split out the error classes here.
 
16426
 
 
16427
        * libmoon.h: include error.h
 
16428
 
 
16429
        * xaml.h: remove the error classes from here.
 
16430
 
 
16431
        * xaml.cpp: include error.h
 
16432
 
 
16433
2007-07-23  Miguel de Icaza  <miguel@novell.com>
 
16434
 
 
16435
        * runtime.cpp: Removed the timer code from here, move to plugin.
 
16436
 
 
16437
2007-07-20  Chris Toshok  <toshok@ximian.com>
 
16438
 
 
16439
        * xaml.cpp (custom_add_child): this method is what's called when
 
16440
        we add a child to an element of a custom namespace.  Trouble is,
 
16441
        it might be a panel subclass.  If it is, and the child is a
 
16442
        UIElement subclass, go ahead and add the child using
 
16443
        panel_child_add.  This gets the Loaded events working properly in
 
16444
        the chess demo (the trouble was that the custom children weren't
 
16445
        even added to the tree, so their OnLoaded methods weren't being
 
16446
        called)
 
16447
 
 
16448
2007-07-20  Miguel de Icaza  <miguel@novell.com>
 
16449
 
 
16450
        * collection.cpp: Add support for RemoveAt. 
 
16451
 
 
16452
        * runtime.cpp (html_timer_timeout_add): Added helper routine to
 
16453
        setup Html timeouts.
 
16454
 
 
16455
2007-07-20  Chris Toshok  <toshok@ximian.com>
 
16456
 
 
16457
        * canvas.cpp, canvas.h, panel.cpp, panel.h: move much of the guts
 
16458
        from Canvas to Panel.  I consider this cleaning up the source, as
 
16459
        it's entirely possible to write Panel subclasses that aren't
 
16460
        Canvas subclasses, but if you did that you'd have no
 
16461
        rendering/event handling.
 
16462
 
 
16463
        Now pretty much all logic that involves iterating over the list of
 
16464
        children is in Panel.  This also greatly simplifies Canvas.  It is
 
16465
        now just a Panel with 2 interesting things about it: 1) it
 
16466
        provides 2 attached properties to lay out its children, and 2) it
 
16467
        allows the surface to dictate its bounds if it's the toplevel
 
16468
        element.
 
16469
 
 
16470
2007-07-20  Chris Toshok  <toshok@ximian.com>
 
16471
 
 
16472
        * downloader.cpp (Open): set the uri of the downloader.
 
16473
 
 
16474
2007-07-20  Chris Toshok  <toshok@ximian.com>
 
16475
 
 
16476
        * dependencyobject.cpp: allocate the event hash/ptrarray lazily,
 
16477
        so the potentially large number of objects which don't register
 
16478
        events don't allocate them.
 
16479
 
 
16480
2007-07-20  Chris Toshok  <toshok@ximian.com>
 
16481
 
 
16482
        * clock.h, clock.cpp: lock around access to the tick_call list, so
 
16483
        tick calls can be added from other threads.
 
16484
 
 
16485
2007-07-16  Miguel de Icaza  <miguel@novell.com>
 
16486
 
 
16487
        * media.cpp (SetSource): Also handle Completed.
 
16488
 
 
16489
        * downloader.cpp (Send): If a send operation is performed on an
 
16490
        object that has completed its operation, immediately emit the
 
16491
        finished event or error event.
 
16492
 
 
16493
        (Open): During open invalidate the state, to
 
16494
        ensure that new downloads are properly triggered. 
 
16495
 
 
16496
2007-07-16  Chris Toshok  <toshok@ximian.com>
 
16497
 
 
16498
        * frameworkelement.h, frameworkelement.cpp: we need
 
16499
        framework_element_new so managed subclasses of FrameworkElement
 
16500
        are possible.
 
16501
 
 
16502
        * uielement.h, uielement.cpp: same for this type.
 
16503
 
 
16504
2007-07-13  Chris Toshok  <toshok@ximian.com>
 
16505
 
 
16506
        * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
 
16507
        normally we'd only update the bounds of this element on a
 
16508
        width/height change, but if the render transform is someplace
 
16509
        other than (0,0), the transform needs to be updated as well.
 
16510
 
 
16511
2007-07-12  Chris Toshok  <toshok@ximian.com>
 
16512
 
 
16513
        * runtime.h, runtime.cpp, uielement.cpp, uielement.h: Add mouse
 
16514
        capturing.  This should be on Visual and not UIElement, but we
 
16515
        don't dispatch events that way.
 
16516
 
 
16517
2007-07-12  Chris Toshok  <toshok@ximian.com>
 
16518
 
 
16519
        * downloader.h, downloader.cpp: make the Downloader object a bit
 
16520
        more C++ friendly, and make all the private data private.
 
16521
 
 
16522
        Also, take this opportunity to switch to using RegisterEvent/Emit
 
16523
        to generate events, instead of the custom listeners.  This will
 
16524
        let JS hook up to the events.
 
16525
 
 
16526
        * media.h, media.cpp: track the downloader changes.
 
16527
 
 
16528
2007-07-11  Jackson Harper  <jackson@ximian.com>
 
16529
 
 
16530
        * collection.cpp: Comment out the namescope merging stuff for now,
 
16531
        it causes some regressions.
 
16532
 
 
16533
2007-07-12  Jackson Harper  <jackson@ximian.com>
 
16534
 
 
16535
        * xaml.cpp: Restart the whole attribute parsing loop when the
 
16536
        reparse flag is set, otherwise the first attribute will be
 
16537
        skipped.
 
16538
 
 
16539
2007-07-11  Chris Toshok  <toshok@ximian.com>
 
16540
 
 
16541
        * uielement.cpp (UIElement::UIElement): the event names need to
 
16542
        match those used by microsoft.  makes it easier to handle the
 
16543
        event hooking up in the plugin, where the event names are used.
 
16544
 
 
16545
2007-07-11  Chris Toshok  <toshok@ximian.com>
 
16546
 
 
16547
        * xaml.cpp (xaml_set_property_from_str): the plugin does its own
 
16548
        resolution of properties now, so it doesn't need to pass the
 
16549
        property name.  Change this to take the DependencyProperty*
 
16550
        instead.
 
16551
 
 
16552
        * xaml.h: change prototype for xaml_set_property_from_str.
 
16553
 
 
16554
2007-07-11  Jackson Harper  <jackson@ximian.com>
 
16555
 
 
16556
        * collection.cpp: When new objects are added to a collection, try
 
16557
        to merge them into the containers namescope.
 
16558
 
 
16559
2007-07-11  Jackson Harper  <jackson@ximian.com>
 
16560
 
 
16561
        * xaml.cpp: We need to stop parsing if there is an error while
 
16562
        resolving a custom namespace type.
 
16563
 
 
16564
2007-07-10  Chris Toshok  <toshok@ximian.com>
 
16565
 
 
16566
        * dependencyobject.cpp (resolve_property_path): we need to reset
 
16567
        "expression_found" when we hit a '.' so that we'll lookup what
 
16568
        comes after it.
 
16569
 
 
16570
2007-07-10  Chris Toshok  <toshok@ximian.com>
 
16571
        
 
16572
        * dependencyobject.cpp (resolve_property_path): we need to be able
 
16573
        to handle more than just single digit indexers.  use strtol and
 
16574
        recompute 'i' afterward.
 
16575
 
 
16576
        * canvas.cpp (Canvas::InsideObject): revert the change that helped
 
16577
        dr.popper because it breaks lunareclipse.
 
16578
 
 
16579
2007-07-09  Chris Toshok  <toshok@ximian.com>
 
16580
 
 
16581
        * demo.cpp: don't pass the parser callbacks to the individual xaml
 
16582
        functions.
 
16583
 
 
16584
        * control.h, control.cpp: don't pass the parser callbacks to
 
16585
        initialize_from_xaml.
 
16586
 
 
16587
        * xaml.h, xaml.cpp: remove the parser callbacks from the
 
16588
        individual parsing methods, and add xaml_set_parser_callbacks.
 
16589
 
 
16590
2007-07-09  Jeffrey Stedfast  <fejj@novell.com>
 
16591
 
 
16592
        * mplayer.cpp (audio_loop): If we break out of the loop because
 
16593
        the media player was stopped, don't forget to unlock the pause
 
16594
        mutex.
 
16595
        (Close): Don't free the uri here.
 
16596
        (~MediaPlayer): Free it ehre, though.
 
16597
 
 
16598
2007-07-09  Chris Toshok  <toshok@ximian.com>
 
16599
 
 
16600
        * uielement.h, uielement.cpp: we need to register the
 
16601
        KeyUp/KeyDown events (even if we aren't emitting them) to keep
 
16602
        from getting a warning when running aglayoutdemo.
 
16603
 
 
16604
        * xaml.cpp (timespan_from_str): port our System.TimeSpan.Parse
 
16605
        method (and remove all error handling, which should likely go back
 
16606
        in) and replace the previous implementation.  It was failing to
 
16607
        parse timespans like this: 0:0:0.20000000 because it was treating
 
16608
        it as if I wanted "20000000" tenths of a second, instead of 2.
 
16609
        This makes the 'pop' animation in dr.popper actually show up.
 
16610
        
 
16611
2007-07-09  Chris Toshok  <toshok@ximian.com>
 
16612
 
 
16613
        * animation.cpp: fix some missing NotifyAttacheesOfPropertyChange
 
16614
        calls.
 
16615
        (Storyboard::Begin): This is a dubious change.  Remove the check
 
16616
        to see if we weren't already Active.  This fixes the calendar view
 
16617
        in airlines, since there's a window where the start animation is
 
16618
        startable when we enter a day, but the end animation isn't (since
 
16619
        it's still active) when we leave.  So we're left with a selected
 
16620
        day.
 
16621
 
 
16622
        * clock.cpp: instead of Stopping clocks that come to the end of
 
16623
        their active period, move to the Filling state.  ClockGroups with
 
16624
        automatic duration and no Active children still stop correctly.
 
16625
 
 
16626
2007-07-08  Chris Toshok  <toshok@ximian.com>
 
16627
 
 
16628
        * many-files (again!): another, smaller change to the event stuff.
 
16629
        stop using strings for everything that we can.  Register events at
 
16630
        object construction time, and use those id's for everything else.
 
16631
        The string interface is still around because of
 
16632
        EventTrigger::Set/RemoveTarget, as well as the managed code.
 
16633
 
 
16634
        One further change that's needed - the id's are per-instance now,
 
16635
        which is stupid.  they should be static.
 
16636
 
 
16637
        This further cuts down the work (in terms of hash functions) that
 
16638
        needs to be performed in order to dispatch an event.
 
16639
        
 
16640
2007-07-08  Chris Toshok  <toshok@ximian.com>
 
16641
 
 
16642
        * many-files: fairly big change.  Stick the EventObject class
 
16643
        between Base and DependencyObject in the hierarchy, and get rid of
 
16644
        DependencyObject's "events" field.  Get rid of all the registered
 
16645
        events on surface, and emit them directly from the elements where
 
16646
        they occur.  This allows us to remove the Surface* parameter to
 
16647
        all the event methods.  Also, change the EventHandler signature to
 
16648
        include the sender of the event as well as a "calldata" pointer,
 
16649
        which is where we stuff the unmanaged MouseEventArgs (and later
 
16650
        will the KeyboardEventArgs).
 
16651
 
 
16652
        Next step is to add RegisterEvent in EventObject and use that
 
16653
        integer id everywhere instead of the string name when we Emit
 
16654
        events.
 
16655
 
 
16656
2007-07-07  Chris Toshok  <toshok@ximian.com>
 
16657
 
 
16658
        * dependencyobject.h: add GetName() instance method.
 
16659
 
 
16660
        * dependencyobject.cpp (dependency_object_get_name): and call it
 
16661
        here.
 
16662
 
 
16663
        * shape.h, shape.cpp (Shape::GetSizeForBrush): we need this
 
16664
        implementation here since FrameworkElement just goes by
 
16665
        Width/Height.
 
16666
 
 
16667
        * canvas.cpp (Canvas::FindMouseOver): remove the "still over the
 
16668
        same element" optimization.  it's stupid and doesn't work. what
 
16669
        was i thinking?
 
16670
        (Canvas::ComputeBounds): simplify this by using
 
16671
        item->GetLayoutVisible instead of item->GetValue.
 
16672
        (Canvas::Render): enable the rendering optimization where we only
 
16673
        bother rendering elements whose bounds intersect those of the
 
16674
        rectangle we're repainting.  This seriously speeds up airlines.
 
16675
 
 
16676
        * uielement.cpp, uielement.h: add GetLayoutVisible() method, and
 
16677
        another flag.  now the three VisibilityProperty states are
 
16678
        represented by two flags.
 
16679
 
 
16680
        Also, remove the implementation of GetSizeForBrush (not all
 
16681
        UIElements are stroked) and warn callers.
 
16682
 
 
16683
        * control.cpp: Attach to the real object, and report back its
 
16684
        property changes to our parents.  Also, control_initialize_from_xaml
 
16685
        should call Control::InitializeFromXaml.
 
16686
 
 
16687
        * control.h: override the 3 Get*Visible methods from UIElement,
 
16688
        and return our real_object's state.
 
16689
 
 
16690
        
 
16691
 
 
16692
2007-07-07  Jeffrey Stedfast  <fejj@gnome.org>
 
16693
 
 
16694
        * demo.cpp (FileDownloadState::Send): Only notify complete if uri
 
16695
        != NULL (if uri is NULL, then it means it couldn't be opened).
 
16696
        (FileDownloadState::Open): notify error if we can't open the file.
 
16697
 
 
16698
        * mplayer.cpp: Fix to make sure we have
 
16699
        AVCODEC_MAX_AUDIO_FRAME_SIZE bytes left in our output buffer
 
16700
        before calling decode to prevent an ffmpeg warning.
 
16701
 
 
16702
2007-07-07  Chris Toshok  <toshok@ximian.com>
 
16703
 
 
16704
        * brush.cpp: make sure to use GetSizeForBrush for everything
 
16705
        instead of cairo_stroke_extents, which won't work for non-stroked
 
16706
        elements like canvases.  Also, notify changes to the
 
16707
        GradientStopCollection up the hierarchy properly.
 
16708
 
 
16709
        * frameworkelement.h, frameworkelement.cpp: add a GetSizeForBrush
 
16710
        implementation for FrameworkElement so Canvases (and other
 
16711
        uielement subclasses) can have brushes assigned to them (canvas
 
16712
        uses it for its background.)
 
16713
 
 
16714
        * canvas.cpp (Canvas::Render): remove the unused label.
 
16715
 
 
16716
2007-07-06  Miguel de Icaza  <miguel@novell.com>
 
16717
 
 
16718
        * media.cpp: Do not pass the filename as the result now on the
 
16719
        calls.   Code must use the downloader_get_response_text or
 
16720
        downloader_get_response_file to get the contents from the download
 
16721
        (as the request will include the part name).
 
16722
 
 
16723
        * downloader.cpp: Add a cache for zip file parts.
 
16724
 
 
16725
        * media.h (Image): track the part name that was requested on the
 
16726
        call to SetSource.
 
16727
 
 
16728
2007-07-06  Chris Toshok  <toshok@ximian.com>
 
16729
 
 
16730
        * canvas.cpp (Canvas::ComputeBounds): if the width/height
 
16731
        framework element properties haven't been set (their default is
 
16732
        0.0), then don't union it with the rest of our bounds.
 
16733
 
 
16734
2007-07-06  Chris Toshok  <toshok@ximian.com>
 
16735
 
 
16736
        * runtime.h, runtime.cpp: continue the marginalization of
 
16737
        Surface-as-general-data-dumping-ground by passing the cairo
 
16738
        context to all the event handlers that need it (all but Leave, but
 
16739
        should we make this distinction?).
 
16740
        
 
16741
        Make tons of stuff private that doesn't need exposing.  Add
 
16742
        accessors for the easier things, and leave the callbacks public
 
16743
        for now.  Also clean up the partially C/partially c++
 
16744
        implementation in runtime.cpp.  Now the C api is a thin wrapper
 
16745
        around instance method calls, and all the gtk/clock event
 
16746
        callbacks are static methods so they can still access the private
 
16747
        data.
 
16748
 
 
16749
        * canvas.h, canvas.cpp, control.h, control.cpp, uielement.h,
 
16750
        uielement.cpp: fallout from the event signature changes - add
 
16751
        cairo_t* to a lot of places, basically.
 
16752
 
 
16753
        * demo.cpp: no need to use the C api for Surface here.  just use
 
16754
        the c++ one.
 
16755
 
 
16756
2007-07-06  Jeffrey Stedfast  <fejj@novell.com>
 
16757
 
 
16758
        * media.cpp (OnPropertyChanged): Oops, be consistant with other
 
16759
        implementations - only chain up if it wasn't a property owned by
 
16760
        us.
 
16761
 
 
16762
        * text.cpp: We don't use TextBlock::Inlines anymore, so remove it
 
16763
        to save object size.
 
16764
 
 
16765
        * media.cpp (OnPropertyChanged): Fixed to always notify property
 
16766
        listeners and chain up to our parent impl.
 
16767
 
 
16768
2007-07-06  Miguel de Icaza  <miguel@novell.com>
 
16769
 
 
16770
        * downloader.cpp: Implement the zip file support for the
 
16771
        downloader using miniZip, from:
 
16772
 
 
16773
                http://www.winimage.com/zLibDll/minizip.html
 
16774
 
 
16775
        The implementation is in C++, so there are no needs to delegate
 
16776
        this to the managed side as previously planned. 
 
16777
 
 
16778
        There are two APIs: one returns a filename, the other returns the
 
16779
        file loaded into memory, with the size of the memory blob.
 
16780
 
 
16781
2007-07-06  Chris Toshok  <toshok@ximian.com>
 
16782
 
 
16783
        * uielement.h, uielement.cpp (UIElement::OnPropertyChanged): keep
 
16784
        track of the visibility (boolean, not three-state) and hit test
 
16785
        visibility state in our flags.  implement GetVisible() and
 
16786
        GetHitTestVisible() using the flags.
 
16787
 
 
16788
        * canvas.cpp (Canvas::CheckOver): use GetVisible and
 
16789
        GetHitTestVisible to avoid property lookups when dispatching
 
16790
        events.
 
16791
 
 
16792
2007-07-06  Chris Toshok  <toshok@ximian.com>
 
16793
 
 
16794
        * runtime.cpp (measuring_context_create): we keep a singleton
 
16795
        measuring context now.
 
16796
        (measuring_context_destroy): do nothing here.  it's freed in
 
16797
        runtime_shutdown.
 
16798
        (runtime_shutdown): free up our measuring context.
 
16799
 
 
16800
        * canvas.cpp, canvas.h, control.cpp, control.h,
 
16801
        frameworkelement.cpp, frameworkelement.h, shape.cpp, shape.h,
 
16802
        text.cpp, text.h, uielement.cpp, uielement.h, visual.h: change
 
16803
        InsideObject to take the cairo_t* instead of the Surface.
 
16804
        
 
16805
2007-07-06  Chris Toshok  <toshok@ximian.com>
 
16806
 
 
16807
        * runtime.cpp (Surface::SetCursor): new method, used in the event
 
16808
        code to update the cursor as we enter/leave elements.
 
16809
 
 
16810
        * runtime.h: add method, cursor_instance field, and move the body
 
16811
        of the Surface ctor (and initializations) to the .cpp file.
 
16812
        
 
16813
        * xaml.cpp: fix name of Cursor property enum mapping.
 
16814
 
 
16815
        * canvas.h, canvas.cpp, uielement.h, uielement.cpp, control.h,
 
16816
        control.cpp: add MouseCursor* arg to HandleMotion so we can report
 
16817
        back cursor changes on elements.
 
16818
 
 
16819
        Also, in canvas.cpp, implement IsHitTestVisible checking in
 
16820
        CheckOver.
 
16821
 
 
16822
        * enums.h: add the MouseCursor enum.
 
16823
        
 
16824
2007-07-05  Chris Toshok  <toshok@ximian.com>
 
16825
 
 
16826
        * Makefile.am (libmooninclude_headers): remove cutil.h
 
16827
        (libmoon_la_SOURCES): remove cutil.cpp
 
16828
 
 
16829
        * cutil.h, cutil.cpp: remove.  no longer necessary.
 
16830
 
 
16831
        * text.cpp (TextBlock::ComputeBounds): load the identity matrix
 
16832
        before stroke/fill_extents to work around a cairo bug that was
 
16833
        giving us enormous bounds on rotated elements.  also, -1 from x/y
 
16834
        and +2 to width/height of our bounds.
 
16835
 
 
16836
        * media.cpp (MediaElement::ComputeBounds): load the identity
 
16837
        matrix before stroke/fill_extents to work around a cairo bug that
 
16838
        was giving us enormous bounds on rotated elements.  also, -1 from
 
16839
        x/y and +2 to width/height of our bounds.
 
16840
        (Image::ComputeBounds): same.
 
16841
 
 
16842
        * shape.cpp (Shape::DoDraw): only call cairo_new_path if there's
 
16843
        no stroke, we drew it, and do_op was true.
 
16844
        (Shape::ComputeBounds): load the identity matrix before
 
16845
        stroke/fill_extents to work around a cairo bug that was giving us
 
16846
        enormous bounds on rotated elements.  also, -1 from x/y and +2 to
 
16847
        width/height of our bounds.
 
16848
 
 
16849
        * uielement.cpp (OnSubPropertyChanged): we don't need to watch for
 
16850
        subproperty changes on RenderTransformOrigin, since it's a point
 
16851
        and not a dependency object.
 
16852
 
 
16853
2007-07-05  Chris Toshok  <toshok@ximian.com>
 
16854
 
 
16855
        * runtime.cpp, runtime.h: store the last mouse position of events
 
16856
        so that we can continue to update after the clock tick (and
 
16857
        provide motion/enter/leave events to elements that might have
 
16858
        moved under the pointer).
 
16859
 
 
16860
        The "update-input" event isn't presently emitted (see clock.cpp)
 
16861
        because it results in this code calling HandleMotion on every
 
16862
        tick, which ends up emitting the C# event (which is wrong).
 
16863
 
 
16864
        * clock.h, clock.cpp: add a (presently unused) phase to the clock
 
16865
        tick to update the current mouse over after we've updated our
 
16866
        clocks (and therefore possibly updated the transforms on
 
16867
        elements).
 
16868
 
 
16869
2007-07-05  Chris Toshok  <toshok@ximian.com>
 
16870
 
 
16871
        * dependencyobject.cpp (dependency_object_get_name): change this
 
16872
        to return the x:Name value if there is one (and "(null)" if not).
 
16873
        (dependency_object_get_type_name): and make this function do the
 
16874
        job originally done by _get_name.
 
16875
 
 
16876
        * dependencyobject.h: add dependency_object_get_type_name
 
16877
        prototype.
 
16878
 
 
16879
2007-07-05  Chris Toshok  <toshok@ximian.com>
 
16880
 
 
16881
        * uielement.h, uielement.cpp, canvas.h, canvas.cpp: refactor the
 
16882
        mouse event code so that the Handle* calls return void, like the
 
16883
        Enter/Leave calls do.  Also, all checks for "inside"-ness happen
 
16884
        in the canvas/parent object.  Also factored out the loop over
 
16885
        children to "FindMouseOver", with the checks happening in
 
16886
        "CheckOver".
 
16887
 
 
16888
        This needs more testing to make sure that we're still emitting
 
16889
        events in the right order/amount as silverlight.
 
16890
 
 
16891
        In uielement.cpp, also add support for showing the bounding
 
16892
        rectangle.
 
16893
 
 
16894
        * control.h, control.cpp: track event refactoring.
 
16895
 
 
16896
        * frameworkelement.cpp (FrameworkElement::InsideObject): remove
 
16897
        the bounding rect check.  that's handled in the parent object now.
 
16898
 
 
16899
2007-07-04  Chris Toshok  <toshok@ximian.com>
 
16900
 
 
16901
        * media.cpp, media.h: rework our caching for images.  we now
 
16902
        properly refcount things, don't leak the filename (or the
 
16903
        surface), share 1 xlib surface amongst all Image's, and don't
 
16904
        crash.  improvements all around!
 
16905
 
 
16906
2007-07-04  Miguel de Icaza  <miguel@novell.com>
 
16907
 
 
16908
        * value.cpp (Value): Add a couple of extra cases I had missed
 
16909
        where we should be using g_new instead of new as FreeValue always
 
16910
        uses g_free.
 
16911
 
 
16912
2007-07-03  Jackson Harper  <jackson@ximian.com>
 
16913
 
 
16914
        * xaml.cpp: Add the stylus types and some missing collections,
 
16915
        this brings us up to sync with everything implemented in
 
16916
        moonlight.
 
16917
 
 
16918
2007-07-03  Chris Toshok  <toshok@ximian.com>
 
16919
 
 
16920
        * shape.cpp (Shape::DoDraw): if we aren't going to stroke (but we
 
16921
        filled), we need to call cairo_new_path.
 
16922
 
 
16923
2007-07-03  Jackson Harper  <jackson@ximian.com>
 
16924
 
 
16925
        * xaml.cpp: Some post parsing memory cleanup and a little extra
 
16926
        debug code.
 
16927
 
 
16928
2007-07-03  Chris Toshok  <toshok@ximian.com>
 
16929
 
 
16930
        * text.h: add prototype for text_block_set_font_source.
 
16931
 
 
16932
2007-07-03  Chris Toshok  <toshok@ximian.com>
 
16933
 
 
16934
        * shape.cpp, shape.h: add Shape::OnSubPropertyChanged to deal with
 
16935
        brush property changes.  Property chain up to
 
16936
        Shape::OnSubPropertyChanged from Path::OnSubPropertyChanged.
 
16937
        (Shape::ComputeBounds): we need to do the fill, so pass true as
 
16938
        consider_fill to DoDraw.  otherwise a stroke-less filled shape
 
16939
        gets bounds with w == h == 0.0.
 
16940
 
 
16941
2007-07-03  Chris Toshok  <toshok@ximian.com>
 
16942
 
 
16943
        * collection.cpp (VisualCollection::Clear): force the invalidate
 
16944
        when we update our bounds.  Also, don't do anything if the length
 
16945
        of the collection is 0.
 
16946
 
 
16947
2007-07-03  Chris Toshok  <toshok@ximian.com>
 
16948
 
 
16949
        * canvas.cpp (Canvas::ComputeBounds): we need to always include
 
16950
        our FrameworkElement::Width/Height in our bounds computation,
 
16951
        instead of only consulting them if we have no children.
 
16952
 
 
16953
2007-07-03  Chris Toshok  <toshok@ximian.com>
 
16954
 
 
16955
        * media.cpp, media.h: add an image surface cache.  we don't cache
 
16956
        the xlib surface unfortunately, so there's still a slowdown from
 
16957
        generating 1 per Image for shared pixbufs.
 
16958
        
 
16959
2007-07-03  Miguel de Icaza  <miguel@novell.com>
 
16960
 
 
16961
        * collection.cpp: Add support for reporting errors if the iterator
 
16962
        gets out of sync with the collection.
 
16963
 
 
16964
        * demo.cpp: Updated to the new downloader interface.
 
16965
 
 
16966
        * downloader.cpp: Eliminates the in-memory buffer during
 
16967
        download. 
 
16968
 
 
16969
        We still do the progressive updates as those are necessary for the
 
16970
        progress indicators, and if we ever need to hook up during
 
16971
        progressive downloads again.   
 
16972
 
 
16973
        But now downloads on completion must notify the downloader of the
 
16974
        local file where the download contents have been placed (necesary
 
16975
        for implementing the Zip-file support).
 
16976
 
 
16977
        (Downloader): eliminate our in-memory buffer byte_array_contents 
 
16978
 
 
16979
        (downloader_notify): takes a new extra argument, overloaded
 
16980
        depended on the operation.
 
16981
        
 
16982
        (get_response_text): currently not implemented, it needs to be
 
16983
        implemented by a callback into managed code so we can use ZipLib
 
16984
        (unless we can find a suitable unmanaged version).
 
16985
 
 
16986
        * media.cpp: Remove the stale code for progressive image
 
16987
        downloads. 
 
16988
2007-07-02  Miguel de Icaza  <miguel@novell.com>
 
16989
 
 
16990
        * media.cpp (SetSource): If we had a previous downloader, unref
 
16991
        it.  
 
16992
 
 
16993
2007-07-02  Chris Toshok  <toshok@ximian.com>
 
16994
 
 
16995
        * collection.cpp (VisualCollection::Remove): punt on the optimized
 
16996
        behavior for now.  invalidating just the item should work if the
 
16997
        item's bounds are correct, but for some reason the map path
 
16998
        segments in the airline demo aren't redrawing properly.  So, for
 
16999
        now we just invalidate the parent container when an item is
 
17000
        removed.
 
17001
 
 
17002
        * control.h, control.cpp: override GetValue to report back values
 
17003
        from our real_object if there is one, from us otherwise.  and
 
17004
        override SetValue to set values both on us and the real_object if
 
17005
        there is one.
 
17006
 
 
17007
        Also, do nothing in our ComputeBounds call.  Our GetBounds always
 
17008
        returns the right thing (the bounds of the real_object), so
 
17009
        there's no need to do any computation.
 
17010
 
 
17011
        lastly, remove the OnChildPropertyChanged. This is only invoked
 
17012
        for attached properties, so we shouldn't ever be called.
 
17013
 
 
17014
2007-07-02  Chris Toshok  <toshok@ximian.com>
 
17015
 
 
17016
        * canvas.cpp (Canvas::OnChildPropertyChanged): we don't need to
 
17017
        updatebounds/invalidate here.  UpdateTransform will take care of
 
17018
        that for us.
 
17019
 
 
17020
2007-07-02  Chris Toshok  <toshok@ximian.com>
 
17021
 
 
17022
        * shape.cpp (Shape::OnPropertyChanged): turns out we need to
 
17023
        update our bounds on the FillProperty changing as well, for shapes
 
17024
        that aren't stroked.
 
17025
 
 
17026
2007-07-02  Miguel de Icaza  <miguel@ximian.com>
 
17027
 
 
17028
        * collection.cpp: Guard for cases where we are not attached to
 
17029
        anything (closure is set to NULL).
 
17030
 
 
17031
2007-07-02  Chris Toshok  <toshok@ximian.com>
 
17032
 
 
17033
        * collection.cpp (collection_iterator_move_next): rework the logic
 
17034
        here so we don't do the "current = next" assignment if
 
17035
        iterator->first is true.
 
17036
        (VisualCollection::Add): fix g++ warning.
 
17037
        (TriggerCollection::SetVal): return the old element.
 
17038
 
 
17039
2007-07-02  Jackson Harper  <jackson@ximian.com>
 
17040
 
 
17041
        * xaml.cpp: Convert char data into Runs and set them on
 
17042
        TextBlocks, also flush the char data when starting elements, so
 
17043
        things like: <TextBlock>line one<LineBreak />line two</TextBlock>
 
17044
        work properly. <TextBlock><TextBlock.Inlines>text... is illegal
 
17045
        though.
 
17046
 
 
17047
2007-07-02  Miguel de Icaza  <miguel@novell.com>
 
17048
 
 
17049
        * value.cpp: Use g_malloc/g_free as the managed code is not able
 
17050
        to use C++ new operator, so we have a potential error when we
 
17051
        mismatch g_new with new and g_free with delete. 
 
17052
 
 
17053
        Reported by Valgrind.
 
17054
 
 
17055
        * uielement.cpp: Add new helper method needed by Alan.
 
17056
 
 
17057
2007-07-01  Chris Toshok  <toshok@ximian.com>
 
17058
 
 
17059
        * frameworkelement.cpp (FrameworkElement::OnPropertyChanged):
 
17060
        notify attachees here.
 
17061
 
 
17062
        * text.cpp (TextBlock::OnPropertyChanged): need to notify on
 
17063
        Actual Width/Height property changes, even if we don't recalc
 
17064
        anything.
 
17065
 
 
17066
2007-07-01  Chris Toshok  <toshok@ximian.com>
 
17067
 
 
17068
        * panel.cpp (Panel::OnSubPropertyChanged): oops, didn't follow the
 
17069
        guidelines here.  need to chain up to FrameworkElement.  fixes
 
17070
        airline demo.
 
17071
 
 
17072
2007-07-01  Chris Toshok  <toshok@ximian.com>
 
17073
 
 
17074
        * shape.cpp (Line::OnPropertyChanged): use recommended pattern.
 
17075
        (Polygon::OnPropertyChanged): same.
 
17076
        (Path::OnPropertyChanged): same.
 
17077
        (Shape::OnPropertyChanged): same.
 
17078
        (Rectangle::OnPropertyChanged): same.
 
17079
 
 
17080
        * geometry.cpp (GeometryGroup::OnPropertyChanged): use recommended
 
17081
        pattern.
 
17082
        (PathGeometry::OnPropertyChanged): same.
 
17083
        (PathFigure::OnPropertyChanged): same.
 
17084
 
 
17085
        * brush.cpp (Brush::OnPropertyChanged): use the recommended
 
17086
        pattern.
 
17087
        (SolidColorBrush::OnPropertyChanged): same.
 
17088
        (GradientBrush::OnPropertyChanged): same.
 
17089
        (LinearGradientBrush::OnPropertyChanged): same.
 
17090
        (RadialGradientBrush::OnPropertyChanged): new method.
 
17091
 
 
17092
 
 
17093
        * brush.h: add RadialGradientBrush::OnPropertyChanged.
 
17094
 
 
17095
        * animation.cpp (animation_init): mark the storyboard TargetName
 
17096
        and TargetProperty properties as attached.
 
17097
 
 
17098
        * text.cpp (Inline::OnPropertyChanged): follow recommended pattern
 
17099
        for chaining.
 
17100
        (Run::OnPropertyChanged): same.
 
17101
        (Inline::OnSubPropertyChanged): add to handle the inline's
 
17102
        foreground brush changing.
 
17103
 
 
17104
        * text.h: add Inline::OnSubPropertyChanged.
 
17105
 
 
17106
        * panel.h, panel.cpp: add OnSubPropertyChanged for the panel's
 
17107
        background brush, and invalidate whenever it changes.
 
17108
 
 
17109
2007-06-30  Chris Toshok  <toshok@ximian.com>
 
17110
 
 
17111
        * shape.cpp (Shape::OnPropertyChanged): when need to update our
 
17112
        bounding rectangle when a number of the stroke properties change.
 
17113
        Also update them when the stroke itself is changed.
 
17114
 
 
17115
2007-06-29  Chris Toshok  <toshok@ximian.com>
 
17116
 
 
17117
        * text.cpp, text.h: Add back in TextBlock::OnSubPropertyChanged -
 
17118
        we need it for the foreground property.  Make this explicit.
 
17119
        also, add an OnSubPropertyChanged method for Glyphs, to handle the
 
17120
        FillProperty.
 
17121
 
 
17122
2007-06-29  Chris Toshok  <toshok@ximian.com>
 
17123
 
 
17124
        * uielement.cpp (UIElement::UpdateBounds): oops.  really only do
 
17125
        that invalidate if the flag is true.
 
17126
 
 
17127
2007-06-29  Chris Toshok  <toshok@ximian.com>
 
17128
 
 
17129
        * text.cpp: Do CalcActualWidtHeight on any property that might
 
17130
        cause a change.  This is going to be a performance hit, but we
 
17131
        need to take this step backward to get things working with the new
 
17132
        ComputeBounds stuff.  we'll need to reoptimize this so that it
 
17133
        still works.  Make sure to listen to OnCollectionChanged so we'll
 
17134
        update our bounds (and recompute our actual width/height) on
 
17135
        Inlines collection changes.
 
17136
 
 
17137
        * text.h: remove OnSubPropertyChanged (since it's not used.)  Add
 
17138
        OnCollectionChanged.
 
17139
        
 
17140
2007-06-29  Chris Toshok  <toshok@ximian.com>
 
17141
 
 
17142
        * uielement.cpp (UIElement::OnPropertyChanged): reformat this so I
 
17143
        can actually read it, and notify attachees of our property
 
17144
        changes.  this makes ZIndex setting resort the parent panels list.
 
17145
 
 
17146
        * uielement.h: add an arg to UpdateBounds (a bool that defaults to
 
17147
        false) to force an invalidation of the new bounds.
 
17148
 
 
17149
2007-06-29  Chris Toshok  <toshok@ximian.com>
 
17150
 
 
17151
        * panel.h, panel.cpp: okay, i'm stupid.  it's not
 
17152
        OnChildPropertyChanged either.  it's OnCollectionChanged.  we
 
17153
        seriously need to clean this stuff up.
 
17154
 
 
17155
2007-06-29  Chris Toshok  <toshok@ximian.com>
 
17156
 
 
17157
        * panel.h, panel.cpp: child ZIndex property changes are reflected
 
17158
        via OnChildPropertyChanged, not OnSubPropertyChanged.
 
17159
 
 
17160
2007-06-28  Chris Toshok  <toshok@ximian.com>
 
17161
 
 
17162
        * canvas.cpp (Canvas::ComputeBounds): fix the debug printf's.
 
17163
 
 
17164
        * collection.cpp (VisualCollectoin::Clear): update the panel's
 
17165
        bounds after the clear so we redraw everything.
 
17166
 
 
17167
2007-06-27  Chris Toshok  <toshok@ximian.com>
 
17168
 
 
17169
        * uielement.h: stop using x1,y1,x2,y2 for bounds, use a Rect
 
17170
        instead.  Also, rename getbounds to ComputeBounds(), and add a new
 
17171
        GetBounds which returns the bounding rectangle.
 
17172
 
 
17173
        * canvas.cpp (Canvas::ComputeBounds): rename GetBounds to this.
 
17174
        Simplify it a bit by using Rect's instead of the 4 doubles.  Note
 
17175
        that the calls to item->GetBounds do *not* cause item's bounds to
 
17176
        be computed.
 
17177
        (Canvas::OnChildPropertyChanged): just call UpdateTransform on the
 
17178
        child when its Left/Top properties change.
 
17179
        (Canvas::HandleMotion): use Rect.PointInside to clean up the
 
17180
        check.
 
17181
        (Canvas::HandleButton): same.
 
17182
        (Canvas::Render): remove the local "item_rect" and just use the
 
17183
        item's bounds.
 
17184
 
 
17185
        * uielement.cpp (UIElement::UpdateBounds): remember the old
 
17186
        bounds, compute the new bounds, and (if they're different)
 
17187
        invalidate both and chain up to the parent's UpdateBounds method.
 
17188
        (UIElement::UIElement): init the bounds.
 
17189
        (UIElement::OnPropertyChanged): when switch away from a lot of the
 
17190
        FullInvalidate calls.  If the clip or OpacityMask is changed, just
 
17191
        Invalidate.  If the RenderTransform or RenderTransformOrigin is
 
17192
        changed, called UpdateTransform.
 
17193
        (UIElement::UpdateTransform): all UpdateBounds, since it's
 
17194
        uncommon that our transform will change without our bounds
 
17195
        changing..
 
17196
        (UIElement::OnSubPropertyChanged): These shouldn't be necessary,
 
17197
        but again switch away from FullInvalidate to other more targeted
 
17198
        methods.  If the transform properties change, call
 
17199
        UpdateTransform, for clip and OpacityMask just call Invalidate.
 
17200
        (UIElement::Invalidate): add a Rect taking one that just
 
17201
        invalidates the rect, and make the default variety call it with
 
17202
        bounds as the arg.
 
17203
        (UIElement::ComputeBounds): rename GetBounds().
 
17204
 
 
17205
        * shape.cpp (ComputeBounds): don't use GetSurface.  use a
 
17206
        measuring cairo context.
 
17207
        (Shape::OnPropertyChanged): if the Stretch property changed,
 
17208
        UpdateBounds.  also, change from FullInvalidate to just Invalidate
 
17209
        for everything.  Remove the UpdateTransform call as that gets
 
17210
        handled by UIElement::OnPropetyChanged.
 
17211
        (Rectangle::OnPropertyChanged): we only need to invalidate on a
 
17212
        property change.
 
17213
        (Polygon::OnPropertyChanged): if the Points property changes we
 
17214
        need to UpdateBounds and force an Invalidate.  otherwise, just
 
17215
        Invalidate.  no need for FullInvalidate always.
 
17216
        (Polygon::OnCollectionChanged): new method.
 
17217
        UpdateBounds+Invalidate to catch changes to the points collection.
 
17218
        (Polyline::OnPropertyChanged): analogous changes as were made to
 
17219
        Polygon::OnPropertyChanged.
 
17220
        (Polyline::OnCollectionChanged): same as
 
17221
        Polygon::OnCollectionChanged.
 
17222
 
 
17223
        * text.cpp (TextBlock::TextBlock): move the SetValue call to the
 
17224
        end, past all the initialization of things that might be needed in
 
17225
        ComputeBounds, which gets called.
 
17226
        (TextBlock::ComputeBounds): don't use GetSurface.  use a measuring
 
17227
        cairo context.
 
17228
        (TextBlock::CalcActualWidthHeight): use a measuring context here.
 
17229
        (TextBlock::OnPropertyChanged): remove unnecessary call to
 
17230
        FrameworkElement::OnPropertyChanged from the end of the method.
 
17231
        (Glyphs::ComputeBounds): return Rect (0,0,0,0).
 
17232
 
 
17233
        * media.cpp (MediaElement::ComputeBounds): don't use GetSurface.
 
17234
        use a measuring context.
 
17235
        (Image::ComputeBounds): same.
 
17236
        (OnPropertyChanged): just Invalidate here, no need for
 
17237
        FullInvalidate.
 
17238
        (DownloaderEvent): just Invalidate here, not FullInvalidate.
 
17239
 
 
17240
        * frameworkelement.cpp (FrameworkElement::InsideObject): use
 
17241
        Rect.PointInside.
 
17242
 
 
17243
        * control.cpp (Control::GetBounds): use a Rect here.
 
17244
        (Control::ComputeBounds): forward on to the real_object.
 
17245
 
 
17246
        * collection.cpp (VisualCollection::VisualUpdate): when adding an
 
17247
        element, we need to force its invalidation, but not the parent's.
 
17248
        we just update the parent's bounds and UpdateBounds will do the
 
17249
        invalidating if it needs to.
 
17250
 
 
17251
        * runtime.cpp (surface_attach): we don't need to do a full
 
17252
        invalidate.  just update the bounds of the toplevel (which sets
 
17253
        the width and height to the widget's) and force an invalidate
 
17254
        (just in case the user set the width/height to exactly the same
 
17255
        thing before attaching).
 
17256
        (surface_size_allocate): same thing here - no need for
 
17257
        FullInvalidate.  Just update the bounds.
 
17258
        (measuring_context_create): create a tiny surface and a cairo_t
 
17259
        for use in measuring things.
 
17260
        (measuring_context_destroy): destroy the surface and cairo_t.
 
17261
 
 
17262
        * control.h, text.h, canvas.h, media.h, shape.h: GetBounds ->
 
17263
        ComputeBounds.
 
17264
        
 
17265
2007-06-28  Miguel de Icaza  <miguel@novell.com>
 
17266
 
 
17267
        * runtime.cpp (expose_event_callback): Introduce a new
 
17268
        "transparent" field in the Surface.   If set, we clear the
 
17269
        region with a transparent region.
 
17270
 
 
17271
2007-06-27  Miguel de Icaza  <miguel@novell.com>
 
17272
 
 
17273
        * runtime.cpp: Event handlers will work with or without GdkWindows
 
17274
        on the GtkWindows in preparation to support Larry later.
 
17275
 
 
17276
        Paint the surface with alpha transparency for now, this breaks the
 
17277
        F-Spot embedding but will be fixed later when we can paint at an
 
17278
        offset, wonder if this will affect performance for now.
 
17279
 
 
17280
        Call gtk_event_box_set_visible_window () with TRUE, so that we
 
17281
        have a window, for now we require this to get the events working
 
17282
        properly. 
 
17283
        
 
17284
        * canvas.cpp: Drop the translate transform on the topmost canvas
 
17285
        as that was breaking all the code that depended on the inverse
 
17286
        matrix transform to work for doing coordinate mapping based on the
 
17287
        absolute_xform. 
 
17288
 
 
17289
        Instead we need to draw the cairo context at the given offset
 
17290
        in the repaint routine.  This is left as an excercise for Larry. 
 
17291
 
 
17292
        Tests to validate that the mouse input is working:
 
17293
 
 
17294
                * test/demo.exe: enter/leave
 
17295
                * surface demo
 
17296
                * silverlight airlines
 
17297
                * LunarEclipse designer.
 
17298
        
 
17299
        * value.cpp (FreeValue): New method that does the actual releasing
 
17300
        of the value.   We do this here so the managed code can release
 
17301
        things in the same way.
 
17302
 
 
17303
        (value_free_value): helper method.
 
17304
 
 
17305
2007-06-27  Chris Toshok  <toshok@ximian.com>
 
17306
 
 
17307
        * clock.cpp (RaiseEnqueuedEvents): ref/unref the clocks around the
 
17308
        calls to RaiseAccumulatedEvents.
 
17309
 
 
17310
2007-06-27  Chris Toshok  <toshok@ximian.com>
 
17311
 
 
17312
        * clock.cpp (get_now): turns out we really do want this extra *10
 
17313
        in there, so that it matches up with mono's TimeSpan.Tick values.
 
17314
 
 
17315
2007-06-27  Chris Toshok  <toshok@ximian.com>
 
17316
 
 
17317
        * canvas.cpp (Canvas::GetBounds): Collapsed elements shouldn't
 
17318
        take part in bounds computation.
 
17319
        (Canvas::HandleButton): !Visible elements don't take part in hit
 
17320
        testing.
 
17321
        (Canvas::HandleMotion): same here.
 
17322
 
 
17323
2007-06-27  Jackson Harper  <jackson@ximian.com>
 
17324
 
 
17325
        * xaml.cpp: Use Type to lookup the property owner, because it
 
17326
        might be a "ghost" type that the xaml parser can't lookup.
 
17327
 
 
17328
2007-06-27  Miguel de Icaza  <miguel@novell.com>
 
17329
 
 
17330
        * control.cpp: When handling events, we also need to pass the
 
17331
        event notification to the control, not only to the "real_object"
 
17332
        that we are proxying for.   This is what cause the calendar to
 
17333
        malfunction. 
 
17334
 
 
17335
        * canvas.cpp (GetBounds): Do not use 0, 0, 0, 0 for the bounds of
 
17336
        the canvas, instead use the point at (0,0) and the width, height
 
17337
        with its absolute transformation.
 
17338
 
 
17339
        Otherwise canvases with children would end up with
 
17340
        (0,0,0,0) and when compounded would extend the bounding box of
 
17341
        containing ones to include this region even when not needed.
 
17342
 
 
17343
2007-06-26  Chris Toshok  <toshok@ximian.com>
 
17344
 
 
17345
        * uielement.h: add virtual GetSurface() method.
 
17346
 
 
17347
        * uielement.cpp: implement UIElement::GetSurface to just chain up
 
17348
        to the parent element if we have one, and return NULL otherwise.
 
17349
        Also, make item_get_surface call this method.  removes the
 
17350
        dependency on canvas.h from this file.
 
17351
 
 
17352
        * canvas.h: we override UIElement::GetSurface ()
 
17353
 
 
17354
        * canvas.cpp (Canvas::GetSurface): if we're the toplevel canvas,
 
17355
        return our surface.  otherwise call our base class's GetSurface.
 
17356
 
 
17357
        * media.h: rename Image::GetSurface here to GetCairoSurface to
 
17358
        avoid name collision.
 
17359
 
 
17360
        * brush.cpp, media.cpp: track media.h change.
 
17361
 
 
17362
2007-06-26  Miguel de Icaza  <miguel@novell.com>
 
17363
 
 
17364
        * collection.h: Change of course.   The actual public interface
 
17365
        implements IList<T> and ICollection<T> not IList nor ICollection
 
17366
        which means that Add does not need to return an index, and Remove
 
17367
        must return whether it actually removed the object.
 
17368
        
 
17369
        * collection.h (Add): Make this method return the index of the
 
17370
        object just created, so we can implement int IList.Add(...).
 
17371
 
 
17372
        Removed all the empty Add/Remove methods from collections that
 
17373
        were not doing anything interesting with them, the remaining
 
17374
        chunks of old hacks.
 
17375
        
 
17376
        * (SetVal): This method is used to replace a value at a given
 
17377
        index with another one.   For the C# IList.this [int] indexer.
 
17378
 
 
17379
2007-06-26  Chris Toshok  <toshok@ximian.com>
 
17380
 
 
17381
        * clock.cpp: make a copy of the child clocks lists before
 
17382
        traversing them calling callbacks that could result in the lists
 
17383
        being modified.
 
17384
 
 
17385
2007-06-26  Chris Toshok  <toshok@ximian.com>
 
17386
 
 
17387
        * dependencyobject.h: add OnCollectionChanged to allow
 
17388
        propertychange notifications from elements in collections to
 
17389
        bubble up to their parent.
 
17390
 
 
17391
        * collection.h: make the closure a DependencyObject*, just to be
 
17392
        explicit.  also, add OnSubPropertyChanged to Collection so we can
 
17393
        generate OnCollectionChanged notifications.
 
17394
 
 
17395
        * collection.cpp: hook things up on elements in collections, and
 
17396
        generate proper notifications from the collection to its closure.
 
17397
 
 
17398
        * enums.h: add CollectionChangeType for use in
 
17399
        OnCollectionChanged.
 
17400
 
 
17401
        * geometry.h, geometry.cpp, shape.h, shape.cpp: use the new
 
17402
        collection notification stuff to bubble changes up the hierarchy.
 
17403
        
 
17404
2007-06-26  Jeffrey Stedfast  <fejj@novell.com>
 
17405
 
 
17406
        * list.cpp (Replace): Added.
 
17407
 
 
17408
        * dependencyobject.cpp (dependency_object_get_value_no_default):
 
17409
        New binding function.
 
17410
        (dependency_object_get_object_type): Renamed from get_kind() which
 
17411
        didn't mirror the native API at all.
 
17412
 
 
17413
2007-06-26  Sebastien Pouliot  <sebastien@ximian.com>
 
17414
 
 
17415
        * geometry.cpp|h: Add missing PathSegment::OnPropertyChanged
 
17416
        * shape.cpp: Remove debugging output.
 
17417
 
 
17418
2007-06-26  Chris Toshok  <toshok@ximian.com>
 
17419
 
 
17420
        * uielement.h: change render/dorender to take a cairo_t* instead
 
17421
        of a Surface*.
 
17422
 
 
17423
        * canvas.h, control.h, text.h, geometry.h, canvas.cpp,
 
17424
        uielement.cpp, geometry.cpp, shape.cpp, media.h, shape.h,
 
17425
        media.cpp, control.cpp, runtime.cpp, text.cpp: fallout from the
 
17426
        above change.
 
17427
        
 
17428
2007-06-25  Jeffrey Stedfast  <fejj@gnome.org>
 
17429
 
 
17430
        * brush.cpp (LinearGradientBrush::SetupBrush): Use
 
17431
        uielement->get_size_for_brush() because the framework width/height
 
17432
        might be 0.
 
17433
 
 
17434
        * text.cpp: Implement text wrapping and clipping to Width/Height
 
17435
        bounds if specified.
 
17436
 
 
17437
2007-06-25  Miguel de Icaza  <miguel@novell.com>
 
17438
 
 
17439
        * runtime.cpp: Cope with the fact that we are now windowless and
 
17440
        we will be sharing the parent's window.   Fixes mouse events.
 
17441
 
 
17442
        * collection.cpp (collection_get_value_at, collection_count): Add
 
17443
        new methods.
 
17444
 
 
17445
2007-06-25  Jeffrey Stedfast  <fejj@novell.com>
 
17446
 
 
17447
        Mango-licious.
 
17448
 
 
17449
        * text.cpp: Rewritten to use the new MangoRenderer and
 
17450
        MangoAttrForeground classes.
 
17451
 
 
17452
        * mango.cpp: New source file implementing a PangoRenderer and
 
17453
        providing a new PangoAttribute for brushes.
 
17454
 
 
17455
2007-06-25  Chris Toshok  <toshok@ximian.com>
 
17456
 
 
17457
        * runtime.h: add decl for Panel::OnSubPropertyChanged.
 
17458
 
 
17459
        * runtime.cpp (UIElement::OnPropertyChanged): handle changes to
 
17460
        zIndex by invalidating the item's rectangle.
 
17461
        (UIElement::OnSubPropertyChanged): add braces around all the if
 
17462
        blocks for consistency.
 
17463
        (Panel::OnSubPropertyChanged): if a child changes its z index we
 
17464
        need to resort our visual collection.
 
17465
        (Canvas::render): loop over the z sorted list of children instead
 
17466
        of the default collection list.
 
17467
        (item_init): just to be anal, cast the Zindex default value to
 
17468
        gint32.
 
17469
 
 
17470
x2007-06-25  Chris Toshok  <toshok@ximian.com>
 
17471
 
 
17472
        * collection.cpp: keep a z-sorted list in VisualCollection,
 
17473
        adding/removing elements from it when needed, and clearing it when
 
17474
        the collection is cleared.
 
17475
 
 
17476
        * collection.h: add a virtual clear method so VisualCollection can
 
17477
        override it.  Also, add a z_sorted_list member to
 
17478
        VisualCollection, so we can deal with the ZIndices of children.
 
17479
 
 
17480
2007-06-24  Alan McGovern  <amcgovern@novell.com>
 
17481
 
 
17482
        * runtime.(cpp|h): Implemented UIElement.ZIndexPropery
 
17483
 
 
17484
2007-06-24  Larry Ewing  <lewing@novell.com>
 
17485
 
 
17486
        * runtime.cpp: rework size allocation and make toplevel Canvas
 
17487
        items read the allocation->x and allocation->y offsets from the
 
17488
        surface widget when computing their position.
 
17489
 
 
17490
2007-06-24  Chris Toshok  <toshok@ximian.com>
 
17491
 
 
17492
        * Makefile.am (libmooninclude_HEADERS): add collection.h
 
17493
        (libmoon_la_SOURCES): add collection.cpp
 
17494
 
 
17495
        * collection.h, collection.cpp: new files.  split out Collection
 
17496
        and all the collection-related code from runtime.h/runtime.cpp.
 
17497
        arguably the collections specific to certain elements should exist
 
17498
        completely in those .cpp/.h files, instead of here.
 
17499
 
 
17500
        * runtime.h, runtime.cpp: remove collection stuff.
 
17501
 
 
17502
        * clock.h, animation.h, transform.h: #include collection.h
 
17503
 
 
17504
        * value.h, value.h.in: #include <string.h> here so we can stop
 
17505
        requiring it for everyone else.  really, though we should be using
 
17506
        g_strcmp or something that's already pulled in from glib.
 
17507
        
 
17508
2007-06-24  Chris Toshok  <toshok@ximian.com>
 
17509
 
 
17510
        * Makefile.am (libmoon_la_SOURCES): add array.cpp
 
17511
        (libmooninclude_HEADERS): add array.h
 
17512
 
 
17513
        * xaml.cpp, value.cpp, shape.cpp, geometry.cpp: include array.h
 
17514
 
 
17515
        * array.h, array.cpp: new files, split them out from
 
17516
        runtime.h/.cpp.
 
17517
 
 
17518
2007-06-24  Chris Toshok  <toshok@ximian.com>
 
17519
 
 
17520
        * Makefile.am (libmooninclude_HEADERS): add xaml.h
 
17521
 
 
17522
        * xaml.h: split this out from...
 
17523
 
 
17524
        * runtime.h: ... here.
 
17525
 
 
17526
        * xaml.cpp, runtime.cpp, control.h, demo.cpp: #include xaml.h
 
17527
        
 
17528
2007-06-24  Chris Toshok  <toshok@ximian.com>
 
17529
 
 
17530
        * Makefile.am (libmooninclude_HEADERS): add control.h
 
17531
 
 
17532
        * control.h: split out class Control stuff...
 
17533
 
 
17534
        * runtime.h: .. from here.
 
17535
 
 
17536
        * runtime.cpp: #include control.h
 
17537
 
 
17538
        * control.cpp: same.
 
17539
 
 
17540
2007-06-24  Chris Toshok  <toshok@ximian.com>
 
17541
 
 
17542
        * runtime.h: add OnLoaded methods to UIElement, Panel, and
 
17543
        Control.
 
17544
 
 
17545
        * runtime.cpp (UIElement::OnLoaded): emit the Loaded event if we
 
17546
        haven't already.
 
17547
        (VisualCollection::Add): only invoke OnLoaded on the item if the
 
17548
        closure (the parent of the collection) has been loaded.
 
17549
        (VisualCollection::Insert): same.
 
17550
        (Panel::OnLoaded): call OnLoaded on all our children, then chain
 
17551
        up.
 
17552
        (surface_attach): call canvas->OnLoaded instead of
 
17553
        emit_loaded_events(canvas).  also, don't use a special IS_CANVAS
 
17554
        flag - just use the type system.
 
17555
        (item_get_surface): get rid of the IS_CANVAS flag and just use the
 
17556
        type system.
 
17557
 
 
17558
        * control.cpp (Control::OnLoaded): new method, invoke OnLoaded on
 
17559
        the real object before chaining up.
 
17560
 
 
17561
2007-06-24  Larry Ewing  <lewing@novell.com>
 
17562
 
 
17563
        * runtime.cpp: disable transparent surfaces while fixing the
 
17564
        drawing offset problem.
 
17565
 
 
17566
2007-06-24  Larry Ewing  <lewing@novell.com>
 
17567
 
 
17568
        * brush.cpp: use cairo_create_similar rather than using an image
 
17569
        brush.
 
17570
 
 
17571
2007-06-24  Chris Toshok  <toshok@ximian.com>
 
17572
 
 
17573
        * runtime.cpp (VisualCollection::Add): only emit Loaded if the
 
17574
        tree we're adding it to has already been loaded.
 
17575
 
 
17576
2007-06-24  Larry Ewing  <lewing@novell.com>
 
17577
 
 
17578
        * demo.cpp: add -trans flag to demo to make the toplevel transparent.
 
17579
 
 
17580
2007-06-24  Larry Ewing  <lewing@novell.com>
 
17581
 
 
17582
        * runtime.cpp: add comments to the new gtk functions.
 
17583
 
 
17584
        * runtime.h: expose surface_paint.
 
17585
 
 
17586
2007-06-23  Miguel de Icaza  <miguel@novell.com>
 
17587
 
 
17588
        * runtime.cpp: Since unrealize does not seem to be called when our
 
17589
        widget is destroyed by Mozilla, we need to cleanup on destroy the
 
17590
        tick event.   This takes care of one of the plugin crashers.
 
17591
 
 
17592
        There are still others that I have to find out, I added some
 
17593
        debugging prints for now.
 
17594
 
 
17595
2007-06-24  Larry Ewing  <lewing@novell.com>
 
17596
 
 
17597
        * runtime.cpp: derive from EventBox not drawing area so that we
 
17598
        can use it as a quick method of switching back and forth between
 
17599
        transparent and not.  Add a method to let external code paint to a
 
17600
        cairo context.
 
17601
 
 
17602
2007-06-23  Jeffrey Stedfast  <fejj@gnome.org>
 
17603
 
 
17604
        * text.cpp (SetValue): Overridden to enforce Text strings not
 
17605
        preserving any leading nor trailing whitespace (as defined in the
 
17606
        Silverlight docs).
 
17607
 
 
17608
2007-06-22  Jeffrey Stedfast  <fejj@novell.com>
 
17609
 
 
17610
        * xaml.cpp (matrix_value_from_str): use delete[] to free the array
 
17611
        of doubles instead of g_free() as it was allocated with new, not
 
17612
        g_malloc().
 
17613
 
 
17614
        * text.cpp (Layout): D'oh, make sure to always init text/block
 
17615
        width/height values. This fixes VideoBrush again.
 
17616
 
 
17617
2007-06-22  Jeffrey Stedfast  <fejj@novell.com>
 
17618
 
 
17619
        * mplayer.cpp: Initialize 'opened' state variable.
 
17620
 
 
17621
        * text.cpp (GetValue): Override DependencyObject::GetValue() so
 
17622
        that we can special-case getting TextBlock::Actual[Width,Height]
 
17623
        properties (this allows us to prolong re-calculating these values
 
17624
        until after the user has set the values he's going to set -
 
17625
        re-calculating on ever property change is too expensive.
 
17626
 
 
17627
        * runtime.h: Make DependencyObject::GetValue() virtual.
 
17628
 
 
17629
2007-06-22  Jeffrey Stedfast  <fejj@gnome.org>
 
17630
 
 
17631
        * text.cpp: Stubbed out the required virtual methods for Glyphs
 
17632
        and attempted to make ActualWidth and ActualHeight calculated
 
17633
        immediately in an attempt to get DrPopper working better.
 
17634
 
 
17635
2007-06-22  Sebastien Pouliot  <sebastien@ximian.com>
 
17636
 
 
17637
        * shape.cpp: Small hack to avoid calling Draw 2 times during render.
 
17638
 
 
17639
2007-06-22  Chris Toshok  <toshok@ximian.com>
 
17640
 
 
17641
        * xaml.cpp (key_spline_from_str): free up the point arrays from
 
17642
        point_array_from_str after we use them.
 
17643
        (xaml_set_property_from_str): same.
 
17644
 
 
17645
2007-06-22  Chris Toshok  <toshok@ximian.com>
 
17646
 
 
17647
        * value.cpp (Value): the copy ctor is definitely corrupting memory
 
17648
        in the MATRIX case - we need to allocate the destination matrix.
 
17649
 
 
17650
2007-06-21  Chris Toshok  <toshok@ximian.com>
 
17651
 
 
17652
        * Makefile.am: not that anyone should be installing this yet,
 
17653
        install the headers to $(includedir)/libmoon.
 
17654
 
 
17655
2007-06-21  Jeffrey Stedfast  <fejj@novell.com>
 
17656
 
 
17657
        * text.cpp: Reworked text layout/rendering logic - we now cache
 
17658
        width/height info for each text string as well as the overall
 
17659
        block width/height. This info is then used to align text strings
 
17660
        on each line along the bottom edge (rather than along the top
 
17661
        edge) of the line of text.
 
17662
 
 
17663
        * xaml.cpp (char_data_handler): Ignore insignificant lwsp CDATA
 
17664
 
 
17665
2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
17666
 
 
17667
        * stylus.h|cpp: Add InkPresenter.
 
17668
        * media.h|cpp: Add C methods to stop, pause and play a MediaElement.
 
17669
        * value.h, type.h|cpp: Updated.
 
17670
 
 
17671
2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
17672
 
 
17673
        * animation.cpp: Register *KeyFrame::Value properties as nullable.
 
17674
        * clock.cpp: Register TimelineMarker properties.
 
17675
 
 
17676
2007-06-21  Jackson Harper  <jackson@ximian.com>
 
17677
 
 
17678
        * xaml.cpp: When setting the x:Name also set the name property.
 
17679
 
 
17680
2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
17681
 
 
17682
        * stylus.cpp|h: Added Stroke and DrawingAttributes.
 
17683
        * runtime.h: All collections can now implement GetElementType.
 
17684
        * value.h, type.h, type.cpp: Updated.
 
17685
        
 
17686
2007-06-21  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
17687
 
 
17688
        * stylus.cpp|h: Added.
 
17689
        * runtime.cpp|h: Define and call stylus_init.
 
17690
        * Makefile.am: Add stylus.cpp|h.
 
17691
        * value.h, type.h, type.cpp: Updated.
 
17692
 
 
17693
2007-06-21  Jackson Harper  <jackson@ximian.com>
 
17694
 
 
17695
        * xaml.cpp: Add a global set of callbacks, so that all of the
 
17696
        custom callbacks for a given parsing instance use the same
 
17697
        methods.  This needs to be encapsulated properly, but for now is
 
17698
        fine.
 
17699
 
 
17700
2007-06-20  Chris Toshok  <toshok@ximian.com>
 
17701
 
 
17702
        * animation.cpp, animation.h: KeyFrameCollection overrides
 
17703
        Collection::Clear to clear its sorted list.
 
17704
 
 
17705
        * runtime.cpp, runtime.h: add overrideable Collection::Clear
 
17706
        method, and move collection_clear's body into it.
 
17707
 
 
17708
2007-06-21  Jackson Harper  <jackson@ximian.com>
 
17709
 
 
17710
        * runtime.cpp|h: Don't return false on single element collections
 
17711
        on the first item.
 
17712
 
 
17713
2007-06-21  Jeffrey Stedfast  <fejj@gnome.org>
 
17714
 
 
17715
        * text.cpp: Use absolute font sizes, makes the fonts not so huge.
 
17716
 
 
17717
2007-06-20  Jackson Harper  <jackson@ximian.com>
 
17718
 
 
17719
        * xaml.cpp: Set namecopes earlier, and make sure to copy the
 
17720
        namescope when we recreate a class using x:Class.
 
17721
        - When we use x:Class reparse the element's attributes, so it can
 
17722
        hook up to events and set properties.
 
17723
        * runtime.cpp|h: When the Name property is set, register it with
 
17724
        the proper NameScope.
 
17725
        
 
17726
2007-06-20  Chris Toshok  <toshok@ximian.com>
 
17727
 
 
17728
        * runtime.cpp, runtime.h: add rudimentary Visibility support.  we
 
17729
        only support Visible/Hidden really, and treat Collapsed as Hidden.
 
17730
 
 
17731
        * xaml.cpp (enum_from_str): use g_strcasecmp here.
 
17732
 
 
17733
2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
 
17734
 
 
17735
        * shape.cpp|h: Implement caching of Path (this could be extended to
 
17736
        all shapes).
 
17737
        * geometry.cpp|h: Notify on changes.
 
17738
 
 
17739
2007-06-20  Sebastien Pouliot  <sebastien@ximian.com>
 
17740
 
 
17741
        * xaml.cpp: Don't allocate (and free) a copy of the PML before 
 
17742
        calling geometry_from_str.
 
17743
 
 
17744
2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
 
17745
 
 
17746
        * shape.cpp: Fix some Stretch modes for paths. This can get very
 
17747
        expansive, next step is to cache the cairo_path_t* in the Path and
 
17748
        recompute it only on changes.
 
17749
 
 
17750
2007-06-20  Chris Toshok  <toshok@ximian.com>
 
17751
 
 
17752
        * xaml.cpp (is_valid_event_name): new function.
 
17753
        (dependency_object_hookup_event): only allow valid events to be
 
17754
        hooked up.
 
17755
 
 
17756
2007-06-20  Jackson Harper  <jackson@ximian.com>
 
17757
 
 
17758
        * runtime.cpp|h: New method for finding an objects namescope.
 
17759
        - Call an objects loaded event when it is added to a Collection
 
17760
        - Some bits of namescope merging, these functions aren't called
 
17761
        yet though.
 
17762
 
 
17763
2007-06-20  Chris Toshok  <toshok@ximian.com>
 
17764
 
 
17765
        * xaml.cpp (dependency_object_hookup_event): we need more than
 
17766
        just the Loaded event.
 
17767
 
 
17768
2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
 
17769
 
 
17770
        * text.cpp (Run): Don't set default font values here... we need
 
17771
        them to be unset if they aren't explicitly set by the user so that
 
17772
        we can inherit font properties from our parent TextBlock.
 
17773
        (Draw): Fixed to make Runs inherit unset font properties from the
 
17774
        TextBlock at render-time. Also fixed to make sure we have a
 
17775
        foreground brush to draw with... if unset, use the default brush.
 
17776
 
 
17777
2007-06-20  Chris Toshok  <toshok@ximian.com>
 
17778
 
 
17779
        * runtime.cpp (UIElement::render): make this print the classname
 
17780
        like UIElement::getbounds() does.
 
17781
 
 
17782
        * runtime.h, runtime.cpp: make control_initialize_from_xaml take
 
17783
        the xaml parser custom element callbacks.
 
17784
 
 
17785
2007-06-20  Chris Toshok  <toshok@ximian.com>
 
17786
 
 
17787
        * runtime.cpp (runtime_shutdown): set inited to false, since we
 
17788
        want people to be able to call runtime_init again after this.
 
17789
 
 
17790
        * type.cpp.in (Type::RegisterType): allocate types if we need to.
 
17791
        (Type::Shutdown): free types.
 
17792
 
 
17793
        * type.h.in (private): make the types array dynamically allocated.
 
17794
 
 
17795
        * type.h, type.cpp: sync
 
17796
 
 
17797
2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
 
17798
 
 
17799
        * text.cpp (TextBlock): Need to actually set ActualWidth and
 
17800
        ActualHeight values.
 
17801
 
 
17802
2007-06-20  Chris Toshok  <toshok@ximian.com>
 
17803
 
 
17804
        * clock.cpp (Clock::Tick): if we hit our natural duration but our
 
17805
        duration is Automatic, go to Fill mode, since we may have child
 
17806
        clocks that started after us and need a chance to run their last
 
17807
        tick.
 
17808
 
 
17809
2007-06-20  Jeffrey Stedfast  <fejj@novell.com>
 
17810
 
 
17811
        * runtime.cpp (collection_iterator_move_next): If we can't iterate
 
17812
        to the next item, don't set current = NULL.
 
17813
        (dependency_object_get_name): New function needed for the binding.
 
17814
 
 
17815
2007-06-20  Larry Ewing  <lewing@novell.com>
 
17816
 
 
17817
        * runtime.cpp: use gdk_cairo helper functions and clip to the
 
17818
        expose event region.
 
17819
 
 
17820
        * runtime.h: remove unused members.
 
17821
 
 
17822
        * media.cpp: use cairo_get_target rather than keeping track of
 
17823
        pixmap.
 
17824
 
 
17825
2007-06-20  Jackson Harper  <jackson@ximian.com>
 
17826
 
 
17827
        * xaml.cpp/runtime.h: Add one more callback, this one will hookup
 
17828
        events to methods. So things like Loaded=CanvasLoaded will work.
 
17829
        * demo.cpp:
 
17830
        * control.cpp:
 
17831
        
 
17832
2007-06-20  Jackson Harper  <jackson@ximian.com>
 
17833
 
 
17834
        * xaml.cpp: More verbose debug output with namespace lookup
 
17835
        errors.
 
17836
        - Map in the default namespaces if we are unable to lookup the
 
17837
        proper namespace name.
 
17838
 
 
17839
2007-06-20  Sebastien Pouliot  <sebastien@ximian.com> 
 
17840
 
 
17841
        * shape.cpp: Call cairo_[stroke|fill]_extents inside Shape::getbounds
 
17842
        or the mouse moving won't work.
 
17843
 
 
17844
2007-06-20  Sebastien Pouliot  <sebastien@ximian.com>
 
17845
 
 
17846
        * shape.cpp: Fix Shape::getbounds to work even if no stroke brush is
 
17847
        assigned, in that case we get the extents of the fill.
 
17848
 
 
17849
2007-06-20  Chris Toshok  <toshok@ximian.com>
 
17850
 
 
17851
        * animation.cpp: um.. "oops".
 
17852
 
 
17853
        * xaml.cpp (xaml_init): enable the parsing of the color/point
 
17854
        spline key frames.
 
17855
 
 
17856
2007-06-20  Chris Toshok  <toshok@ximian.com>
 
17857
 
 
17858
        * animation.cpp: guard against division by zero in the double
 
17859
        keyframe GetCurrentValue method.  I'll fix this method up some
 
17860
        more and then report it to the other animation types.
 
17861
 
 
17862
        Also, add the Spline(Color,Point)KeyFrames.
 
17863
 
 
17864
        * clock.cpp, clock.h: fixes to get all this working again while
 
17865
        still supporting the needed things from the last patch (like
 
17866
        BeginTime.)
 
17867
 
 
17868
        * transform.cpp (GetTransform): i hate like hell to have to do
 
17869
        this, but if we scale by 0.0 cairo can't invert the matrix and
 
17870
        then everything goes belly up.  0.00002 is the smallest number I
 
17871
        found (0.00001 doesn't work, for instance) where cairo doesn't
 
17872
        complain about the inverse stuff.
 
17873
 
 
17874
        * media.cpp (media_element_set_buffering_time): we have to use the
 
17875
        hacky Value ctor here.
 
17876
        (media_element_set_position): and here.
 
17877
 
 
17878
        * runtime.cpp (emit_loaded_events): new function to walk the tree
 
17879
        and emit loaded events.
 
17880
        (surface_attach): call emit_loaded_events here - the docs specify
 
17881
        that Loaded is emitted after it's associated with the host but
 
17882
        before it's rendered.
 
17883
        (Canvas::render): don't emit Loaded here.
 
17884
        (runtime_init): output a nice message here if you run cairo
 
17885
        against a verion of cairo that you shouldn't be using.
 
17886
 
 
17887
        * type.h, type.cpp, value.h: resync.
 
17888
 
 
17889
2007-06-20  Jackson Harper  <jackson@ximian.com>
 
17890
 
 
17891
        * xaml.cpp: Improve the way we handle x:Class attributes failing
 
17892
        to load.
 
17893
 
 
17894
2007-06-20  Jackson Harper  <jackson@ximian.com>
 
17895
 
 
17896
        * xaml.cpp: Hookup attached properties in the property_from_str
 
17897
        method.
 
17898
 
 
17899
2007-06-19  Chris Toshok  <toshok@ximian.com>
 
17900
 
 
17901
        * media.cpp (media_element_get_buffering_time): use AsTimeSpan().
 
17902
        (media_element_get_position): same.
 
17903
        (media_init): mark BufferingTime and Position as TimeSpan's.
 
17904
 
 
17905
2007-06-19  Chris Toshok  <toshok@ximian.com>
 
17906
 
 
17907
        * clock.cpp, clock.h: bad time for a a rearchitecting, perhaps,
 
17908
        but this was necessary to get BeginTime's to be supported.  It
 
17909
        reintroduces the "popping" in the surface demo, though, and
 
17910
        honestly I'm unsure how we can ever guarantee that enough ticks
 
17911
        will have occured to be sure we won't see the initial state of the
 
17912
        surface objects.
 
17913
 
 
17914
        * animation.cpp: track clock api changes.
 
17915
 
 
17916
        * runtime.h: decl for FramworkElement::OnPropertyChanged.
 
17917
        
 
17918
        * runtime.cpp (EventObject::Emit): make a copy of the list before
 
17919
        we start emitting, to keep us crashing if the list is modified
 
17920
        while we're traversing it.
 
17921
        (FramworkElement::OnPropertyChanged): invalidate on width/height
 
17922
        changes.
 
17923
 
 
17924
        * xaml.cpp: when parsing a TIMESPAN property, use
 
17925
        timespan_from_str.  This fixes the parsing of BeginTime
 
17926
        attributes.
 
17927
 
 
17928
        * type.cpp.in: register TIMESPAN.
 
17929
 
 
17930
        * value.h.in: add a AsTimeSpan method, and special hacky
 
17931
        constructor so the parser can construct a value of type TIMESPAN
 
17932
        (which is problematic since it's typedef'ed to gint64.)  Move the
 
17933
        TimeSpan typedef here.
 
17934
 
 
17935
        * value.cpp: add the impl for that hacky ctor.
 
17936
        
 
17937
        * type.h.in: add a TIMESPAN kind.
 
17938
 
 
17939
        * type.h, value.h, type.cpp: sync.
 
17940
 
 
17941
2007-06-19  Jackson Harper  <jackson@ximian.com>
 
17942
 
 
17943
        * xaml.cpp: we need to new the points.
 
17944
 
 
17945
2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
 
17946
 
 
17947
        * geometry.cpp: Add safety to ensure the number of points are 
 
17948
        valid before iterating on them.
 
17949
 
 
17950
2007-06-19  Jackson Harper  <jackson@ximian.com>
 
17951
 
 
17952
        * xaml.cpp: make sure to get all the points.
 
17953
        - sneak peek at the exciting new attached property setting code.
 
17954
        - improve error message
 
17955
        - dont step off the end of the string when the trailing characters
 
17956
        are white space.
 
17957
 
 
17958
2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
 
17959
 
 
17960
        * *.cpp: Updated to use the new List type.
 
17961
 
 
17962
        * runtime.cpp|h (Collection): Modified to use List instead of
 
17963
        GList which made some code simpler, we get to take advantage of
 
17964
        destructors, woo!
 
17965
 
 
17966
        * demo.cpp (main): Removed surface_destroy() and
 
17967
        runtime_shutdown() out of the delete_event callback (gtk timeouts
 
17968
        could still fire after the gtk_main_quit() call it seems).
 
17969
 
 
17970
2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
 
17971
 
 
17972
        * runtime.cpp: Enforce UIElement::ClipProperty when rendering
 
17973
        Canvas
 
17974
 
 
17975
2007-06-19  Jackson Harper  <jackson@ximian.com>
 
17976
 
 
17977
        * xaml.cpp: Content properties can be inherited.
 
17978
 
 
17979
2007-06-19  Jackson Harper  <jackson@ximian.com>
 
17980
 
 
17981
        * xaml.cpp: Make sure that we have a previous figure.
 
17982
 
 
17983
2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
 
17984
 
 
17985
        * geometry.cpp|h: Revert previous changes. That didn't work well
 
17986
        with groups/collections.
 
17987
        * shape.cpp: Path::Draw now process the path (find and susbtract
 
17988
        origin) when Stretch requires it.
 
17989
 
 
17990
2007-06-19  Jackson Harper  <jackson@ximian.com>
 
17991
 
 
17992
        * xaml.cpp: Set the namescope right away, so FindName will work in
 
17993
        element constructors.
 
17994
 
 
17995
2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
 
17996
 
 
17997
        * animation.cpp: Switched to use List instead of GList.
 
17998
 
 
17999
2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
 
18000
 
 
18001
        * geometry.cpp|h: Change API so the Strech value is propagated from
 
18002
        the shape to all the geometry figures. Fixed Stretch for LineGeometry,
 
18003
        EllipseGeometry and RectangleGeometry.
 
18004
        * shape.cpp: Path::Draw now supply the Stretch property value to
 
18005
        all Geometry objects drawing methods.
 
18006
 
 
18007
2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
 
18008
 
 
18009
        * shape.cpp: Don't call cairo_new_path inside moon_ellipse. It's
 
18010
        the caller responsbility to do so, if required (e.g. it isn't for
 
18011
        geometry stuff).
 
18012
 
 
18013
2007-06-19  Jackson Harper  <jackson@ximian.com>
 
18014
 
 
18015
        * xaml.cpp: Implement all the optional points on path markup.
 
18016
 
 
18017
2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
 
18018
 
 
18019
        * shape.cpp: Fix Stretch for Polyline and Polygon.
 
18020
 
 
18021
2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
 
18022
 
 
18023
        * xaml.cpp: Updated to use a real linked list implementation.. for
 
18024
        added uberness. Also reduces memory leakage.
 
18025
 
 
18026
        * mplayer.cpp: Stubbed out a few more things and can now return
 
18027
        the video duration.
 
18028
 
 
18029
2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
 
18030
 
 
18031
        * shape.cpp|h: Set Shape::Stretch default to None and set Stretch
 
18032
        property to fill inside Rectangle and Ellipse ctors.
 
18033
 
 
18034
2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
 
18035
 
 
18036
        * runtime.cpp (Insert): Make this use SharedAdd too, which I
 
18037
        presume was the whole point.
 
18038
 
 
18039
2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
 
18040
 
 
18041
        * shape.cpp: Fix Strech support for Rectangle (it behave more like
 
18042
        Ellipse but that shows only with non squares).
 
18043
 
 
18044
2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
 
18045
 
 
18046
        * mplayer.cpp (audio_loop): Fixed muting to advance the correct
 
18047
        number of pts and not hang forever in a g_usleep() (gah, the timer
 
18048
        was a huge negative value).
 
18049
 
 
18050
2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18051
 
 
18052
        * clock.h: Added TimelineMarker.
 
18053
        * type.h, type.cpp, value.h: Updated.
 
18054
 
 
18055
2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
 
18056
 
 
18057
        * shape.h: Fix filling for Polyline. MS supports filling polylines,
 
18058
        even unclosed ones.
 
18059
 
 
18060
2007-06-19  Chris Toshok  <toshok@ximian.com>
 
18061
 
 
18062
        * runtime.cpp (surface_realloc): make sure to reassign s->cairo to
 
18063
        s->cairo_xlib after recreating the xlib stuff.  avoids a crash
 
18064
        when resizing surfaces.
 
18065
 
 
18066
2007-06-19  Sebastien Pouliot  <sebastien@ximian.com> 
 
18067
 
 
18068
        * shape.cpp: Add Strech support for Ellipse.
 
18069
 
 
18070
2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
 
18071
 
 
18072
        * shape.cpp: Add Strech support for Rectangle (only None is different).
 
18073
        Add comments to Line as Stretch doesn't apply for this Shape.
 
18074
 
 
18075
2007-06-19  Miguel de Icaza  <miguel@novell.com>
 
18076
 
 
18077
        * runtime.cpp (Collection): Add new Insert method, and update all
 
18078
        the callers that overwrote it.   We probably need to cleanup
 
18079
        everything that is doing virtual overrides and is a no-op 
 
18080
 
 
18081
2007-06-19  Chris Toshok  <toshok@ximian.com>
 
18082
 
 
18083
        * runtime.cpp (clear_drawing_area): this method doesn't need to
 
18084
        clean up the xlib cairo context/surface and the pixmap.
 
18085
 
 
18086
        There are two possibilities:
 
18087
 
 
18088
        1) the drawing area has been realized, which means we have xlib
 
18089
        surface/context + pixmap.  We're guaranteed to hit
 
18090
        unrealized_callback before this method is called, so they will
 
18091
        have already been freed.
 
18092
 
 
18093
        2) the drawing area has not been realized, which means we have no
 
18094
        xlib surface/context + pixmap, and this method doesn't need to do
 
18095
        anything.
 
18096
 
 
18097
2007-06-19  Jackson Harper  <jackson@ximian.com>
 
18098
 
 
18099
        * runtime.h/shape.cpp: Fix typo.
 
18100
 
 
18101
2007-06-19  Jeffrey Stedfast  <fejj@novell.com>
 
18102
 
 
18103
        * text.cpp (Run::OnPropertyChanged): Always chain up to our parent
 
18104
        implementation and if one of our properties changed, notify our
 
18105
        attachees.
 
18106
        (Inline::OnPropertyChanged): Same.
 
18107
        (TextBlock::OnPropertyChanged): Keep track of Inlines changes.
 
18108
        (TextBlock::Draw): Use our foreground brush directly and the same
 
18109
        for run's foreground brush.
 
18110
 
 
18111
2007-06-19  Miguel de Icaza  <miguel@novell.com>
 
18112
 
 
18113
        * runtime.cpp: Implement collection iterators.
 
18114
 
 
18115
2007-06-19  Chris Toshok  <toshok@ximian.com>
 
18116
 
 
18117
        * xaml.cpp (timespan_from_str): don't walk off the end of the
 
18118
        string.
 
18119
 
 
18120
2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18121
 
 
18122
        * animation.h|cpp: Remove pureness from KeyFrame::InterpolateValue.
 
18123
 
 
18124
2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18125
 
 
18126
        * animation.h|cpp: Add *_key_frame_new.
 
18127
 
 
18128
2007-06-19  Jackson Harper  <jackson@ximian.com>
 
18129
 
 
18130
        * xaml.cpp\runtime.h: Add a public function for setting
 
18131
        properties, from strings.  Basically a copy and paste of my
 
18132
        set_attributes code.  Eventually I should be able to merge the
 
18133
        two, but they use different name lookup mechanisms right now.
 
18134
 
 
18135
2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
 
18136
 
 
18137
        * animation.cpp (Remove): Remove the KeyFrame from the sorted list
 
18138
        before removing it from the collection (since it may be freed by
 
18139
        Collection::Remove).
 
18140
 
 
18141
2007-06-19  Miguel de Icaza  <miguel@novell.com>
 
18142
 
 
18143
        * runtime.cpp: Add support for notifying the consumer that the
 
18144
        surface has resized.
 
18145
 
 
18146
        Add support for resizing objects.
 
18147
 
 
18148
2007-06-19  Jeffrey Stedfast  <fejj@gnome.org>
 
18149
 
 
18150
        * brush.cpp (~VideoBrush): We want to detach from the media
 
18151
        element, not ourselves. Doh.
 
18152
 
 
18153
2007-06-19  Sebastien Pouliot  <sebastien@ximian.com>
 
18154
 
 
18155
        * shape.h: Update comments about which shapes needs, or not, to 
 
18156
        provide a getxformorigin method.
 
18157
 
 
18158
2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18159
 
 
18160
        * media.h|cpp: Add media_base_new.
 
18161
 
 
18162
2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18163
 
 
18164
        * value.cpp|h|in: Inline the non-DependencyObject
 
18165
        As* functions as well.
 
18166
 
 
18167
2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18168
        
 
18169
        * typegen.cs: Removed some dead code.
 
18170
        * value.cpp.in: Deleted, not needed anymore.
 
18171
        * runtime.cpp, value.cpp, type.cpp.in: Moved 
 
18172
        implementation of Value and Type into their own files.
 
18173
        * type.cpp: Updated.
 
18174
 
 
18175
2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18176
 
 
18177
        * type.h, type.h.in: Created, moved declaration of Type here.
 
18178
        * *.h|cpp|in: Move Value:Kind to Type::Kind and update all
 
18179
        references. Move the Value::As* into the header.
 
18180
        * typegen.cs: Updated to cope with Kind changes.
 
18181
 
 
18182
2007-06-19  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18183
 
 
18184
        * runtime.cpp|h, value.h.in: Remove current nullable code,
 
18185
        it's easier to store an is_nullable flag in the registered
 
18186
        property, and store NULL values in the objects hashtable.
 
18187
        * xaml.cpp: Revert unnecessary fixes.
 
18188
        * value.h: Updated.
 
18189
 
 
18190
2007-06-19  Chris Toshok  <toshok@ximian.com>
 
18191
 
 
18192
        * runtime.h: get rid of the specialized surface callbacks for
 
18193
        mouse events.  we can dispatch them directly to the UIElements.
 
18194
        Change the EventObject signatures to permit an event/call data as
 
18195
        well as the closure.  add the sender object for kicks while we're
 
18196
        at it.
 
18197
 
 
18198
        * runtime.cpp: dispatch element events through the
 
18199
        DependencyObject's events object.
 
18200
 
 
18201
        * animation.h, animation.cpp: update signatures for event
 
18202
        handlers.
 
18203
 
 
18204
        * control.cpp (handle_button): track signature change.
 
18205
 
 
18206
        * clock.cpp: same.
 
18207
 
 
18208
2007-06-18  Chris Toshok  <toshok@ximian.com>
 
18209
 
 
18210
        * clock.cpp (TimeManager::Tick): add a lot of timing foo.
 
18211
        (ClockGroup::RaiseAccumulatedEvents): raise the Completed event if
 
18212
        we switching to the stopped state and our progress is 1.0 (that
 
18213
        is, if we've finished).
 
18214
 
 
18215
        * animation.h, animation.cpp (Storyboard::Begin): rather heavy
 
18216
        handed (but bulletproof) approach to making Begin work on a
 
18217
        storyboard that has run its course - destroy the clock hierarchy
 
18218
        and recreate it.  Also, add a handler for the ClockGroup's
 
18219
        "Completed" event so we can reflect that back to managed land.
 
18220
 
 
18221
        * runtime.h: add C functions to add/remove handlers from the
 
18222
        EventObject inside a dep object.
 
18223
 
 
18224
2007-06-18  Jackson Harper  <jackson@ximian.com>
 
18225
 
 
18226
        * xaml.cpp: Set text context properties from char data.  This
 
18227
        allows you to do things like <Run>Hi I am some text</Run>.  As far
 
18228
        as I can tell, Run is the only element that allows this.
 
18229
 
 
18230
2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
 
18231
 
 
18232
        * shape.cpp|h: Fix Line and Ellipse getxformorigin.
 
18233
 
 
18234
2007-06-18  Jackson Harper  <jackson@ximian.com>
 
18235
 
 
18236
        * xaml.cpp: Now implement the smooth beziers correctly, much
 
18237
        thanks to spouliot for figuring out the formula to reflect control
 
18238
        points.
 
18239
 
 
18240
2007-06-18  Chris Toshok  <toshok@ximian.com>
 
18241
 
 
18242
        * clock.h, clock.cpp: ifdef some debug spew, add a bitmask for
 
18243
        what the timemanager should do on a given tick, and add some
 
18244
        #defines/logic to calculate the gtk delay from the desired
 
18245
        framerate.  Set the desired framerate to 20fps.
 
18246
 
 
18247
2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
 
18248
 
 
18249
        Instead of attaching to Brush::ChangedProperty, connect to NULL.
 
18250
 
 
18251
        * media.cpp (render): If the width/height are 0.0, then use the
 
18252
        video's natural width/height.
 
18253
        (OnPropertyChanged): chain up.
 
18254
 
 
18255
        * shape.cpp (OnPropertyChanged): Always chain up to our parent.
 
18256
 
 
18257
2007-06-18  Chris Toshok  <toshok@ximian.com>
 
18258
 
 
18259
        * xaml.cpp (dependency_object_set_attributes): suggestion by rolf.
 
18260
        fixes setting of nullable property values.
 
18261
 
 
18262
2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18263
 
 
18264
        * runtime.cpp: Store NULL again in the property hashtable,
 
18265
        but use the lookup_extended function to detect this and return
 
18266
        a correct NULL value instead of the default value.
 
18267
 
 
18268
2007-06-18  Chris Toshok  <toshok@ximian.com>
 
18269
 
 
18270
        * runtime.cpp (RemoveHandler): more cleanups.
 
18271
 
 
18272
2007-06-18  Chris Toshok  <toshok@ximian.com>
 
18273
 
 
18274
        * runtime.cpp (RemoveHandler): g_free'ing a new'ed c++ object =
 
18275
        bad.
 
18276
 
 
18277
2007-06-18  Jackson Harper  <jackson@ximian.com>
 
18278
 
 
18279
        * xaml.cpp: Implement path closing and ArcSegments.
 
18280
 
 
18281
2007-06-18  Miguel de Icaza  <miguel@novell.com>
 
18282
 
 
18283
        * runtime.cpp (SetValue): This looks painful, now
 
18284
        DependencyObjects are stored inside the hash but they might
 
18285
        contain a NULL.   This seems bad.
 
18286
        
 
18287
        (Value): Do not delete null dependency objects.
 
18288
 
 
18289
        Remove this patch, and try demo.exe, enter/leave/enter, this
 
18290
        crashes now, because the leave sets the fill to "null" and the
 
18291
        enter then tries to access it
 
18292
 
 
18293
2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
 
18294
 
 
18295
        * brush.cpp: Do proper OnPropertyChanged proagation.
 
18296
        (ImageBrush::OnPropertyChanged): Notify using the generic
 
18297
        Brush::ChangedProperty.
 
18298
        (VideoBrush::OnPropertyChanged): Same.
 
18299
        (VideoBrush::OnSubPropertyChanged): Same.
 
18300
 
 
18301
        * shape.cpp (Shape): Need to keep track of our stroke/fill brushes
 
18302
        so we can listen for change notification.
 
18303
 
 
18304
        * runtime.cpp (UIElement): Same.
 
18305
        (Panel): Here too.
 
18306
 
 
18307
        * text.cpp (TextBlock): Same here (need to do it for Inlines too
 
18308
        at some point).
 
18309
 
 
18310
        * media.cpp (media_base_new): Removed, you can't instantiate a
 
18311
        MediaBase.
 
18312
        (advance_frame): Optimization hack: don't invalidate if our
 
18313
        opacity is 0.
 
18314
        (MediaElement::render): Respect opacity and stretch properties.
 
18315
 
 
18316
2007-06-18  Jackson Harper  <jackson@ximian.com>
 
18317
 
 
18318
        * xaml.cpp: We need to create new figures if we get a Move
 
18319
        command.
 
18320
 
 
18321
2007-06-18  Chris Toshok  <toshok@ximian.com>
 
18322
 
 
18323
        * demo.cpp: use TimeManager::AddTickCall for the async file
 
18324
        loading.  This makes the image visible immediately for me, instead
 
18325
        of requiring the animations be paused to see it.
 
18326
 
 
18327
        * clock.cpp, clock.h: add a one-shot "tick call" idle handler of
 
18328
        sorts to TimeManager.  This way we can better control when the
 
18329
        cross thread downloader calls happen, and keep them from affecting
 
18330
        the frame rate, and also keep them from being starved by an
 
18331
        overzealous demo.cpp.
 
18332
 
 
18333
2007-06-18  Chris Toshok  <toshok@ximian.com>
 
18334
 
 
18335
        * runtime.cpp (unrealized_callback): remove the render handler.
 
18336
        (realized_callback): attach the render handler.
 
18337
        (render_surface): a very simple render handler.  We just force gtk
 
18338
        to process all pending updates.
 
18339
 
 
18340
        * clock.cpp (TimeManager::Tick): as a temporary hack, have
 
18341
        TimeManager emit the "render" event after every animation tick.
 
18342
        We should add tuning to this method to achieve usable framerates
 
18343
        without killing the cpu.
 
18344
 
 
18345
        * clock.h: make TimeManager subclass from EventObject so we can
 
18346
        hook up to events on it.
 
18347
 
 
18348
2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
 
18349
 
 
18350
        * shape.cpp: getbounds gets bad results if stroke (or fill) isn't 
 
18351
        called. We create a new path so the bounds, for an invisible object,
 
18352
        will be empty.
 
18353
 
 
18354
2007-06-18  Chris Toshok  <toshok@ximian.com>
 
18355
 
 
18356
        * clock.cpp (Clock::TimeUpdated): return immediately if we're stopped.
 
18357
 
 
18358
2007-06-18  Jackson Harper  <jackson@ximian.com>
 
18359
 
 
18360
        * xaml.cpp: Fix smooth quadratic bezier's.
 
18361
 
 
18362
2007-06-18  Chris Toshok  <toshok@ximian.com>
 
18363
 
 
18364
        * media.cpp, media.h (Image::render): on our first rendering,
 
18365
        convert to using an xlib surface to speed up future redraws.
 
18366
 
 
18367
2007-06-18  Chris Toshok  <toshok@ximian.com>
 
18368
 
 
18369
        * runtime.cpp (UIElement::dorender): add this, and make everything
 
18370
        that calls ->render call ->dorender.
 
18371
 
 
18372
        * control.cpp (render): call dorender on the realobject.
 
18373
 
 
18374
        * runtime.h: add STARTTIMER/ENDTIMER macros, and add
 
18375
        UIElement::dorender which can be used to wrap render calls with
 
18376
        debug info (in this case timer info.)
 
18377
 
 
18378
        * clock.h: add prototype for get_now().
 
18379
 
 
18380
        * clock.cpp (get_now): make this public, so we can use it for
 
18381
        timers.
 
18382
 
 
18383
2007-06-18  Jackson Harper  <jackson@ximian.com>
 
18384
 
 
18385
        * xaml.cpp: Implement Path Geometry parsing.
 
18386
 
 
18387
2007-06-18  Jeffrey Stedfast  <fejj@novell.com>
 
18388
 
 
18389
        * brush.cpp (VideoBrush::SetupBrush): Get a reference to the
 
18390
        MediaElement if we don't already have one.
 
18391
        (VideoBrush::OnPropertyChanged): SourceName does not refer to a
 
18392
        uri, instead SourceName refers to a MediaElement.
 
18393
 
 
18394
        * media.cpp: Implemented some more helper "setters", defaulted
 
18395
        some more MediaElement property values to correct values, and
 
18396
        implemented updating of both the CurrentState property and the
 
18397
        PositionProperty.
 
18398
 
 
18399
        * mplayer.cpp (Position): Implemented.
 
18400
 
 
18401
2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
 
18402
 
 
18403
        * media.cpp: Close the path after rendering the image.
 
18404
        * shape.cpp: Avoid the filling operation in calls to getbounds. Also
 
18405
        open and close a path before drawing normal (square) rectangles.
 
18406
 
 
18407
2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18408
 
 
18409
        * runtime.h|cpp: Add DependencyObject::RegisterNullable. Add a few
 
18410
        C-style methods to access Type and DependencyProperty fields.
 
18411
        In Type::IsSubclassOf don't take into account nullability.
 
18412
        * animation.cpp, clock.cpp: Register nullable properties as such.
 
18413
 
 
18414
2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18415
 
 
18416
        * media.h|cpp: Add media_base_new.
 
18417
 
 
18418
2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18419
 
 
18420
        * value.h.in: Make checked_get_subclass handle null values. Include the
 
18421
        Kind::*Null* values in the C# Kind.cs, and change their values to fit
 
18422
        in a signed int.
 
18423
        * value.h: Updated.
 
18424
 
 
18425
2007-06-18  Miguel de Icaza  <miguel@novell.com>
 
18426
 
 
18427
        * media.cpp (DownloaderEvent): If the Width/Height have not been
 
18428
        set explicitly, provide them from the images (demo works, but it
 
18429
        takes a while, due to the idle handler being too busy to be
 
18430
        invoked).
 
18431
 
 
18432
        * runtime.cpp (Canvas::render):  Cope with rounding from floats to
 
18433
        ints, add 2, fixes the droppings in the surface.
 
18434
 
 
18435
        Include some of my debugging helpers (you sprinkle
 
18436
        draw_grid in key places to see whats going on, useful to debug the
 
18437
        bounding boxes and visually inspect if things are right.
 
18438
        
 
18439
        * media.cpp (getbounds): use the framework width/height not the
 
18440
        pixbuf image size, this shrinks the size of the bounding box.
 
18441
        (getxformorigin): Use it here too.
 
18442
 
 
18443
2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
 
18444
 
 
18445
        * brush.cpp|h: SetupBrush and SetupGradient now returns a boolean that
 
18446
        indicates if their use would be visible or not (e.g. opacity > 0.0).
 
18447
        * shape.cpp: Don't setup brush for getting bounds (do_op == FALSE). 
 
18448
        Don't Fill or Stroke if the brush is invisible (opacity == 0).
 
18449
 
 
18450
2007-06-18  Marek Habersack  <grendello@gmail.com>
 
18451
 
 
18452
        * mplayer.cpp (ALIGN): make sure the ALIGN macro is correct on 64
 
18453
        bit platforms too.
 
18454
 
 
18455
        * ffvideo.cpp (ALIGN): as above.
 
18456
 
 
18457
2007-06-18  Chris Toshok  <toshok@ximian.com>
 
18458
 
 
18459
        * clock.cpp: simplify pausing and stopping a clock that has
 
18460
        children by keeping track of the new state (the one the clock will
 
18461
        take at the end of this tick).  This is necessary because the
 
18462
        parent clock doesn't actually stop until the end of the tick, so
 
18463
        we still need to update child clocks after we've determined the
 
18464
        parent clock should stop.
 
18465
 
 
18466
Mon Jun 18 19:35:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
 
18467
 
 
18468
        * runtime.cpp: properly remove items from the doubly-linked list.
 
18469
 
 
18470
2007-06-18  Chris Toshok  <toshok@ximian.com>
 
18471
 
 
18472
        * animation.cpp (AnimationStorage::~AnimationStorage): delete the
 
18473
        baseValue here.
 
18474
        (Storyboard::Begin): force a TimeManager tick after we've hooked
 
18475
        up the clock, so that all the animations have proper values before
 
18476
        the next render.  Fixes the "popping" in the surface demo.
 
18477
 
 
18478
2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18479
 
 
18480
        * runtime.cpp: Changed DependencyObject::SetValue to never store 
 
18481
        a null value in the hashtable.
 
18482
 
 
18483
2007-06-18  Sebastien Pouliot  <sebastien@ximian.com>
 
18484
 
 
18485
        * brush.cpp: Refactor the pattern creation to allow caching.
 
18486
        * media.cpp|h: Add caching of cairo_pattern_t to Image.
 
18487
 
 
18488
Mon Jun 18 17:53:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
 
18489
 
 
18490
        * runtime.cpp: use motion hints for smoother motion event handling.
 
18491
 
 
18492
2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
 
18493
 
 
18494
        * text.cpp|h: Runs now cache their own PangoFontDescription and
 
18495
        PangoLayouts as an optimzation (seems to be very slight for simple
 
18496
        us-ascii text, but might help enormously for more complex
 
18497
        languages). Also added some FIXME thoughts.
 
18498
 
 
18499
2007-06-18  Everaldo Canuto  <ecanuto@novell.com>
 
18500
 
 
18501
        * downloader.cpp: Add missing downloader_notify_finished.
 
18502
 
 
18503
2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18504
 
 
18505
        * downloader.cpp: Only set dummy downloader functions if they
 
18506
        aren't already set.
 
18507
 
 
18508
2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18509
 
 
18510
        * runtime.cpp: Add a few null checks.
 
18511
        * downloader.cpp: Add initial dummy downloader functions to get
 
18512
        meaningful messages if the downloader functions aren't initialized.
 
18513
 
 
18514
2007-06-18  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
18515
        
 
18516
        * typegen.cs: Special case a few things for DependencyObject, 
 
18517
        and make a few messages more informative.
 
18518
        * runtime.h|cpp: Add a value_type field to Type, and a constructor
 
18519
        to specify the value. Add a constructor to DependencyProperty that
 
18520
        can specify default value and type (in the case the default value
 
18521
        doesn't have the same type as the property). Changed
 
18522
        DependencyObject::SetValue to never store a null value in the 
 
18523
        hashtable. In Value destructor check for null pointers in a few 
 
18524
        cases. Update all uses of Value.k to Value.GetKind.
 
18525
        * type.cpp.in: Update to specify value_type information.
 
18526
        * value.h.in: Implement nullable type handling in Value.
 
18527
        * value.cpp, type.cpp, value.h: Updated.
 
18528
 
 
18529
2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
 
18530
 
 
18531
        * text.cpp (get_size_for_brush): Calculate width/height if they
 
18532
        are unset.
 
18533
        (Draw): Don't use the brush if we aren't going to render (this is
 
18534
        needed so that we don't get into a recursive loop since we have to
 
18535
        manually calculate width/height).
 
18536
 
 
18537
2007-06-18  Jeffrey Stedfast  <fejj@gnome.org>
 
18538
 
 
18539
        * text.cpp (get_size_for_brush): Implemented (since
 
18540
        cairo_stroke_extents() won't work for us).
 
18541
 
 
18542
        * brush.cpp (VideoBrush::SetupBrush): Use get_size_for_brush().
 
18543
        (ImageBrush::SetupBrush): Same.
 
18544
 
 
18545
        * runtime.cpp (UIElement::get_size_for_brush): New method to get
 
18546
        width/height needed by Brushes for scaling.
 
18547
 
 
18548
2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
 
18549
 
 
18550
        * runtime.cpp (UIElement::OnPropertyChanged): Chain up to our
 
18551
        parent.
 
18552
 
 
18553
2007-06-17  Atsushi Enomoto  <atsushi@ximian.com>
 
18554
 
 
18555
        * text.cpp : added text_block_set_font_source().
 
18556
 
 
18557
2007-06-17  Miguel de Icaza  <miguel@novell.com>
 
18558
 
 
18559
        * brush.cpp (brush_init): Create a BRUSH property called
 
18560
        "FrameChange", it is internal and the sole use of it is so that
 
18561
        upper layers that care about brush changes act on it by updating
 
18562
        their elements.
 
18563
 
 
18564
        * runtime.cpp (UIElement::OnSubPropertyChanged): Changes on
 
18565
        brushes only trigger an invalidate, there is no need to recompute
 
18566
        bounds. 
 
18567
 
 
18568
2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
 
18569
 
 
18570
        * xaml.cpp: c++ isn't smart enough to invoke the correct .dtor on
 
18571
        delete for a void pointer, it can only delete known class types.
 
18572
 
 
18573
2007-06-17  Jackson Harper  <jackson@ximian.com>
 
18574
 
 
18575
        * xaml.cpp: Implement x:Class, we can now load the Surface demo's
 
18576
        XAML file, and it's custom Canvas class (things still don't work
 
18577
        though because the custom canvas uses a downloader.)
 
18578
 
 
18579
2007-06-17  Miguel de Icaza  <miguel@novell.com>
 
18580
 
 
18581
        The surface rotate and translate controls should both work, and
 
18582
        the enter/leave events are now correct.
 
18583
        
 
18584
        * runtime.cpp (UIElement::handle_motion, handle_button): Change
 
18585
        the semantics to better match Silverlight.   Now these methods
 
18586
        should check if the mouse is inside their region before calling
 
18587
        the callback.
 
18588
 
 
18589
        This is necessary because children of the canvas (and panel) are
 
18590
        within the confines of the bounding box, but the canvas can be
 
18591
        smaller than that.   The canvas is a container whose boundaries
 
18592
        are only used for paiting, children might be outside of these
 
18593
        boundaries.
 
18594
 
 
18595
        It is necessary in these cases to pass the events to all the
 
18596
        children within the canvas bounding box and for each child to
 
18597
        determine if the event was within its range. 
 
18598
 
 
18599
        (inside_object): replaced the default implementation for
 
18600
        FrameworkElements with a more performing version: instead of
 
18601
        mapping the point and using cairo_in_stroke and in_fill operations
 
18602
        on a rectangle with mapped coordinates, we map the coordinates and
 
18603
        check against the rectangle.
 
18604
 
 
18605
        (Canvas::getbounds): if we are the topmost canvas, the boundaries
 
18606
        are those from the Surface, not the ones that include the maximum
 
18607
        extent from the children.   Used to do precise mouse enter/leave. 
 
18608
 
 
18609
2007-06-17  Jeffrey Stedfast  <fejj@gnome.org>
 
18610
 
 
18611
        * media.cpp (MediaElement::OnPropertyChanged): Chain to parent
 
18612
        when its not our property.
 
18613
 
 
18614
        * brush.cpp: Implemented VideoBrush (tho it's not yet debugged).
 
18615
 
 
18616
        * mplayer.cpp (GetSurface): Added.
 
18617
 
 
18618
        * text.cpp (text_init): Fixed to use RegisterFull for Froeground
 
18619
        so we can specify Value::BRUSH as the default value type instead
 
18620
        of it using SolidColorBrush as the type.
 
18621
 
 
18622
2007-06-17  Chris Toshok  <toshok@ximian.com>
 
18623
 
 
18624
        * xaml.cpp (timespan_from_str): fix parsing of timespans shorter
 
18625
        than 1 second.
 
18626
 
 
18627
2007-06-17  Chris Toshok  <toshok@ximian.com>
 
18628
 
 
18629
        * clock.cpp (Clock::TimeUpdated): remove a special case for the
 
18630
        clock's duration being Automatic.  Fixes infinite animation in
 
18631
        Surface port.
 
18632
 
 
18633
        * runtime.cpp (crossing_notify_callback): return type is gboolean,
 
18634
        and make sure we always return something.
 
18635
        
 
18636
2007-06-17  Miguel de Icaza  <miguel@novell.com>
 
18637
 
 
18638
        Propagate changes from children of the transform up to our
 
18639
        containers, this is done in several steps:
 
18640
 
 
18641
        * runtime.cpp (DependencyObject::Attach, Detach): New methods that
 
18642
        are used to attach an object to a container and detach it.   They
 
18643
        were previously inlined inside SetValue.
 
18644
 
 
18645
        (Collection::Add, Remove): Attach and detach objects when they are
 
18646
        added/removed. 
 
18647
        
 
18648
        * transform.cpp (Transform::OnPropertyChanged): if any class
 
18649
        derived from Transform has one of its properties changed, it
 
18650
        has a visual effect, propage this to the attacchees.
 
18651
 
 
18652
        (TransformGroup::OnSubPropertyChanged): Escalate here as well,
 
18653
        this will catch the messages coming from anyone in the collection
 
18654
        to its container. 
 
18655
 
 
18656
        (TransformCollection::OnSubPropertyChanged): Buble the event up
 
18657
        here as well.
 
18658
 
 
18659
        * runtime.cpp (handle_motion): Change the order in which we send
 
18660
        the events to the UIElement, we should start at the topmost
 
18661
        element, and have the toplevel canvas be last.
 
18662
 
 
18663
2007-06-17  Sebastien Pouliot  <sebastien@ximian.com>
 
18664
 
 
18665
        * brush.cpp: Refactor ImageBrush::SetupBrush to reuse parts of it
 
18666
        inside Image::render.
 
18667
        * media.cpp: Use code from ImageBrush to render image with it's
 
18668
        properties (e.g. Stretch)
 
18669
        * transform.cpp: Update (commented) debug output.
 
18670
 
 
18671
2007-06-17  Miguel de Icaza  <miguel@novell.com>
 
18672
 
 
18673
        * runtime.cpp (GetValueNoDefault): This is necessary so we can
 
18674
        distinguish a value that has been explicitly set from one that has
 
18675
        not.
 
18676
        
 
18677
 
 
18678
        * media.cpp (Image): use Framework::Width,Height for the image
 
18679
        dimensions instead of the pixbuf width/height, used in extents and
 
18680
        rotation computation.
 
18681
 
 
18682
        * runtime.cpp (Canvas::render): Set the clipping path on the
 
18683
        identity matrix so we do not miss-clip.
 
18684
 
 
18685
        Render the canvas from 0, 0, fwidht, fheight, not the expose
 
18686
        area. 
 
18687
 
 
18688
2007-06-16  Miguel de Icaza  <miguel@novell.com>
 
18689
 
 
18690
        * runtime.cpp (Cairo::render): The canvas also needs to set the
 
18691
        matrix and clear its background. 
 
18692
 
 
18693
        (surface_resize): convenience entry point to resize a surface.
 
18694
        Notice that this will resize the surface, but not the toplevel
 
18695
        canvas. 
 
18696
 
 
18697
2007-06-16  Jackson Harper  <jackson@ximian.com>
 
18698
 
 
18699
        * demo.cpp:
 
18700
        * runtime.h:
 
18701
        * control.cpp:
 
18702
        * xaml.cpp: Use a callback for setting custom attributes in
 
18703
        elements.
 
18704
 
 
18705
2007-06-16  Jeffrey Stedfast  <fejj@gnome.org>
 
18706
 
 
18707
        * media.cpp: Implemented all the needed virtual methods for
 
18708
        MediaElement to work, using my new MediaPlayer class.
 
18709
 
 
18710
        * mplayer.cpp|h: New class for playing media sources.
 
18711
 
 
18712
        * ffvideo.cpp: Removed from the build.
 
18713
 
 
18714
2007-06-16  Miguel de Icaza  <miguel@novell.com>
 
18715
 
 
18716
        Observation: either it is the surface, or something else is very
 
18717
        slow, but entering the surface is quite slow right now to show the
 
18718
        handles.   Not sure what it could be.
 
18719
        
 
18720
        * runtime.cpp (OnPropertyChanged): We probably should catch the
 
18721
        property changes here, and not in the Sub* variant of this thing,
 
18722
        this will update the canvas properly now.
 
18723
 
 
18724
        (dump_hierarchy): useful bit to debug what is going wrong. 
 
18725
        
 
18726
        (Canvas::get_xform_for): Do not apply extra
 
18727
        transformations to the child other than the absolute_xform.
 
18728
 
 
18729
        (surface_attach): On attach we need to do a full invalidate, so
 
18730
        the transformations are computed, otherwise it uses the defaults
 
18731
        for the toplevel (zero), this fixes the atom.xaml issue. 
 
18732
 
 
18733
        * control.cpp (get_xform_for): This is not proxied to the real
 
18734
        object, this is proxied to the parent.
 
18735
        (control_initialize_from_xaml): Set the parent link here.
 
18736
 
 
18737
2007-06-16  Chris Toshok  <toshok@ximian.com>
 
18738
 
 
18739
        * transform.cpp, transform.h, runtime.cpp, runtime.h,
 
18740
          geometry.cpp, geometry.h, animation.cpp: Another pass (the last)
 
18741
          at removing all cached instance collections and using GetValue
 
18742
          for them.
 
18743
 
 
18744
2007-06-16  Chris Toshok  <toshok@ximian.com>
 
18745
 
 
18746
        * media.cpp (Image::SetSource): we want events even if we attach a
 
18747
        downloader that's been started.
 
18748
 
 
18749
2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
 
18750
 
 
18751
        * shape.cpp: If StrokeThickness == 0 then don't stroke, otherwise it
 
18752
        will mess with the earlier filling.
 
18753
 
 
18754
2007-06-16  Chris Toshok  <toshok@ximian.com>
 
18755
 
 
18756
        * runtime.h, runtime.cpp: remove the instance cached
 
18757
        Panel::children, use accessor to get it when we need it.
 
18758
 
 
18759
        * brush.h, brush.cpp: same for the GradientBrush::children
 
18760
        property.
 
18761
 
 
18762
2007-06-16  Chris Toshok  <toshok@ximian.com>
 
18763
 
 
18764
        * runtime.h: make these const Rect&'s.
 
18765
 
 
18766
2007-06-16  Sebastien Pouliot  <sebastien@ximian.com> 
 
18767
 
 
18768
        * control.cpp|runtime.h: control_initialize_from_xaml needs to return
 
18769
        the Value::Kind of the object that was created so the managed side do
 
18770
        a Lookup on it.
 
18771
 
 
18772
2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
 
18773
 
 
18774
        * control.cpp|runtime.h: control_initialize_from_xaml needs to return
 
18775
        the element as the managed side needs (and defines) it.
 
18776
 
 
18777
2007-06-16  Miguel de Icaza  <miguel@novell.com>
 
18778
 
 
18779
        * control.cpp: Implement Control.
 
18780
 
 
18781
        * downloader.cpp: Implement a system to send various notifications
 
18782
        as Chris wants his notifications and managed world wants the
 
18783
        notifications as well. 
 
18784
 
 
18785
        Should they ahve been separate?   For now I just added a list of
 
18786
        them.   This code is turning uglier every minute.
 
18787
 
 
18788
2007-06-16  Jackson Harper  <jackson@ximian.com>
 
18789
 
 
18790
        * xaml.cpp: Kill top_kind, I have no idea how this guy crept back
 
18791
        in.
 
18792
        - Handle expat errors a little better.
 
18793
 
 
18794
2007-06-16  Sebastien Pouliot  <sebastien@ximian.com>
 
18795
 
 
18796
        * runtime.h: Implement missing IntersectsWith and Intersection to fix 
 
18797
        build.
 
18798
 
 
18799
2007-06-15  Chris Toshok  <toshok@ximian.com>
 
18800
 
 
18801
        * runtime.cpp (Canvas::render): small optimization.  only call the
 
18802
        item's render method if its bounds actually intersects with the
 
18803
        rectangle we're rendering.  Also, clip to the bounding rectangle
 
18804
        of the item here.
 
18805
 
 
18806
2007-06-16  Chris Toshok  <toshok@ximian.com>
 
18807
 
 
18808
        * clock.cpp, clock.h: don't use a constant for the timeout in
 
18809
        gtk_timeout_add, and add methods to add/remove the timeout.
 
18810
 
 
18811
        (ClockGroup::TimeUpdated): if we're paused or stopped,
 
18812
        don't call child clock TimeUpdated methods at all.  they always
 
18813
        generate CurrentTimeInvalidated even when the time hasn't changed,
 
18814
        which triggers redraws that don't need to happen.
 
18815
 
 
18816
2007-06-16  Jackson Harper  <jackson@ximian.com>
 
18817
 
 
18818
        * runtime.cpp|h: We still need C style base_ref/unref.
 
18819
        * demo.cpp:
 
18820
        * xaml.cpp: Takle a callback for the from_file method also.
 
18821
        
 
18822
2007-06-16  Jeffrey Stedfast  <fejj@gnome.org>
 
18823
 
 
18824
        * ffvideo.cpp (Stop): Implemented.
 
18825
        (.ctor): init paused to false (maybe this is why video
 
18826
        didn'talways work?).
 
18827
        (.dtor): Stop() the video and unhook the timeout.
 
18828
 
 
18829
        * runtime.cpp: Implement Base::ref and Base::unref instead of
 
18830
        doing it the c way.
 
18831
 
 
18832
        * *.cpp: Updated for above change.
 
18833
 
 
18834
        * shape.cpp (shape_set_stroke): Don't unref the old stroke.
 
18835
        (shape_set_fill): Same.
 
18836
 
 
18837
        * text.cpp (text_init): Use a separate brush for TextBlocks and
 
18838
        Inlines.
 
18839
        (text_block_set_foreground): Don't unref the old brush.
 
18840
        (inline_set_foreground): Same.
 
18841
 
 
18842
2007-06-15  Chris Toshok  <toshok@ximian.com>
 
18843
 
 
18844
        * xaml.cpp: little leak fixes here and there.
 
18845
 
 
18846
2007-06-15  Chris Toshok  <toshok@ximian.com>
 
18847
 
 
18848
        * demo.cpp (delete_event): destroy the surface and shutdown the
 
18849
        runtime before we quit, just to make finding leaks a little
 
18850
        easier.
 
18851
 
 
18852
        * ffvideo.cpp (MediaElementFfmpeg): re-order the
 
18853
        close/g_io_channel_close calls to quiet down glib.
 
18854
 
 
18855
        * media.cpp: don't close the loader in DownloaderEvents.  do it in
 
18856
        the dtor for now, to keep from getting that stupid gdk warning.
 
18857
        this is wrong, but at least it's quiet.
 
18858
 
 
18859
        * text.cpp: delete the color we initialize the solid color brush
 
18860
        with in text_init.
 
18861
 
 
18862
        * animation.cpp, animation.h: remove the cached key_frames
 
18863
        collections.
 
18864
 
 
18865
        * runtime.h, runtime.cpp: clean up our cleanup a lot.
 
18866
 
 
18867
        in the copy constructor we actually need to make a copy (or
 
18868
        ref in cases where we can) everything we store as a pointer in
 
18869
        our union.  This is to facilitate us destroying it in the
 
18870
        destructor.
 
18871
 
 
18872
        in surface_destroy just delete the surface.  move all the destroy
 
18873
        code to the destructor.  Also, in the destructor unhook from the
 
18874
        gtk events, since we get an unrealize event as part of widget
 
18875
        destruction, apparently.
 
18876
 
 
18877
        Add DependencyObject::Shutdown which destroys our properties
 
18878
        hashtable.  Create all the hashtables with _new_full so we can
 
18879
        give free functions for keys/values.  actually make use of them,
 
18880
        and clean up the relevant destructors.
 
18881
 
 
18882
        Add a destructor for Type, and have the Type ctor take its
 
18883
        arguments.  free the name in the dtor.  Same deal with _new_full
 
18884
        for hashtable creation, and also add Type::Shutdown.
 
18885
 
 
18886
        (runtime_shutdown): call TimeManager::Shutdown, Type::Shutdown,
 
18887
        and DependencyObject::Shutdown to free all our stuff.
 
18888
        
 
18889
        * clock.h, clock.cpp: add TimeManager::Shutdown.
 
18890
 
 
18891
2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
 
18892
 
 
18893
        * demo.cpp (gettime): Improved fps reporting.
 
18894
 
 
18895
2007-06-15  Miguel de Icaza  <miguel@novell.com>
 
18896
 
 
18897
        * media.cpp (SetSource): Make it so we use the data from a
 
18898
        downloader that might have already finished.
 
18899
 
 
18900
2007-06-15  Chris Toshok  <toshok@ximian.com>
 
18901
 
 
18902
        * runtime.cpp: simplify refcounting a little more.  we now have 3
 
18903
        rules:
 
18904
 
 
18905
            1. Value() holds a ref to its contained dependency object.
 
18906
               This means we don't have to do anything special for
 
18907
               anything stored in a DP.
 
18908
        
 
18909
            2. Collections hold a ref to their constituents.
 
18910
 
 
18911
            3. If you *must* cache an DO pointer in an instance field, you
 
18912
               must ref/unref it properly.  But really, you shouldn't need
 
18913
               to cache it, and I'll likely go through and remove all the
 
18914
               ones I can find.
 
18915
 
 
18916
        * media.cpp (media_element_set_markers): remove the ref/unref
 
18917
        stuff.
 
18918
 
 
18919
        * animation.cpp: comment out some spew, and follow a safer pattern
 
18920
        in OnPropertyChanged.
 
18921
 
 
18922
        * brush.cpp (OnPropertyChanged): safer pattern.
 
18923
 
 
18924
        * geometry.cpp (OnPropertyChanged): safer pattern.
 
18925
 
 
18926
        * runtime.h: make all these dtors virtual.
 
18927
 
 
18928
        * clock.cpp, clock.h: remove the cached child_timelines instance
 
18929
        field to clean up some of the ref counting problems.
 
18930
 
 
18931
2007-06-15  Miguel de Icaza  <miguel@novell.com>
 
18932
 
 
18933
        * media.cpp (SetSource): Make it so we use the data from a
 
18934
        downloader that might have already finished.
 
18935
 
 
18936
        We now accumulated data as we go.
 
18937
        
 
18938
        * downloader.cpp (downloader_get_response_text): Return
 
18939
        accumulated data.
 
18940
 
 
18941
2007-06-15  Jackson Harper  <jackson@ximian.com>
 
18942
 
 
18943
        * demo.cpp:
 
18944
        * runtime.h:
 
18945
        * xaml.cpp: Callback into managed code to create custom element
 
18946
        instances.
 
18947
 
 
18948
2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
 
18949
 
 
18950
        * media.cpp (media_base_new): Removed, not instantiable.
 
18951
        (Image::getbounds): Need to set the absolute_xform matrix :)
 
18952
 
 
18953
2007-06-15  Miguel de Icaza  <miguel@novell.com>
 
18954
 
 
18955
        * media.cpp (Image::getxformorigin): Implement getxformorigin, so
 
18956
        rotations are correct.
 
18957
 
 
18958
        (Image::getbounds): Implement getbounds correctly, the coordinates
 
18959
        should be in device coordinates with the transform applied.
 
18960
 
 
18961
2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
 
18962
 
 
18963
        * demo.cpp (main): Add some Inlines to the TextBlock to test
 
18964
        bounding box calculations.
 
18965
 
 
18966
        * text.cpp (OnPropertyChanged): If the property that changed is
 
18967
        the Actual width/height, then don't invalidate anything - simply
 
18968
        return (these are just cache values that only we can set
 
18969
        internally).
 
18970
        (Draw): Keep track of the pixel width/height of the entire
 
18971
        rendered TextBlock+Inlines.
 
18972
        (getbounds): Use the cached width/height of the TextBlock+Inlines
 
18973
        and draw a rectangle instead to improve performance.
 
18974
 
 
18975
2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
 
18976
 
 
18977
        * media.cpp|h: Add media_base_new.
 
18978
 
 
18979
2007-06-15  Miguel de Icaza  <miguel@novell.com>
 
18980
 
 
18981
        * Add destructors to classes that are caching DO collections and
 
18982
        keeping refs to those, thanks to Chris Toshok for the pattern to
 
18983
        use here. 
 
18984
 
 
18985
2007-06-15  Chris Toshok  <toshok@ximian.com>
 
18986
 
 
18987
        * media.cpp (Image::render): use the uielement's opacity when
 
18988
        painting.  Fixes the DrPopperSilverlight Bubble.xaml file.
 
18989
 
 
18990
2007-06-15  Miguel de Icaza  <miguel@novell.com>
 
18991
 
 
18992
        * runtime.cpp (UIElement): The problem was that:
 
18993
 
 
18994
                The ~UIElement destructor was setting the collection
 
18995
                properties to NULL in an attempt to unref stuff (these
 
18996
                are now automatically unrefed).
 
18997
 
 
18998
                This caused the hash table destructor to unref the values
 
18999
                that were held in the collection.
 
19000
 
 
19001
                At a later point, since "triggers" was cached and
 
19002
                OnPropertyNotify was called, we attempted to unref the
 
19003
                value, but that cached value pointed to an object that had
 
19004
                already been released.
 
19005
 
 
19006
        * Everywhere: remove duplicated code that got copy/pasted
 
19007
        everywhere for tracking collections and caching values.  
 
19008
 
 
19009
        This should help fixing the crashing problem, but I still need to
 
19010
        review the rules for reference counting and keeping a cache of
 
19011
        variables in instance fields. 
 
19012
 
 
19013
2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
 
19014
 
 
19015
        * text.cpp (Draw): Now renders inlines.
 
19016
 
 
19017
2007-06-15  Chris Toshok  <toshok@ximian.com>
 
19018
 
 
19019
        * Makefile.am (EXTRA_DIST): add alpha-premul-table.inc from
 
19020
        libgdiplus.
 
19021
 
 
19022
        * demo.cpp: notify the downloader of the image file size so that
 
19023
        it'll generate a COMPLETED event for the Image.
 
19024
 
 
19025
        * media.h, media.cpp: make image downloading non-progressive (we
 
19026
        only create the surface when the downloader notifies the download
 
19027
        is complete), but gain something in return: images with alpha
 
19028
        channels.
 
19029
 
 
19030
        * downloader.h, downloader.cpp: add closure to event_notify, and
 
19031
        expose the Event kind.
 
19032
 
 
19033
2007-06-15  Miguel de Icaza  <miguel@novell.com>
 
19034
 
 
19035
        * runtime.cpp (UIElement, Canvas): send events to the objects as
 
19036
        well.   My original test on orcas was buggy.
 
19037
 
 
19038
2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
 
19039
 
 
19040
        * runtime.cpp|h, type.cpp, value.cpp|h: Add Control.
 
19041
 
 
19042
2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
 
19043
 
 
19044
        * xaml.cpp (dependency_object_add_child): If the col_v collection
 
19045
        value is NULL, create a new collection and add it to the
 
19046
        DependencyObject.
 
19047
 
 
19048
        * runtime.cpp: Added a generic collection_new() function which
 
19049
        takes a Value::Kind to specificy which collection-type it should
 
19050
        allocate.
 
19051
 
 
19052
2007-06-15  Miguel de Icaza  <miguel@novell.com>
 
19053
 
 
19054
        * downloader.cpp: Implement DownloadProgress property and event
 
19055
        notification. 
 
19056
 
 
19057
        * runtime.h (DependencyObject::Is): new method, similar to C# is.
 
19058
 
 
19059
        * runtime.cpp (surface_repaint): We clear the background here
 
19060
        again, to allow canvases to have transparent brushes.
 
19061
 
 
19062
2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
 
19063
 
 
19064
        * runtime.cpp: Panel.Background is NULL by default, which means it's
 
19065
        transparent. This fixes Canvas inside Canvas.
 
19066
 
 
19067
2007-06-15  Jackson Harper  <jackson@ximian.com>
 
19068
 
 
19069
        * runtime.cpp|h: Implement some Inlines stuff that the parser will
 
19070
        need.
 
19071
        * xaml.cpp: Add some of the pieces for creating textblock inlines.
 
19072
        - Added some TODO areas for creating late bound collections (maybe
 
19073
        this should just be illegal??).
 
19074
 
 
19075
2007-06-15  Jeffrey Stedfast  <fejj@novell.com>
 
19076
 
 
19077
        * text.cpp: Have inlines cache their PangoFontDescription and
 
19078
        added logic to render textblock inlines.
 
19079
 
 
19080
2007-06-15  Alan McGovern  <amcgovern@novell.com>
 
19081
 
 
19082
        * runtime.cpp|h: Added DependencyProperty.NameProperty
 
19083
 
 
19084
2007-06-15  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19085
 
 
19086
        * transform.cpp|h: Add Transform C constructor.
 
19087
        * runtime.cpp: Better warning message.
 
19088
 
 
19089
2007-06-15  Miguel de Icaza  <miguel@novell.com>
 
19090
 
 
19091
        * runtime.cpp (surface_attach): Only hook up the events when we
 
19092
        get a toplevel attached.   
 
19093
 
 
19094
        * downloader.h: Drop the C++ API with a C proxy API, switch to a
 
19095
        pure C API as we need this from the managed side anyways.
 
19096
 
 
19097
        * downloader.h: Move downloader defs into .h file
 
19098
 
 
19099
        Add a notification system for reporting the size of a stream, so
 
19100
        we can do progress indication.
 
19101
 
 
19102
        * downloader.cpp: Move downloader to its own file.
 
19103
 
 
19104
2007-06-15  Sebastien Pouliot  <sebastien@ximian.com>
 
19105
 
 
19106
        * brush.cpp: Implement ImageBrush.Opacity like MS does it in 1.1 alpha
 
19107
        (i.e. Brush.Opacity isn't considered, only UIElement.Opacity is)
 
19108
        * geometry.cpp: PathFigure::IsFilledProperty is ignored in Mix and
 
19109
        will be removed in 1.0.
 
19110
        * media.cpp|h: Make Image aware of ImageBrush (so we can update too)
 
19111
        * runtime.cpp|h: Move calculation of "total" opacity of UIElement at
 
19112
        the *right* place.
 
19113
 
 
19114
2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
 
19115
 
 
19116
        * text.cpp (text_init): Set more default values.
 
19117
 
 
19118
        * runtime.cpp (Panel::OnPropertyChanged): Free children->list (as
 
19119
        we iterate thru them) and set the resulting list to NULL (in case
 
19120
        we don't hold the last ref) before unreffing the children object
 
19121
        (in case we do own the last ref).
 
19122
        (EventTrigger::OnPropertyChanged): Same.
 
19123
        (UIElement::OnPropertyChanged): Same.
 
19124
 
 
19125
        * transform.cpp (OnPropertyChanged): Same.
 
19126
 
 
19127
        * geometry.cpp (GeometryGroup::OnPropertyChanged): Same.
 
19128
        (PathGeometry::OnPropertyChanged): Same
 
19129
        (PathFigure::OnPropertyChanged): Same.
 
19130
 
 
19131
        * clock.cpp (TimelineGroup::OnPropertyChanged): Same.
 
19132
 
 
19133
        * animation.cpp
 
19134
        (DoubleAnimationUsingKeyFrames::OnPropertyChanged): Same.
 
19135
        (ColorAnimationUsingKeyFrames::OnPropertyChanged): Same.
 
19136
        (PointAnimationUsingKeyFrames::OnPropertyChanged): Same.
 
19137
 
 
19138
2007-06-15  Sebastien Pouliot  <sebastien@ximian.com> 
 
19139
 
 
19140
        * brush.cpp: Complete ImageBrush.Transform
 
19141
        * shape.cpp: Please at least one side of the lines.
 
19142
 
 
19143
2007-06-15  Jeffrey Stedfast  <fejj@gnome.org>
 
19144
 
 
19145
        * text.cpp (text_init): No longer should ref the foreground brush
 
19146
        or we leak refs.
 
19147
 
 
19148
        * xaml.cpp: Added support for Runs/LineBreaks
 
19149
 
 
19150
        * text.cpp: Implemented Run/LineBreak classes.
 
19151
        (inline_new): Removed (can't instantiate this class).
 
19152
 
 
19153
2007-06-15  Miguel de Icaza  <miguel@novell.com>
 
19154
 
 
19155
        * runtime.cpp (~DependencyObject, free_value): unref all the
 
19156
        values that are stored in the object on destruction
 
19157
 
 
19158
        * runtime.cpp: Add support for enter/leave events.
 
19159
 
 
19160
2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
 
19161
 
 
19162
        * text.cpp (getbounds): Set the actual width/height values to keep
 
19163
        them up-to-date.
 
19164
 
 
19165
2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
 
19166
 
 
19167
        * text.cpp (getbounds): Revert prior change.
 
19168
        (getxformorigin): Same.
 
19169
 
 
19170
        * shape.cpp (getbounds): Revert prior change.
 
19171
 
 
19172
        * ffvideo.cpp (getbounds): Revert prior change.
 
19173
 
 
19174
        * runtime.cpp (update_xform): Revert my last change.
 
19175
        (item_update_bounds): Same.
 
19176
 
 
19177
2007-06-14  Jackson Harper  <jackson@ximian.com>
 
19178
 
 
19179
        * xaml.cpp: Set content properties when adding child elements.  We
 
19180
        now no longer need to special case any elements except panel.
 
19181
 
 
19182
2007-06-14  Jackson Harper  <jackson@ximian.com>
 
19183
 
 
19184
        * xaml.cpp: I must have been very tired when I wrote that.
 
19185
 
 
19186
2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
 
19187
 
 
19188
        * media.h: Expose Image's Height and Width (required for ImageBrush)
 
19189
        * brush.cpp: Implement all Strech and Alignment[X|Y] options. Nothing
 
19190
        (yet) force an update of the drawing once the image is available.
 
19191
 
 
19192
2007-06-14  Jeffrey Stedfast  <fejj@gnome.org>
 
19193
 
 
19194
        * demo.cpp: Updated s/textblock/text_block/g
 
19195
 
 
19196
        * xaml.cpp: Don't register TextBlock twice.
 
19197
 
 
19198
        * ffvideo.cpp (getbounds): Can now depend on surface being set.
 
19199
 
 
19200
        * text.cpp: s/textblock/text_block/g
 
19201
        (getbounds): Can now depend on surface being set.
 
19202
        (getxformorigin): Same.
 
19203
 
 
19204
        * shape.cpp (getbounds): Can now depend on surface being set.
 
19205
 
 
19206
        * runtime.cpp (item_update_bounds): Don't update bounds if the
 
19207
        surface hasn't been set yet.
 
19208
        (update_xform): Same.
 
19209
 
 
19210
2007-06-14  Jackson Harper  <jackson@ximian.com>
 
19211
 
 
19212
        * xaml.cpp: Add keyspline parsing.
 
19213
 
 
19214
2007-06-14  Jackson Harper  <jackson@ximian.com>
 
19215
 
 
19216
        * value.h: This guy doesn't exist anymore, he is a
 
19217
        DependencyObject now.
 
19218
 
 
19219
2007-06-14  Jackson Harper  <jackson@ximian.com>
 
19220
 
 
19221
        * animation.cpp:
 
19222
        * runtime.cpp|h: We also need to update the DependencyObject when
 
19223
        resolving PropertyPaths.
 
19224
 
 
19225
2007-06-14  Jackson Harper  <jackson@ximian.com>
 
19226
 
 
19227
        * runtime.cpp|h: New function that follows PropertyPath's to
 
19228
        DependencyProperties.
 
19229
        * animation.cpp: Use new function to resolve animation target
 
19230
        properties.
 
19231
 
 
19232
2007-06-14  Jackson Harper  <jackson@ximian.com>
 
19233
 
 
19234
        * runtime.cpp (GetDependencyProperty): If there is no table for a
 
19235
        property, we still need to lookup the property in the parent
 
19236
        chain (assumming inherit is true).
 
19237
        - Fix some typos with types_by_name
 
19238
 
 
19239
2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
 
19240
 
 
19241
        * demo.cpp (main): Rotate our demo text inside a filled rectangle
 
19242
        around the center of the text.
 
19243
 
 
19244
        * text.cpp (TextBlock.ctor): Initialise a cached
 
19245
        PangoFontDescription that we will update when properties change.
 
19246
        (TextBlock.dtor): Free our font/layout.
 
19247
        (getbounds): Implemented correctly.
 
19248
        (getxformorigin): Implemented.
 
19249
        (Draw): Simplified since we don't need to create our layout/font
 
19250
        anymore (just use the cached ones).
 
19251
        (OnPropertyChanged): Implemented.
 
19252
 
 
19253
2007-06-14  Miguel de Icaza  <miguel@novell.com>
 
19254
 
 
19255
        * brush.cpp (Brush, SolidColorBrush, LinearGradientBrush,
 
19256
        RadialGradientBrush): Notify owners when changes happen in the
 
19257
        Brush.
 
19258
 
 
19259
        This makes the demo test-color-animation.xaml work without fps.
 
19260
 
 
19261
        * runtime.cpp: Make Canvas use the Background property to render
 
19262
        the background.
 
19263
 
 
19264
2007-06-14  Chris Toshok  <toshok@ximian.com>
 
19265
 
 
19266
        * demo.cpp (main): create a namescope to attach to the canvas, and
 
19267
        also make sure to add the storyboard to the tree someplace so that
 
19268
        it can find the names of things.
 
19269
 
 
19270
        * xaml.cpp: create a namescope to attach to the top_element.
 
19271
 
 
19272
        * runtime.cpp (FindName): rework this to walk up the tree.  Drop
 
19273
        the global namescope.
 
19274
 
 
19275
2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
 
19276
 
 
19277
        * brush.cpp|h: Add ImageBrush functions, which delegates most of its
 
19278
        work to Image (downloader).
 
19279
        * media.cpp|h: Expose the cairo_surface_t that contains the image.
 
19280
 
 
19281
2007-06-14  Chris Toshok  <toshok@ximian.com>
 
19282
 
 
19283
        * demo.cpp (FileDownloadState::AsyncFillBuffer): increase buffer
 
19284
        size from 1024 to 8192 (and make it an instance instead of stack
 
19285
        variable).  Also, add a return statement that will cause the idle
 
19286
        handler to no longer be called when we get a write of 0 length.
 
19287
        This might be wrong in the long term.
 
19288
 
 
19289
        * media.cpp, media.h: add cleanup methods for the Image class, and
 
19290
        add a dtor as well.
 
19291
 
 
19292
2007-06-14  Chris Toshok  <toshok@ximian.com>
 
19293
 
 
19294
        * media.cpp (LoaderSizePrepared): fill in the initial state of the
 
19295
        image to gray with black border.
 
19296
        (LoaderAreaUpdated): invalidate the item.
 
19297
 
 
19298
        * media.h: fix the progressive image loading.
 
19299
 
 
19300
2007-06-14  Chris Toshok  <toshok@ximian.com>
 
19301
 
 
19302
        * demo.cpp: use the MediaBase::SourceProperty to set the image's
 
19303
        source.
 
19304
 
 
19305
        * media.h, media.cpp: add Image::OnPropertyChanged so we can watch
 
19306
        for changes in MediaBase::SourceProperty and kick off the download
 
19307
        and stop the currently running one.
 
19308
 
 
19309
2007-06-14  Chris Toshok  <toshok@ximian.com>
 
19310
 
 
19311
        * demo.cpp: track downloader api change.
 
19312
 
 
19313
        * media.cpp: track downloader api change.
 
19314
 
 
19315
        * runtime.h, runtime.cpp: the downloader's write function needs an
 
19316
        offset as well as a length to work with mozilla's streaming api.
 
19317
 
 
19318
2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
 
19319
 
 
19320
        * demo.cpp (main): Draw some text
 
19321
 
 
19322
        * text.cpp (text_init): Set a default solid black brush for
 
19323
        foreground properties on Inline/TextBlock objects.
 
19324
        (Draw): Setup the Brush stuff before drawing.
 
19325
 
 
19326
2007-06-14  Jackson Harper  <jackson@ximian.com>
 
19327
 
 
19328
        * xaml.cpp: Add support for loading all implemented (and semi
 
19329
        implemented) dependency object types.
 
19330
        * text.cpp|h: C style constructors.
 
19331
 
 
19332
2007-06-14  Chris Toshok  <toshok@ximian.com>
 
19333
 
 
19334
        * animation.cpp (KeySpline): default should be 1,1 for
 
19335
        controlPoint2.
 
19336
 
 
19337
2007-06-14  Sebastien Pouliot  <sebastien@ximian.com>
 
19338
 
 
19339
        * xaml.cpp: Add support for Matrix (non-DO) type.
 
19340
 
 
19341
2007-06-14  Chris Toshok  <toshok@ximian.com>
 
19342
 
 
19343
        * runtime.cpp (downloader_write): add C-style downloader_write
 
19344
        method so we can call into it from the binding.
 
19345
 
 
19346
2007-06-14  Chris Toshok  <toshok@ximian.com>
 
19347
 
 
19348
        * value.cpp, animation.h, type.cpp, value.h, runtime.cpp,
 
19349
        type.cpp.in, value.h.in: make KeySpline subclass from
 
19350
        DependencyObject like it should, and fix resulting fallout.
 
19351
 
 
19352
2007-06-14  Miguel de Icaza  <miguel@novell.com>
 
19353
 
 
19354
        * runtime.cpp (Canvas): Implement OnChildPropertyChanged so we can
 
19355
        catch cases of Top/Left being set on a child, this makes changes
 
19356
        to the object after it has been created (adding/removing the
 
19357
        property) work. 
 
19358
 
 
19359
2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
 
19360
 
 
19361
        * brush.cpp|h: Much closer results for RadialGradients (but I still
 
19362
        have a test case that fails). Also added Transform support for 
 
19363
        LinearGradient.
 
19364
 
 
19365
2007-06-14  Jackson Harper  <jackson@ximian.com>
 
19366
 
 
19367
        * animation.h: C style constructors.
 
19368
        * clock.cpp|h: C style constructors.
 
19369
        * runtime.cpp|h: Follow proper naming convention for
 
19370
        TimelineMarker C style constructors.
 
19371
 
 
19372
2007-06-14  Chris Toshok  <toshok@ximian.com>
 
19373
 
 
19374
        * runtime.h, runtime.cpp: remove the hack UnmanagedDownloader from
 
19375
        here, and made Downloader pluggable with a set of functions.
 
19376
 
 
19377
        * demo.cpp: use the pluggable nature of Downloader to put
 
19378
        UnmanagedDownloader here (and call it FileDownloadState).
 
19379
 
 
19380
        * value.cpp, value.h, type.cpp: resync.
 
19381
 
 
19382
2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
 
19383
 
 
19384
        * text.cpp: Fixed Brush accessors for the NULL case.
 
19385
 
 
19386
        * media.cpp: Fixed accessors that could return NULL
 
19387
        (media_init): init MediaBase and MediaElement items.
 
19388
 
 
19389
2007-06-14  Jackson Harper  <jackson@ximian.com>
 
19390
 
 
19391
        * animation.cpp: C style constructor.
 
19392
        * media.cpp|h: Add some C style constructors.
 
19393
        * xaml.cpp:  Add parsing hooks for new components.
 
19394
 
 
19395
2007-06-14  Chris Toshok  <toshok@ximian.com>
 
19396
 
 
19397
        * demo.cpp: make one of the videos an image instead.
 
19398
 
 
19399
2007-06-14  Jeffrey Stedfast  <fejj@novell.com>
 
19400
 
 
19401
        * xaml.cpp: Fixed the font_widths and font_stretches maps to
 
19402
        reflect the numeric enum values defined in text.h (and msdn docs).
 
19403
 
 
19404
        * text.h: Sync enum values to documented numeric values.
 
19405
 
 
19406
2007-06-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19407
 
 
19408
        * transform.cpp|h, media.cpp|h, brush.cpp|h, runtime.cpp|h:
 
19409
        Make all classes that inherit from DO constructable, and add
 
19410
        missing C-style constructors.
 
19411
 
 
19412
2007-06-14  Jackson Harper  <jackson@ximian.com>
 
19413
 
 
19414
        * runtime.cpp|h: Hookup the resource collection.
 
19415
        * xaml.cpp: Parse resource collections.
 
19416
 
 
19417
2007-06-14  Chris Toshok  <toshok@ximian.com>
 
19418
 
 
19419
        * type.cpp, value.h, type.h: resync these.
 
19420
 
 
19421
        * media.h, media.cpp: add naive Image class.
 
19422
 
 
19423
        * runtime.h, runtime.cpp: add some Downloader methods, and
 
19424
        subclass Downloader with a *very* hackish UnmanagedDownloader
 
19425
        class that just loads from files.  Also add a "write_func"
 
19426
        callback that the downloader can call when it has new data to hand
 
19427
        off.
 
19428
 
 
19429
2007-06-14  Chris Toshok  <toshok@ximian.com>
 
19430
 
 
19431
        * animation.cpp: import an arc length calculator I found on the
 
19432
        net (at http://steve.hollasch.net/cgindex/curves/cbezarclen.html)
 
19433
        and use that for KeySpline::GetSplineProgress.  The results don't
 
19434
        match MS's exactly, though.
 
19435
 
 
19436
2007-06-14  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19437
 
 
19438
        * geometry.cpp, geometry.h: Add collection constructors.
 
19439
        * brush.cpp, brush.h: Add ImageBrush and VideoBrush DPs.
 
19440
        * runtime.cpp|runtime.h: Implement collection add/remove methods. 
 
19441
        Add Downloader DPs.
 
19442
        * media.cpp: Add MediaAttribute DP.     
 
19443
 
 
19444
2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
 
19445
 
 
19446
        * brush.cpp|h: Refactor Opacity to make it reusable to other brushes
 
19447
        (as it cannot be globally applied). Added DP, and related functions,
 
19448
        to TileBrush.
 
19449
 
 
19450
2007-06-14  Miguel de Icaza  <miguel@novell.com>
 
19451
 
 
19452
        * Improve the destruction scenario to release the resources that
 
19453
        we have acquired, we are now up to the point of stopping clocks
 
19454
        properly, but more work is going to be needed in the long term to
 
19455
        properly track refs and objects.
 
19456
 
 
19457
        Ensured that all virtual GetObjectType are flagged with virtual.
 
19458
 
 
19459
        * Makefile.am: Put runtime.cpp at the top, to improve
 
19460
        compile/test cycle.
 
19461
 
 
19462
2007-06-14  Sebastien Pouliot  <sebastien@ximian.com> 
 
19463
 
 
19464
        * brush.cpp|h: One step closer for RadialGradientBrush
 
19465
        * geometry.cpp: Fix ArcSegment sweep direction. All chess pieces now 
 
19466
        render (shape-wise) correctly.
 
19467
        * shape.cpp: Draw before setting the brush. This allows the brush
 
19468
        setting code to ask for the extents to stroke/fill.
 
19469
 
 
19470
2007-06-13  Chris Toshok  <toshok@ximian.com>
 
19471
 
 
19472
        * animation.cpp (KeySpline::GetSplineProgress): reimplement this
 
19473
        to return a percentage of the arc length of the bezier that is
 
19474
        traversed when t = linearProgress, taking the algorithm from
 
19475
        http://steve.hollasch.net/cgindex/curves/cbezarclen.html
 
19476
 
 
19477
2007-06-13  Chris Toshok  <toshok@ximian.com>
 
19478
 
 
19479
        * brush.h, geometry.h, animation.h, clock.h: add GetElementType
 
19480
        collection overloads.
 
19481
 
 
19482
        * type.cpp: resync to track UIElement : Visual relationship.
 
19483
 
 
19484
        * runtime.h: add Collection::GetElementType, and add overloads
 
19485
        (some commented out) for the collections listed.  Also, fix
 
19486
        UIElement's superclass to be Visual.
 
19487
 
 
19488
        * runtime.cpp (Add): make sure we're only adding subclasses of our
 
19489
        element type.
 
19490
 
 
19491
2007-06-13  Chris Toshok  <toshok@ximian.com>
 
19492
 
 
19493
        * clock.cpp (AddChild): just pass the child, unwrapped.
 
19494
 
 
19495
        * runtime.h: remove the Value* overloads for Collection::Add and
 
19496
        Collection::Remove.
 
19497
 
 
19498
        * xaml.cpp (dependency_object_add_child): just pass the dependency
 
19499
        object, unwrapped.
 
19500
 
 
19501
2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
 
19502
 
 
19503
        * text.cpp: Implemented a ton of stuff...
 
19504
        (text_init): Added.
 
19505
 
 
19506
        * runtime.cpp (runtime_init): Call text_init().
 
19507
 
 
19508
2007-06-13  Miguel de Icaza  <miguel@novell.com>
 
19509
 
 
19510
        * runtime.h (Collection): Since it seems that everything we have
 
19511
        so far are collections of dependency objects, the code is now
 
19512
        simplified and will also take refs and remove refs on destruction.
 
19513
 
 
19514
        The only reason to implement the Add/Remove methods is if you must
 
19515
        do something as a hook during add/remove
 
19516
        
 
19517
        * runtime.cpp (SetValue): Enable NULLs to be set on Dependency
 
19518
        Objects. 
 
19519
        
 
19520
        (OnPropertyChanged): Allow the value to be NULL, cope with that,
 
19521
        we use this to clear all of our objects.
 
19522
 
 
19523
2007-06-13  Chris Toshok  <toshok@ximian.com>
 
19524
 
 
19525
        * xaml.cpp (xaml_create_from_str): make the from_str a little
 
19526
        closer to from_file.  fixes hooking up names when loading from
 
19527
        strings.
 
19528
 
 
19529
2007-06-13  Chris Toshok  <toshok@ximian.com>
 
19530
 
 
19531
        * runtime.cpp (runtime_init): start the time manager here.
 
19532
 
 
19533
        * demo.cpp (main): instead of here.
 
19534
 
 
19535
2007-06-13  Jackson Harper  <jackson@ximian.com>
 
19536
 
 
19537
        * xaml.cpp: Gracefull handling of error conditions. Being
 
19538
        intentionally non strict about some things while we are
 
19539
        developing (like unknown elements, and attributes, and missing
 
19540
        namespaces).
 
19541
 
 
19542
2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
 
19543
 
 
19544
        * brush.cpp: Better, but still imperfect, RadialGradientBrush
 
19545
 
 
19546
2007-06-13  Jackson Harper  <jackson@ximian.com>
 
19547
 
 
19548
        * runtime.h: Add some of the error event handler args, so i can
 
19549
        use these in the parser.
 
19550
 
 
19551
2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
 
19552
 
 
19553
        * brush.cpp (OnPropertyChanged): Free list nodes as we iterate
 
19554
        (soptimsation, woot).
 
19555
 
 
19556
        * text.cpp: Implemented c wrappers for Inline
 
19557
 
 
19558
2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
 
19559
 
 
19560
        * brush.cpp: Implemented LinearGradientBrush::SetupBrush
 
19561
        * xaml.cpp: Handle GradientStops correctly (at GradientBrush) and add
 
19562
        support for LinearGradientBrush.
 
19563
 
 
19564
2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
 
19565
 
 
19566
        * text.cpp: Stubbed out TextBlock and Glyphs
 
19567
 
 
19568
2007-06-13  Jackson Harper  <jackson@ximian.com>
 
19569
 
 
19570
        * xaml.cpp: GradientBrush is a Brush.
 
19571
 
 
19572
2007-06-13  Miguel de Icaza  <miguel@novell.com>
 
19573
 
 
19574
        * runtime.cpp (dependency_object_find_name): Add new wrapper 
 
19575
 
 
19576
2007-06-13  Chris Toshok  <toshok@ximian.com>
 
19577
 
 
19578
        * animation.cpp, animation.h: add public storyboard methods for
 
19579
        begin/pause/resume/seek/stop.  also start in on the spline
 
19580
        keyframe/KeySpline stuff.
 
19581
 
 
19582
        * type.cpp: resync.
 
19583
 
 
19584
        * value.cpp: resync.
 
19585
 
 
19586
        * value.h: resync.
 
19587
 
 
19588
        * value.h.in: add keyspline stuff.
 
19589
 
 
19590
        * type.cpp.in: add keyspline stuff.
 
19591
 
 
19592
2007-06-13  Chris Toshok  <toshok@ximian.com>
 
19593
 
 
19594
        * demo.cpp: a few changes - none of the animations run forever
 
19595
        now.  also, add some gtk events (button press/release/motion).  we
 
19596
        pause animations on press, resume them on release.
 
19597
 
 
19598
        * clock.cpp: keep track of the offset caused by pausing/resuming
 
19599
        the clock from our parent's time.
 
19600
 
 
19601
        * animation.cpp: split out all the logic for finding the current
 
19602
        (and previous) keyframes into
 
19603
        KeyFrameCollection::GetKeyFrameForTime.  Also, make the key frame
 
19604
        collection maintain a separate sorted list of keyframes.
 
19605
 
 
19606
2007-06-13  Jeffrey Stedfast  <fejj@novell.com>
 
19607
 
 
19608
        * media.cpp (media_base_get_source): Implemented; use char*
 
19609
        instead of Uri - we'll make the binding convert between the types.
 
19610
        (media_base_set_source): Same.
 
19611
 
 
19612
2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19613
 
 
19614
        * runtime.cpp: Xlib and we are both defining Visual,
 
19615
        so implement a workaround.
 
19616
 
 
19617
2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
 
19618
 
 
19619
        * brush.cpp|h: Added code for LinearGradientBrush and partial setup
 
19620
        for all gradient-related brushes (needs testing). Add all color 
 
19621
        definitions supported by XAML.
 
19622
        * mkcolor.cs: Tool to generate colors from System.Drawing (as they
 
19623
        are identical).
 
19624
 
 
19625
2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19626
        
 
19627
        * runtime.h: Add Visual.
 
19628
        * value.cpp, value.h, type.cpp: Updated.
 
19629
 
 
19630
2007-06-13  Jeffrey Stedfast  <fejj@gnome.org>
 
19631
 
 
19632
        * ffvideo.cpp: Back to using ALSA, but this time I got it right ;)
 
19633
 
 
19634
2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19635
 
 
19636
        * media.h: Added MediaAttribute.
 
19637
        * runtime.h: Added Downloader.
 
19638
        * value.cpp, value.h, type.cpp: Updated.
 
19639
        * typegen.cs: Copy Kind.cs to the correct directory.
 
19640
 
 
19641
2007-06-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19642
 
 
19643
        * brush.cpp, brush.h, geometry.cpp: Fix property registration
 
19644
        typos.
 
19645
 
 
19646
2007-06-13  Sebastien Pouliot  <sebastien@ximian.com> 
 
19647
 
 
19648
        * brush.cpp|h: Fix Brush::RelativeTransformProperty and 
 
19649
        Brush::RelativeTransformProperty types.
 
19650
 
 
19651
2007-06-13  Sebastien Pouliot  <sebastien@ximian.com>
 
19652
 
 
19653
        * brush.cpp|h: Complete DependencyProperties for GradientBrush and
 
19654
        add GradientStopCollection.
 
19655
        * runtime.cpp|h: Remove code for GradientStopCollection.
 
19656
        * xaml.cpp: Register new brush classes.
 
19657
 
 
19658
2007-06-13  Miguel de Icaza  <miguel@novell.com>
 
19659
 
 
19660
        * runtime.cpp: Various new events are now sent.
 
19661
 
 
19662
2007-06-13  Jackson Harper  <jackson@ximian.com>
 
19663
 
 
19664
        * xaml.cpp: When using the xaml_create_from_str we automatically
 
19665
        add the default and x: namespaces.
 
19666
 
 
19667
2007-06-12  Jeffrey Stedfast  <fejj@gnome.org>
 
19668
 
 
19669
        * ffvideo.cpp: Fixed to subclass the new MediaElement class.
 
19670
 
 
19671
        * video.cpp: Removed.
 
19672
 
 
19673
2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
 
19674
 
 
19675
        * brush.cpp|h: Added DependencyProperty for GradientBrush and 
 
19676
        GradiantStop. Added new brush-related enums. Add [g|s]etter functions
 
19677
        for RadialGradient and BrushGradiantStop.
 
19678
 
 
19679
2007-06-12  Jackson Harper  <jackson@ximian.com>
 
19680
 
 
19681
        * xaml.cpp: Repsect namespaces.
 
19682
        - Clean up code a little
 
19683
 
 
19684
2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
 
19685
 
 
19686
        * brush.h: New. Brush related stuff.
 
19687
        * brush.cpp: DependencyProperty for RadialGradientBrush
 
19688
        * runtime.h: [Re]move brush stuff.
 
19689
        * shape.h: Add include for brush.h
 
19690
        * type.cpp, value.h, value.h: Add RadialGradientBrush type.
 
19691
        * Makefile.am: Add brush.h to the build.
 
19692
 
 
19693
2007-06-12  Jeffrey Stedfast  <fejj@gnome.org>
 
19694
 
 
19695
        * media.cpp|h: Added to the build
 
19696
 
 
19697
2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
 
19698
 
 
19699
        * transform.cpp|h: Complete MatrixTransform.
 
19700
        * value.h, value.h.in, runtime.cpp, type.cpp, type.cpp.in: Introduce
 
19701
        Matrix type.
 
19702
 
 
19703
2007-06-12  Miguel de Icaza  <miguel@novell.com>
 
19704
 
 
19705
        * runtime.h (UIElement::inside_object): new routine that should
 
19706
        return true if the given absolute x, y is inside the given object
 
19707
        or not. 
 
19708
 
 
19709
        (UIElement::handle_motion): new routine that is called when a
 
19710
        motion event happens, it should determine if it can handle the
 
19711
        given event at x, y.
 
19712
 
 
19713
        (Surface): new callbacks, these are callbacks that will pass the
 
19714
        notification of the event to managed code. 
 
19715
 
 
19716
        * runtime.cpp (FrameworkElement): provide a default implementation
 
19717
        for inside object that works for "squares" (things with widths and
 
19718
        heights) 
 
19719
 
 
19720
2007-06-12  Jeffrey Stedfast  <fejj@novell.com>
 
19721
 
 
19722
        * ffvideo.cpp: Instead of aborting when SDL_OpenAudio() fails,
 
19723
        simply disable audio for that video. Temporary hack.
 
19724
 
 
19725
2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
 
19726
 
 
19727
        * transform.cpp: Fix SkewTransform with translations (Center[X|Y])
 
19728
 
 
19729
2007-06-12  Jackson Harper  <jackson@ximian.com>
 
19730
 
 
19731
        * xaml.cpp: Implement enums.  This implementation is very naive,
 
19732
        but works with the current Silverlight object model.  Basically,
 
19733
        we just index property names to enum maps.  So a property name
 
19734
        maps to a single enum type regardless of the type the enum is
 
19735
        declared in.  This works fine with the current silverlight object
 
19736
        model, but in the future might need to be changed, if we get
 
19737
        conflicting property names.
 
19738
 
 
19739
2007-06-12  Jeffrey Stedfast  <fejj@novell.com>
 
19740
 
 
19741
        * ffvideo.cpp: Fixed sound playback to not get that nasty
 
19742
        reverb-like effect. Also switched to using SDL for audio.
 
19743
 
 
19744
2007-06-12  Sebastien Pouliot  <sebastien@ximian.com>
 
19745
 
 
19746
        * transform.cpp|h: Implement SkewTransform.
 
19747
        * type.cpp: Register new type SkewTransform.
 
19748
        * value.cpp|h: Add SkewTransform.
 
19749
        * xaml.cpp: Register DO for SkewTransform.
 
19750
 
 
19751
2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19752
 
 
19753
        * runtime.cpp, runtime.h: Make DependencyObject::ParentProperty
 
19754
        a normal field.
 
19755
 
 
19756
2007-06-12  Jackson Harper  <jackson@ximian.com>
 
19757
 
 
19758
        * xaml.cpp: Don't try to add properties to the panel.
 
19759
 
 
19760
2007-06-12  Sebastien Pouliot  <sebastien@ximian.com> 
 
19761
 
 
19762
        * geometry.cpp: Implemented ArcSegment::Draw using librsvg code
 
19763
        * rsvg.cpp|h: New. Code from LGPL librsvg to implement arc_to
 
19764
        * Makefile.am: Add rsvg.cpp|h to the build.
 
19765
 
 
19766
2007-06-12  Jackson Harper  <jackson@ximian.com>
 
19767
 
 
19768
        * xaml.cpp: Add parser for KeyTime structures.
 
19769
 
 
19770
2007-06-12  Chris Toshok  <toshok@ximian.com>
 
19771
 
 
19772
        * animation.cpp
 
19773
        (ColorAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
 
19774
        (PointAnimationUsingKeyFrames::GetNaturalDurationCore): implement.
 
19775
        (animation_init): make sure to initialize
 
19776
        ColorKeyFrame::ValueProperty.
 
19777
 
 
19778
        * clock.cpp (Timeline::GetNaturalDuration): comment out some spew.
 
19779
 
 
19780
2007-06-12  Jackson Harper  <jackson@ximian.com>
 
19781
 
 
19782
        * animation.cpp|h: C style constructor for KeyFrameCollection.
 
19783
        * xaml.cpp: Implement the KeyFrame types
 
19784
        - Make the base types ghosts, despite what the docs say, they
 
19785
        can't be used.
 
19786
 
 
19787
2007-06-12  Miguel de Icaza  <miguel@novell.com>
 
19788
 
 
19789
        * runtime.cpp (NotifyParentOfPropertyChange): Stop propagating
 
19790
        when we have reached someone that handles that property in the way
 
19791
        up. 
 
19792
 
 
19793
2007-06-12  Jackson Harper  <jackson@ximian.com>
 
19794
 
 
19795
        * xaml.cpp: Register the TriggerCollection so that
 
19796
        TriggerCollections can be created using the explicit syntax.
 
19797
        
 
19798
2007-06-12  Jackson Harper  <jackson@ximian.com>
 
19799
 
 
19800
        * xaml.cpp: No longer need to special case EventTriggers. Remove
 
19801
        some dead code (yippie!)
 
19802
        * runtime.cpp: Unregister the target when removing from the
 
19803
        collection.
 
19804
 
 
19805
2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19806
 
 
19807
        * runtime.h: Implement Inlines.
 
19808
        * value.cpp, value.h, type.cpp: Updated.
 
19809
 
 
19810
2007-06-12  Jackson Harper  <jackson@ximian.com>
 
19811
 
 
19812
        * runtime.cpp|h: Hook up the UIElement::Triggers and
 
19813
        EventTrigger::Actions/RoutedEvent properly.
 
19814
        * xaml.cpp: Remove some of the special casing for event triggers
 
19815
        now that they are proper DependencyProperties.
 
19816
 
 
19817
2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19818
 
 
19819
        * typegen.cs: Now checks if classes that inherits DependencyObject
 
19820
        implement GetObjectType.
 
19821
        * animation.h, runtime.h, text.h, geometry.h, shape.h: Implement
 
19822
        missing GetObjectTypes and fix a few that were returning the wrong
 
19823
        type.
 
19824
 
 
19825
2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19826
 
 
19827
        * runtime.cpp: 
 
19828
        - (DependencyObject::SetValue): Allow assigning an object of a 
 
19829
          more derived type than the defined property type. Change the
 
19830
          attached_list code to handle NULL dependency_objects.
 
19831
        - Delete types_init, it's generated now.
 
19832
        - Delete Value:As[DependencyObjects], its generated now.
 
19833
        * runtime.h: Added definitions for a few missing collection classes.
 
19834
        * types.cpp[.in], value.cpp[.in], value.h.in: Added.
 
19835
        * value.h: Update.
 
19836
        * Makefile.am: Add types.cpp and value.cpp
 
19837
        * typegen.cs, typegen.cs: Added, generates types.cpp, value.cpp, 
 
19838
        value.h and Kind.cs from the headers.
 
19839
 
 
19840
2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19841
 
 
19842
        * runtime.cpp, runtime.h: (DO/DP) Make all char*'s const.
 
19843
 
 
19844
2007-06-12  Chris Toshok  <toshok@ximian.com>
 
19845
 
 
19846
        * clock.h, clock.cpp, runtime.cpp, value.h: use a
 
19847
        TimelineCollection to store child collections in TimelineGroup.
 
19848
 
 
19849
2007-06-12  Chris Toshok  <toshok@ximian.com>
 
19850
 
 
19851
        * animation.h, animation.cpp (animation_init): remove the
 
19852
        clock.cpp property registration.
 
19853
        (DoubleAnimationUsingKeyFrames::GetNaturalDurationCore): initial
 
19854
        attempt, calculate our timespan from our key frames.
 
19855
        (Animation::GetNaturalDurationCore): return a 1 second duration,
 
19856
        as doc'ed on msdn.
 
19857
        (UpdatePropertyValue): plug leak.
 
19858
 
 
19859
        * runtime.cpp (runtime_init): call clock_init.
 
19860
 
 
19861
        * clock.h, clock.cpp: largish pass at implementing support for
 
19862
        Duration::Automatic in ClockGroups (where they query their child
 
19863
        timelines to see how long they should make themselves).  Also, add
 
19864
        clock_init.
 
19865
 
 
19866
        * xaml.cpp (timespan_from_str): correct math.
 
19867
 
 
19868
2007-06-12  Jackson Harper  <jackson@ximian.com>
 
19869
 
 
19870
        * xaml.cpp: Add a couple more of the animation elements.
 
19871
 
 
19872
2007-06-12  Jackson Harper  <jackson@ximian.com>
 
19873
 
 
19874
        * runtime.cpp|h: There is no public Triggers property.
 
19875
 
 
19876
2007-06-12  Miguel de Icaza  <miguel@novell.com>
 
19877
 
 
19878
        * runtime.cpp (DependencyObject::RegisterFull): Allow for
 
19879
        properties to be flagged as attached, and only propagate the child
 
19880
        notification to those those that care about it.
 
19881
 
 
19882
2007-06-12  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19883
 
 
19884
        * Implement a mechanism to keep track of parents and notify
 
19885
        parents of changes in attached properties.
 
19886
 
 
19887
2007-06-11  Jackson Harper  <jackson@ximian.com>
 
19888
 
 
19889
        * xaml.cpp: Add content properties, and handle collections that
 
19890
        are content properties, by implicitly adding items to the
 
19891
        collections.
 
19892
 
 
19893
2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
 
19894
 
 
19895
        * runtime.cpp: Remove matrix initialization (to avoid double-inits in 
 
19896
        most cases).
 
19897
        * transform.cpp: Add matrix initialization in TransformGroup::
 
19898
        GetTransform. Makes the API safer :)
 
19899
 
 
19900
2007-06-11  Sebastien Pouliot  <sebastien@ximian.com> 
 
19901
 
 
19902
        * geometry.cpp: Implemented [Ploy]QuadraticBezierSegment::Draw.
 
19903
 
 
19904
2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
 
19905
 
 
19906
        * geometry.cpp|h: Add drawing of [Poly]LinesSegment and 
 
19907
        [Poly]BezierSegment. More than half of Sam Ruby's samples can work
 
19908
        with this.
 
19909
 
 
19910
2007-06-11  Jeffrey Stedfast  <fejj@novell.com>
 
19911
 
 
19912
        * ffvideo.cpp: Attempt to get video to be in sync with audio by
 
19913
        using the audio pts as the target_pts.
 
19914
 
 
19915
2007-06-11  Jackson Harper  <jackson@ximian.com>
 
19916
 
 
19917
        * runtime.cpp: Register the collection types as derived from
 
19918
        COLLECTION.
 
19919
 
 
19920
2007-06-11  Chris Toshok  <toshok@ximian.com>
 
19921
 
 
19922
        * xaml.cpp (timespan_from_str): fix reading off the end of digits
 
19923
        array.
 
19924
 
 
19925
2007-06-11  Jackson Harper  <jackson@ximian.com>
 
19926
 
 
19927
        * xaml.cpp: Implement some more collection loading. A lot of
 
19928
        duplicate code here, so I should probably refactor things a bit,
 
19929
        but will wait until I've seen how more collections are laid out.
 
19930
 
 
19931
2007-06-11  Chris Toshok  <toshok@ximian.com>
 
19932
 
 
19933
        * animation.h, animation.cpp: use KeyFrameCollection's for the
 
19934
        *AnimationUsingKeyFrames key frame stuff, instead of GLists.
 
19935
 
 
19936
        * value.h, runtime.cpp: add Value::AsKeyFrameCollection.
 
19937
 
 
19938
2007-06-11  Jackson Harper  <jackson@ximian.com>
 
19939
 
 
19940
        * xaml.cpp: Make the parents of collections the Collection ghost
 
19941
        element.  This is a first step in cleaning up collection creation
 
19942
        a little.
 
19943
 
 
19944
2007-06-11  Sebastien Pouliot  <sebastien@ximian.com> 
 
19945
 
 
19946
        * transform.cpp: remove dead code.
 
19947
        * xaml.cpp: Partial collection support for geometry.
 
19948
 
 
19949
2007-06-11  Sebastien Pouliot  <sebastien@ximian.com>
 
19950
 
 
19951
        * transform.cpp: Multiply each matrix in a TransformGroup (fix the 
 
19952
        open-clipart sample, at least the correct parts of the sample).
 
19953
        * runtime.cpp: Always initialize the matrix in item_get_render_affine
 
19954
        otherwise we'll end up with bad random results.
 
19955
 
 
19956
2007-06-11  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
19957
 
 
19958
        * runtime.h, runtime.cpp: (DependencyObject) Add SetValue/GetValue 
 
19959
        overloads that takes strings as well as DP, GetDependencyProperty where 
 
19960
        it's possible to specify whether the parent type is searched for the
 
19961
        property or not, and a HasProperty method
 
19962
 
 
19963
2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
 
19964
 
 
19965
        * geometry.cpp|h: Fix function names wrt type.
 
19966
        * shape.cpp: Detect RenderTransform and RenderTransformOrigin changes
 
19967
        and call update_xform. This fix the "atom" sample :)
 
19968
        * transform.cpp: Fix Rotate and Scale around a center point.
 
19969
 
 
19970
2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
 
19971
 
 
19972
        * geometry.cpp: Add more precision to types.
 
19973
        * runtime.cpp: Apply Canvas' RenderTransform and RenderTransformOrigin
 
19974
 
 
19975
2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
 
19976
 
 
19977
        * brush.cpp: Implement Opacity for SolidColorBrush.
 
19978
        * runtime.cpp|h: Add an UIElement parameter to SetupBrush so we can 
 
19979
        access it's properties (e.g. Opacity in this case). Add uielement_
 
19980
        [g|s]et_opacity functions.
 
19981
        * shape.cpp: Supply the UIElement when setting up brushes.
 
19982
 
 
19983
2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
 
19984
 
 
19985
        * shape.cpp: Fix rounded rectangle when radius_[x|y] are larger than 
 
19986
        half the width|height.
 
19987
 
 
19988
2007-06-10  Miguel de Icaza  <miguel@novell.com>
 
19989
 
 
19990
        * shape.cpp (OnPropertyChanged): Implement this property for most
 
19991
        shapes: if the property is set, we need to invalidate and
 
19992
        repaint. 
 
19993
 
 
19994
        * runtime.h (FullInvalidate): A method to perform a queue to
 
19995
        redraw the underlying region, update the bounds and queue an
 
19996
        update for the new region.
 
19997
 
 
19998
        * runtime.h (Base): make destructor virtual so that base_unref can
 
19999
        call delete (Base *) p.   Exposed by the managed code when the
 
20000
        first base_unref ran for the first time :-)
 
20001
 
 
20002
        I sense a leak!
 
20003
 
 
20004
        * runtime.cpp (surface_attach): invalidate the areas before and
 
20005
        after, compute the bounds using item_update_bounds, not the
 
20006
        getbounds method directly.
 
20007
 
 
20008
2007-06-10  Sebastien Pouliot  <sebastien@ximian.com>
 
20009
 
 
20010
        * xaml.cpp: Add PathFigure[Collection]/Segments support.
 
20011
 
 
20012
2007-06-10  Sebastien Pouliot  <sebastien@ximian.com> 
 
20013
 
 
20014
        * brush.cpp: Fix Green definition, like GDI+ MS use a dark (0x80)
 
20015
        green unlike other basic colors (red/blue at 0xFF).
 
20016
        * xaml.cpp: Don't assert on an empty collection.
 
20017
 
 
20018
2007-06-10  Miguel de Icaza  <miguel@novell.com>
 
20019
 
 
20020
        * runtime.cpp, runtime.h (BasicArray): New base struct for
 
20021
        PointArray and double array, puts the count field at the beginning
 
20022
        and avoids an extra block to be allocated (count and values are
 
20023
        now on a single contiguous block).
 
20024
 
 
20025
        Introduce a refcount for the arrays, so that we can release those
 
20026
        properly.  Due to the nature of how we copied values before we
 
20027
        had to leak the values, when the leak was plugged, we crashed.  
 
20028
 
 
20029
        The refcount is there just because it was easy, we could clone if
 
20030
        we wanted, but also I would like to keep the refcount there to
 
20031
        ensure that the array of doubles is aligned on an 8 byte
 
20032
        boundary. 
 
20033
 
 
20034
        (double_array_new, point_array_new): New methods to create the
 
20035
        structures. 
 
20036
 
 
20037
        (Value): Now free the arrays.
 
20038
        
 
20039
 
 
20040
2007-06-09  Sebastien Pouliot  <sebastien@ximian.com>
 
20041
 
 
20042
        * geometry.cpp|h: Add/complete PathFigureCollection and 
 
20043
        PathSegmentCollection. Doesn't parse from xaml.
 
20044
        * runtime.cpp, value.h: Add support for new classes.
 
20045
 
 
20046
2007-06-09  Sebastien Pouliot  <sebastien@ximian.com>
 
20047
 
 
20048
        * geometry.cpp|h: Complete GeometryGroup with GeometryCollection.
 
20049
        But color rending is not yet correct in demo files.
 
20050
        * runtime.cpp, value.h: Add support for GeometryCollection
 
20051
        * xaml.cpp: Add support for GeometryGroup
 
20052
 
 
20053
2007-06-09  Chris Toshok  <toshok@ximian.com>
 
20054
 
 
20055
        * animation.h, animation.cpp, value.h, runtime.cpp: add
 
20056
        ColorKeyFrame and it's linear/discrete subclasses, as well as
 
20057
        ColorAnimationUsingKeyFrames.
 
20058
 
 
20059
2007-06-09  Chris Toshok  <toshok@ximian.com>
 
20060
 
 
20061
        * animation.h, animation.cpp, value.h, runtime.cpp: add the
 
20062
        Discrete keyframes for point and double.
 
20063
 
 
20064
2007-06-09  Chris Toshok  <toshok@ximian.com>
 
20065
 
 
20066
        * genkindcs.sh: new file, a script to generate
 
20067
        olive/class/agclr/Mono/Kind.cs.
 
20068
 
 
20069
        * value.h: add marker comments so that genkindcs.sh works.  Also,
 
20070
        remove the explicit value assignments to enum elements <
 
20071
        DEPENDENCY_OBJECT.  there's no need for it.
 
20072
 
 
20073
2007-06-09  Chris Toshok  <toshok@ximian.com>
 
20074
 
 
20075
        * demo.cpp (main): add in another animation, this one using
 
20076
        keyframes, that moves a square around in a square, while animating
 
20077
        its background color the same way as the other rectangles.
 
20078
 
 
20079
        * value.h, runtime.cpp: add in the keyframe types.
 
20080
 
 
20081
        * runtime.cpp (DependencyObject::DependenceyObject): fix a
 
20082
        valgrind error - we shouldn't be "free"ing Values, since they're
 
20083
        "new"ed.  Add free_value and use that for the hash table value
 
20084
        dtor, and delete them correctly.
 
20085
 
 
20086
        * animation.h, animation.cpp: add a lot of the keyframe animation
 
20087
        stuff.  DoubleAnimationUsingKeyFrames + LinearDoubleKeyFrame is
 
20088
        the only tested configuration, though.
 
20089
 
 
20090
        * clock.cpp (everywhere): guint64->TimeSpan fixing.
 
20091
        (TimeUpdated): turns out that not only does the progress go from
 
20092
        1.0 to 0.0 when reversed, but current_time actually goes backward
 
20093
        as well.  this has the nice effect of actually simplifying this
 
20094
        method substantially, since we can always compute progress as
 
20095
        time/duration.
 
20096
 
 
20097
        * clock.h: typedef TimeSpan to gint64 (switching from guint64
 
20098
        everywhere), and update the api to use this.
 
20099
 
 
20100
2007-06-09  Miguel de Icaza  <miguel@novell.com>
 
20101
 
 
20102
        * runtime.h (value_color_from_argb): Temporary hack until we
 
20103
        figure out how to marshal Colors properly, we are using the uint32
 
20104
        constructor, we should figure out if this is what we want, or if
 
20105
        we should go down the route of using doubles (C++ stores thinks as
 
20106
        Doubles our managed API as bytes).
 
20107
 
 
20108
2007-06-10  Jackson Harper  <jackson@ximian.com>
 
20109
 
 
20110
        * xaml.cpp: Handle the TransformGroup default collection.
 
20111
        - Add Value's to the collection
 
20112
 
 
20113
2007-06-09  Jackson Harper  <jackson@ximian.com>
 
20114
 
 
20115
        * transform.cpp|h: C style constructor for TransformGroup
 
20116
        * xaml.cpp: Implement loading transform groups and transform
 
20117
        collections
 
20118
 
 
20119
2007-06-09  Jackson Harper  <jackson@ximian.com>
 
20120
 
 
20121
        * value.h:
 
20122
        * runtime.cpp:
 
20123
        * transform.cpp|h: Impplement transform groups and transform
 
20124
        collections.
 
20125
 
 
20126
2007-06-09  Jackson Harper  <jackson@ximian.com>
 
20127
 
 
20128
        * value.h:
 
20129
        * runtime.cpp|h: Use the new collection classes for triggers and
 
20130
        actions. These are unsettable, so don't register them as
 
20131
        DependencyProperties.
 
20132
 
 
20133
2007-06-08  Everaldo Canuto  <ecanuto@novell.com>
 
20134
 
 
20135
        * runtime.cpp: In surface_destroy check for toplevel before unref
 
20136
        it. 
 
20137
 
 
20138
2007-06-08  Chris Toshok  <toshok@ximian.com>
 
20139
 
 
20140
        * animation.h: remove the huge whitespace gap after KeyTime, and
 
20141
        remove the ifdef'ed out Nullable<T> template.
 
20142
        
 
20143
        * animation.cpp: remove the unused point_animation C api, and use
 
20144
        the overloaded + operator on Color and Point when initializing
 
20145
        "end" in GetCurrentValue for those animations.  They're looking
 
20146
        more and more similar.
 
20147
 
 
20148
2007-06-08  Chris Toshok  <toshok@ximian.com>
 
20149
 
 
20150
        * globally: move away from all uses of Value::u union.  switch
 
20151
        everything to using Value::As* methods, which do typechecking and
 
20152
        safe downcasting.
 
20153
        
 
20154
        * value.h: make the union private to catch anyone accessing it
 
20155
        directly.
 
20156
 
 
20157
        * runtime.cpp (IsSubclassOf): return true if type == super.  Not
 
20158
        strictly "subclass", but it makes this method a little more
 
20159
        useful/efficient.  Add As* methods for string, point arrays, and
 
20160
        double arrays, and add nullable As* methods for the types which
 
20161
        don't return pointers already.
 
20162
 
 
20163
2007-06-09  Jackson Harper  <jackson@ximian.com>
 
20164
 
 
20165
        * xaml.cpp: Parse time spans correctly.
 
20166
 
 
20167
2007-06-08  Miguel de Icaza  <miguel@novell.com>
 
20168
 
 
20169
        * runtime.h (UIElement): Remove user_xform_origin as a field, now
 
20170
        we pull this from the DependencyObject as it should be. 
 
20171
 
 
20172
        * runtime.cpp (UIElement::OnSubPropertyChanged): Catch a bunch of
 
20173
        other properties that would trigger an invalidate/bounds
 
20174
        recomputation. 
 
20175
 
 
20176
        (item_init): initialize the other properties that the managed code
 
20177
        needs. 
 
20178
        
 
20179
        * shape.cpp, ffvideo.cpp: updated to use the
 
20180
        RenderTransformOriginProperty in the computation of the center for
 
20181
        the transformation.
 
20182
 
 
20183
2007-06-08  Chris Toshok  <toshok@ximian.com>
 
20184
 
 
20185
        * Makefile.am (libmoon_la_SOURCES): add value.h
 
20186
 
 
20187
        * runtime.h, value.h: move the Value structure to value.h, since
 
20188
        it (and its required forward decls) have grown huge.
 
20189
        
 
20190
        * runtime.cpp: add all the Value::As* methods, yay for CPP.
 
20191
 
 
20192
2007-06-08  Jeffrey Stedfast  <fejj@novell.com>
 
20193
 
 
20194
        * ffvideo.cpp (queue_data): Replaced the sound code with my newest
 
20195
        implementation, seems to play sound correctly now.
 
20196
 
 
20197
2007-06-08  Chris Toshok  <toshok@ximian.com>
 
20198
 
 
20199
        * clock.h, clock.cpp: move all the TimeManager/Clock/Timeline
 
20200
        stuff here, to help relieve some of the pressure building up in
 
20201
        animation.h/animation.cpp.
 
20202
 
 
20203
2007-06-08  Chris Toshok  <toshok@ximian.com>
 
20204
 
 
20205
        * animation.cpp: add some skeleton code for point keyframe
 
20206
        animations, and reduce all the Double/Point/Color Animation
 
20207
        GetCurrentValue() methods to much the same, using LERP and the
 
20208
        operators defined in runtime.h.
 
20209
 
 
20210
        * runtime.cpp (types_init): register the new keyframe types.
 
20211
 
 
20212
        * runtime.h: add some new animation types to Value, and add
 
20213
        operators for +, -, and * (scalar) for Color and Point to make the
 
20214
        animation code a little more concise.
 
20215
 
 
20216
        * animation.h: add some new classes/structs for use in keyframe
 
20217
        animations.
 
20218
 
 
20219
2007-06-08  Miguel de Icaza  <miguel@novell.com>
 
20220
 
 
20221
        * runtime.cpp, runtime.h (Collection): Rework the collection to
 
20222
        use abstract methods (gulp), 
 
20223
 
 
20224
        (VisualCollection): New collection, derives from Collection, does
 
20225
        the collection thing.
 
20226
 
 
20227
        (Panel.OnPropertyChanged): If our children collection is updated,
 
20228
        take care of it here.
 
20229
 
 
20230
        (DependencyObject): use free instead of g_free as we are
 
20231
        allocating strings with strdup.
 
20232
        
 
20233
        (Value): drop constructor that specified type, type is not part of
 
20234
        Value.
 
20235
        
 
20236
        * xaml.cpp, shape.cpp: Remove use of the old destructors now that we keep
 
20237
        track of types correctly.
 
20238
 
 
20239
2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
 
20240
 
 
20241
        * brush.cpp: Fix color formats argb and rgb (too dark).
 
20242
 
 
20243
2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
20244
 
 
20245
        * runtime.h, runtime.cpp: Change Value::Kind to not have any holes
 
20246
        in the integer ranges, and change Type's type hashtable to an array
 
20247
        of types, indexed by Value::Kind. Also add Value::COLLECTION and 
 
20248
        update Collection to use it.
 
20249
 
 
20250
2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
 
20251
 
 
20252
        * shape.cpp|h: Add Path::CanFill as it depends on the Geometry 
 
20253
        object(s) being used.
 
20254
        * geometry.cpp|h: Implemented Poly[Line|Bezier|QuadraticBezier]Segment
 
20255
        Points properties and some basic draw stuff too.
 
20256
 
 
20257
2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
20258
 
 
20259
        * runtime.h, runtime.cpp, shape.cpp, xaml.cpp:
 
20260
        Remove the Value (DependencyObject, Kind) constructor,
 
20261
        the type of the DependencyObject can be obtained directly 
 
20262
        from the DependencyObject itself now, and update all uses
 
20263
        to the Value (DependencyObject) constructor.
 
20264
 
 
20265
2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
20266
 
 
20267
        * *.h, *.cpp: Remove objectType and SetObjectType from 
 
20268
        DependencyObject, make DependencyObject::GetObjectType virtual, 
 
20269
        and update all inheritors of DependencyObject to not use 
 
20270
        SetObjectType, but override GetObjectType.
 
20271
 
 
20272
2007-06-08  Jackson Harper  <jackson@ximian.com>
 
20273
 
 
20274
        * xaml.cpp: Add some type checks to ensure we are setting child
 
20275
        properties to legal types.
 
20276
        - explicitly set properties value types, Value now requires this.
 
20277
        - fix warning
 
20278
 
 
20279
2007-06-08  Jackson Harper  <jackson@ximian.com>
 
20280
 
 
20281
        * runtime.cpp: Initialize the surface to NULL
 
20282
        - use UIElement as the type for flags 
 
20283
 
 
20284
2007-06-08  Sebastien Pouliot  <sebastien@ximian.com> 
 
20285
 
 
20286
        * shape.h: Don't waste time trying to fill lines.
 
20287
        * shape.cpp: Fix dashes support. First reset between shapes and, 
 
20288
        second, handle cairo dislike of a single dash value of 0.0.
 
20289
 
 
20290
2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
 
20291
 
 
20292
        * shape.cpp|h: Some shapes, like polylines, don't supports Fill.
 
20293
 
 
20294
2007-06-08  Sebastien Pouliot  <sebastien@ximian.com> 
 
20295
 
 
20296
        * shape.cpp|h: Implement Polygon::Points aad Polyline:Points 
 
20297
        properties as DependencyProperty. Adjust their Draw methods.
 
20298
        * runtime.cpp: Implement point_array_from_str.
 
20299
 
 
20300
2007-06-08  Sebastien Pouliot  <sebastien@ximian.com>
 
20301
 
 
20302
        * shape.cpp|h: Add DP support for StrokeDashArray (double*).
 
20303
        * runtime.cpp|h: Add double* and Point* (array) support to Value.
 
20304
        * xaml.cpp: Add DOUBLE_ARRAY and POINT_ARRAY support. Supply value 
 
20305
        kind for brushes to avoid runtime warnings.
 
20306
 
 
20307
2007-06-08  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
20308
 
 
20309
        * runtime.cpp, runtime.h: Implemented a type system that tracks
 
20310
        types' name and parent type.
 
20311
 
 
20312
2007-06-08  Miguel de Icaza  <miguel@novell.com>
 
20313
 
 
20314
        * runtime.cpp (Panel): Make children a property of the panel so we
 
20315
        can access it from the managed world.
 
20316
 
 
20317
        (Value): Add new constructor that takes a full type, need to
 
20318
        discuss this with the team.
 
20319
 
 
20320
2007-06-08  Jackson Harper  <jackson@ximian.com>
 
20321
 
 
20322
        * animation.cpp|h: Implement BeginStoryboard
 
20323
        * runtime.cpp|h: Implement event triggers
 
20324
        - Fire a loaded event when we first render an element
 
20325
        * xaml.cpp: Implement parsing and loading storyboard and begin
 
20326
        storyboard as well as event triggers and some of the property
 
20327
        types that go with these guys.
 
20328
        
 
20329
2007-06-08  Miguel de Icaza  <miguel@novell.com>
 
20330
 
 
20331
        * runtime.cpp (runtime_init): Add panel_init
 
20332
 
 
20333
        (panel_init): Register Children property (must still create the
 
20334
        collections, that will be a new fight).
 
20335
 
 
20336
2007-06-07  Miguel de Icaza  <miguel@novell.com>
 
20337
 
 
20338
        * xaml.cpp (start_element_handler): For the top element, track the
 
20339
        type that we loaded, so we can return this to our caller (needed
 
20340
        for the managed interface).
 
20341
 
 
20342
        (XamlParserInfo): track also the Value::Kind of the top_element. 
 
20343
 
 
20344
        (xaml_create_from_file, xaml_create_from_str): Both now can
 
20345
        optionally return the type of the toplevel element.
 
20346
 
 
20347
        * runtime.cpp (Value): Switch Value to strdup/free.
 
20348
 
 
20349
        Use inited to prevent multiple initializations.
 
20350
 
 
20351
2007-06-07  Chris Toshok  <toshok@ximian.com>
 
20352
 
 
20353
        * demo.cpp (main): track more of the api axing.
 
20354
 
 
20355
        * animation.h, animation.cpp (Storyboard::Begin): return
 
20356
        immediately if we've already got a root clock.
 
20357
        (globally) continue axing unused C api.
 
20358
 
 
20359
2007-06-07  Chris Toshok  <toshok@ximian.com>
 
20360
 
 
20361
        * demo.cpp: track all the animation changes away from the C api,
 
20362
        and also test out the from/by animation combination by making the
 
20363
        X scaling only go From 1.0 By -0.5 (so it animates in the range of
 
20364
        [1.0..0.5].
 
20365
        
 
20366
        * animation.h, animation.cpp: lots of changes - get rid of many of
 
20367
        the animation/timeline C api calls, since they're unnecessary for
 
20368
        the binding.  Implement the nullable property getter/setters as
 
20369
        #defines since I didn't want to c&p all of them and make the
 
20370
        obvious mistakes.  While I'm at it, implement the thing I needed
 
20371
        nullable typed values for - "by" animation support.  Now you can
 
20372
        specify any of the following combinations and get a usable
 
20373
        animation: From+By, From+To, By, To.  You can actually just put
 
20374
        From as well, but it won't animate (since both start end end will
 
20375
        be the same).  The To property overrides the By property, if both
 
20376
        are present.
 
20377
 
 
20378
        * runtime.h, runtime.cpp: add an overload of
 
20379
        DependencyProperty::SetValue which takes a Value*, to enable
 
20380
        nullable types to be set.  the existing SetValue method calls the
 
20381
        new one with &value.
 
20382
 
 
20383
2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
 
20384
 
 
20385
        * brush.cpp: Fix comment.
 
20386
        * shape.cpp: Reduce duplication.
 
20387
 
 
20388
2007-06-07  Miguel de Icaza  <miguel@novell.com>
 
20389
 
 
20390
        * runtime.h: Store Value.BOOL in an int32, simplifies my life. 
 
20391
 
 
20392
        * runtime.cpp (dependency_object_set_value,
 
20393
        dependency_object_get_value): Add C# callable method calls to
 
20394
        control the properties.
 
20395
 
 
20396
        (dependency_property_lookup): Add a way of find dependency
 
20397
        properties.
 
20398
 
 
20399
2007-06-07  Chris Toshok  <toshok@ximian.com>
 
20400
 
 
20401
        * animation.cpp (TimeUpdated): comment out some spew.
 
20402
 
 
20403
        * runtime.cpp (SetValue): use the copy ctor, and fix != check for
 
20404
        current_value and value.
 
20405
        (Value::Value): add a copy ctor, which takes care of the g_strdup
 
20406
        for us.
 
20407
 
 
20408
        * runtime.h: add copy ctor for Value.
 
20409
 
 
20410
2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
 
20411
 
 
20412
        * brush.cpp, geometry.cpp, shape.cpp: Protect against NULL properties.
 
20413
 
 
20414
2007-06-07  Sebastien Pouliot  <sebastien@ximian.com> 
 
20415
 
 
20416
        * geometry.cpp: #if-out transforms, it crash the xaml samples
 
20417
        * runtime.h: Fix hierarchy. Panel inherits from FrameworkElement.
 
20418
 
 
20419
2007-06-07  Chris Toshok  <toshok@ximian.com>
 
20420
 
 
20421
        * animation.cpp: switch all the various linear interpolation
 
20422
        expressions to using the LERP macro, and add the PointAnimation
 
20423
        implementation.
 
20424
 
 
20425
        * animation.h: add PointAnimation.
 
20426
 
 
20427
        * runtime.h: add Value::POINTANIMATION.
 
20428
 
 
20429
2007-06-07  Chris Toshok  <toshok@ximian.com>
 
20430
 
 
20431
        * runtime.h (Value): add COLORANIMATION to the list of types.
 
20432
        Also, add a Kind constructor so we can use that for nullable type
 
20433
        default values in the ::RegisterProperty calls.  That is,
 
20434
        initializing the default to Value(Value::COLOR) gives you a null
 
20435
        default value with the COLOR type.
 
20436
 
 
20437
        * runtime.cpp (Value): new Kind ctor.
 
20438
 
 
20439
        * animation.cpp/.h: add ColorAnimation.
 
20440
 
 
20441
        * demo.cpp (main): add a color animation that interpolates between
 
20442
        Red and Blue for the SolidColorBrush.
 
20443
 
 
20444
2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
 
20445
 
 
20446
        * runtime.cpp: Restore alpha support. Don't call cairo_set_operator
 
20447
        without a cairo_save|restore pair (or without resetting it's original
 
20448
        value). Anyway right now it works without any of that :)
 
20449
 
 
20450
2007-06-07  Jackson Harper  <jackson@ximian.com>
 
20451
 
 
20452
        * runtime.cpp|h: add event triggers.
 
20453
        * xaml.cpp: parse event triggers.
 
20454
 
 
20455
2007-06-07  Chris Toshok  <toshok@ximian.com>
 
20456
 
 
20457
        * animation.cpp/.h (Clock): initialize duration here.
 
20458
        (TimeUpdated): instead of getting it every time through this
 
20459
        function.
 
20460
 
 
20461
2007-06-07  Chris Toshok  <toshok@ximian.com>
 
20462
 
 
20463
        * animation.h: make Duration::FromSeconds return numbers of the
 
20464
        same magnitude as get_now().
 
20465
 
 
20466
        * animation.cpp (Clock): fix UMR.
 
20467
 
 
20468
2007-06-07  Jackson Harper  <jackson@ximian.com>
 
20469
 
 
20470
        * xamp.cpp: Oops, not sure how that happened.  Set the property
 
20471
        name correctly, not to the type name.
 
20472
 
 
20473
2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
 
20474
 
 
20475
        * geometry.cpp|h: Apply transform. Fix default values.
 
20476
 
 
20477
2007-06-07  Miguel de Icaza  <miguel@novell.com>
 
20478
 
 
20479
        * animation.cpp (get_now): The time computation was wrong, there
 
20480
        was an extra "10" in there that made all computations go astray
 
20481
        and in particular cause the large values for ScaleY, which made
 
20482
        getboundingbox ridiculously slow.
 
20483
 
 
20484
        For debugging purposes: ScaleY was being set to
 
20485
        131472940552.95215, which came from
 
20486
        DoubleAnimation:GetCurrentValue which was computing this value
 
20487
        from a busted clock.
 
20488
 
 
20489
2007-06-07  Sebastien Pouliot  <sebastien@ximian.com>
 
20490
 
 
20491
        * geometry.cpp|h: Add drawing for [Ellipse|Line|Rectangle] geometry.
 
20492
        Add basic code for the other geometry types.
 
20493
        * runtime.cpp|h: Add basic implementation for point_from_str and 
 
20494
        rect_from_str 
 
20495
        * shape.h: Export some cairo helpers.
 
20496
        * shape.cpp: Refactor drawing to reuse the code from geometry.
 
20497
        * xaml.cpp: Add Point and Rect parsing.
 
20498
 
 
20499
2007-06-07  Chris Toshok  <toshok@ximian.com>
 
20500
 
 
20501
        * demo.cpp: make all the animation stuff work declaratively, and
 
20502
        test some of the different repeatbehavior and autoreverse
 
20503
        settings.
 
20504
        
 
20505
        * animation.cpp: huge block of nasty code to determine our
 
20506
        progress given the combinations of autoreverse and repeatbehavior.
 
20507
 
 
20508
        * animation.h: Add Duration stucture, add a few C api calls for
 
20509
        getting/setting timeline properties.
 
20510
 
 
20511
        * runtime.h, runtime.cpp: add DURATION support to Value.
 
20512
        
 
20513
2007-06-07  Jackson Harper  <jackson@ximian.com>
 
20514
 
 
20515
        * runtime.cpp|h: Some pieces of the triggers framework.
 
20516
 
 
20517
2007-06-07  Jackson Harper  <jackson@ximian.com>
 
20518
 
 
20519
        * xaml.cpp: Handle repeat behaviors, lookup attached properties.
 
20520
 
 
20521
2007-06-06  Chris Toshok  <toshok@ximian.com>
 
20522
 
 
20523
        * animation.cpp, animation.h: add timeline_set_autoreverse.
 
20524
 
 
20525
2007-06-06  Chris Toshok  <toshok@ximian.com>
 
20526
 
 
20527
        * animation.h: add prototype for timeline_set_repeat_behavior.
 
20528
        
 
20529
        * animation.cpp (animation_init): register the RepeatBehavior
 
20530
        property.
 
20531
        (timeline_set_repeat_behavior): new function.
 
20532
 
 
20533
        * runtime.h: a better solution to enforcing types in the Value
 
20534
        ctors - make Value (void*) private.  this gives compilation errors
 
20535
        at all usage points where you're passing an unrecognized pointer
 
20536
        type.  Also, add RepeatBehavior support to Value.
 
20537
 
 
20538
        * runtime.cpp: add repeatbehavior support to Value.
 
20539
        
 
20540
        * geometry.cpp: change all Value(pointer-to-struct) calls to
 
20541
        Value(struct) calls.
 
20542
 
 
20543
        * transform.h: we need do define TransformGroup as a subclass of
 
20544
        Transform, or the functions that SetValue a transformgroup fail to
 
20545
        compile (since it's not a descendent of DependencyObject.)
 
20546
 
 
20547
2007-06-07  Jackson Harper  <jackson@ximian.com>
 
20548
 
 
20549
        * xaml.cpp: Get object element property setting working.
 
20550
 
 
20551
2007-06-06  Chris Toshok  <toshok@ximian.com>
 
20552
 
 
20553
        * runtime.h, runtime.cpp: add a special void* ctor to value so
 
20554
        pointers aren't silently converted to bool (bad c++, bad!), and
 
20555
        have that ctor output a warning message to the console, along with
 
20556
        the likely cause.
 
20557
 
 
20558
        * brush.cpp: need to deref the Color* in the Value ctor.
 
20559
 
 
20560
2007-06-06  Chris Toshok  <toshok@ximian.com>
 
20561
 
 
20562
        * animation.cpp: new dump of the animation stuff.  this is much
 
20563
        closer in spirit and implementation to that of WPF's
 
20564
        timing/animation system.  it's not perfect yet, but it's much,
 
20565
        much closer.
 
20566
 
 
20567
2007-06-06  Chris Toshok  <toshok@ximian.com>
 
20568
 
 
20569
        * runtime.h: make the point/color/rect copy constructors take a
 
20570
        ref, not a pointer.  also, make the value contructors for struct
 
20571
        types by-value.
 
20572
 
 
20573
        * runtime.cpp: make the value constructors for struct types
 
20574
        by-value.
 
20575
 
 
20576
        * brush.cpp (brush_init): pass the Color by value.
 
20577
 
 
20578
2007-06-06  Chris Toshok  <toshok@ximian.com>
 
20579
 
 
20580
        * runtime.h, runtime.cpp: move the Value implementation (for
 
20581
        everything but the operators) to the .cpp file.
 
20582
 
 
20583
2007-06-06  Miguel de Icaza  <miguel@novell.com>
 
20584
 
 
20585
        * runtime.h, runtime.cpp: Surface is no longer derived from
 
20586
        Canvas, it now instead hosts a canvas, should avoid having two
 
20587
        nested canvases for loading XAML files.
 
20588
 
 
20589
        demo.cpp: update.
 
20590
 
 
20591
        Correct computation of the bounding box for shapes and videos.
 
20592
 
 
20593
        * shape.cpp: Do not pop the cairo state after draw and then call
 
20594
        extents as the computation on extents is done with the current
 
20595
        cairo context, not the cairo context that drew the data before
 
20596
        popping (this would show up with thick brushes).
 
20597
 
 
20598
        * runtime.cpp: Add 2 instead of 1, as double to integer rounding
 
20599
        can take two values (negative and positive).
 
20600
 
 
20601
        * cutil.cpp: Cut and paste cairo code here, it computes the proper
 
20602
        bounding box from the extents using the current absolute matrix. 
 
20603
 
 
20604
        * ffvideo.cpp (queue_data): Memory leak gone.
 
20605
 
 
20606
2007-06-06  Jackson Harper  <jackson@ximian.com>
 
20607
 
 
20608
        * xaml.cpp: Set brush attributes.
 
20609
 
 
20610
2007-06-06  Jackson Harper  <jackson@ximian.com>
 
20611
 
 
20612
        * runtime.h:
 
20613
        * transform.h: Need to register this base DependencyObject for the
 
20614
        xaml parser.
 
20615
        * geometry.cpp: use correct value kind for registering properties
 
20616
        * runtime.cpp: Don't be strict about the type with properties that
 
20617
        derive from DependencyObject, we can't be too strict here, because
 
20618
        of inheritance the registered type BRUSH could be set to
 
20619
        SOLIDCOLORBRUSH
 
20620
        - register some properties with the correct type
 
20621
        
 
20622
2007-06-06  Jackson Harper  <jackson@ximian.com>
 
20623
 
 
20624
        * animation.cpp|h:
 
20625
        * runtime.h: Staring to add triggers
 
20626
        * shape.cpp: Use brush as our property kind
 
20627
        
 
20628
2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
 
20629
 
 
20630
        * runtime.h: Add new types and SweepDirection enum.
 
20631
        * geometry.cpp|h: Add PathFigure, ArcSegment, BezierSegment and 
 
20632
        LineSegment classes and [g|s]etter functions.
 
20633
 
 
20634
2007-06-06  Miguel de Icaza  <miguel@novell.com>
 
20635
 
 
20636
        * runtime.h: Move all the types into the Value::Kind enumeration
 
20637
        so that we can have a shared type system.
 
20638
 
 
20639
        * demo.cpp (main): Allow loading a XAML file from the command
 
20640
        line, for your testing pleasure.
 
20641
 
 
20642
        * ffvideo.cpp (convert_to_rgb): We no longer need the loop to swap
 
20643
        channels.
 
20644
 
 
20645
        Move to cairo to render to the screen the contents
 
20646
        of the buffer.   ffmpeg and cairo do have the same RGBA format, it
 
20647
        was actually the copy from this format to the screen using
 
20648
        gdk_draw_pixbuf that failed: pixbuf expected the data in another
 
20649
        format and there is no way to configure it.
 
20650
        
 
20651
        * runtime.cpp (surface_clear): use the cairo api as the surface is
 
20652
        no longer living on the client buffer. 
 
20653
 
 
20654
        (surface_destroy): update
 
20655
 
 
20656
        (create_xlib, realized_callback, unrealized_callback): When the
 
20657
        widget is realized, create a cairo context
 
20658
 
 
20659
2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
 
20660
 
 
20661
        * runtime.h: Add Value support for Point and Rect
 
20662
        * geometry.cpp: Implement [g|s]etters for Point and Rect properties
 
20663
 
 
20664
2007-06-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
20665
 
 
20666
        * runtime.cpp, runtime.h: Added DependencyObject::GetObjectType.
 
20667
 
 
20668
2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
 
20669
 
 
20670
        * shape.cpp|h, runtime.cpp|h: Remove the (now) useless 
 
20671
        set_prop_from_str methods since everything they handled is now
 
20672
        moved into DependencyProperty.
 
20673
 
 
20674
2007-06-06  Sebastien Pouliot  <sebastien@ximian.com> 
 
20675
 
 
20676
        * shape.cpp|h: Use DependencyProperty for Shape Fill and Stroke 
 
20677
        brushes. Add getter functions for fill and stroke.
 
20678
 
 
20679
2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
 
20680
 
 
20681
        * runtime.h: Call SetObjectType on Brush and SolidColorBrush
 
20682
 
 
20683
2007-06-06  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
20684
 
 
20685
        * runtime.cpp, runtime.h: Remove the default_values hashtable
 
20686
        from DependencyObject, it's redundant since the default value
 
20687
        is stored inside the DependencyProperty anyway.
 
20688
 
 
20689
2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
 
20690
 
 
20691
        * demo.cpp: Adapted to API changes.
 
20692
        * brush.cpp: Add [g|s]etters for Brush and SolidColorBrush using
 
20693
        DependencyProperty. Add brush initialization code.
 
20694
        * runtime.cpp|h: Change Brush to inherit from DependencyObject. 
 
20695
        Add Color support to Value. Call brush initialization.
 
20696
        * shape.cpp: Add miter, pen join|cap and fill rule drawing support.
 
20697
        * xaml.cpp: Adapted to API changes since SolidColorBrush now inherits
 
20698
        from DependencyObject.
 
20699
 
 
20700
2007-06-06  Jeffrey Stedfast  <fejj@gnome.org>
 
20701
 
 
20702
        * ffvideo.cpp (convert_to_rgb): Make sure the frame->data is
 
20703
        non-NULL before trying to scale.
 
20704
 
 
20705
2007-06-06  Sebastien Pouliot  <sebastien@ximian.com>
 
20706
 
 
20707
        * brush.cpp: Fix compiler warning.
 
20708
 
 
20709
2007-06-06  Jackson Harper  <jackson@ximian.com>
 
20710
 
 
20711
        * runtime.cpp/h: initialize xaml
 
20712
        - Add canvas C style constructor
 
20713
        - Make SolidColorBrush's Color public
 
20714
        * shape.cpp: Comment out the set_prop... stuff, this code won't be
 
20715
        used anymore, now that the xaml parser is using dependency objects
 
20716
        to set properties.
 
20717
        * animation.cpp|h:
 
20718
        * transform.cpp|h: Add some C style constructors
 
20719
        * brush.cpp: Create colors from a string instead of solid brushes
 
20720
        * xaml.cpp: Add in a known element tree, and move property setting
 
20721
        into the xaml code, also added code for setting properties with
 
20722
        property element syntax
 
20723
        
 
20724
2007-06-05  Miguel de Icaza  <miguel@novell.com>
 
20725
 
 
20726
        Add type checking on SetValue, RegisterProperty to avoid
 
20727
        mistakes. 
 
20728
        
 
20729
        * runtime.cpp (SetValue): Add simple type checking
 
20730
        (Register): Ensure that no empty values are passed. 
 
20731
 
 
20732
        * runtime.h (DependencyObject): events, remove unused field.
 
20733
 
 
20734
2007-06-05  Chris Toshok  <toshok@ximian.com>
 
20735
 
 
20736
        * runtime.cpp: we need to maintain another hash table for
 
20737
        DependencyProperties so we can return the actual property, not the
 
20738
        default value, which is what GetDependencyProperty needs to do.
 
20739
        (DependencyObject::FindName): implement this by either trying to
 
20740
        use the namescope on this object or the global_NameScope (rather
 
20741
        suboptimal, it's supposed to 'walk the logical tree' according to
 
20742
        msdn).
 
20743
 
 
20744
        partially implement NameScope.
 
20745
 
 
20746
        * runtime.h: add NameScope, and add a uint64 Value.  Also add
 
20747
        FindName on DependencyObject.
 
20748
 
 
20749
2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
 
20750
 
 
20751
        * shape.cpp|h: Add Shape's thickness and some dash support. Add more
 
20752
        [g|s]etters for Shape using DependencyProperty.
 
20753
        * demo.cpp: Add thickness and dashes to the rectangles.
 
20754
 
 
20755
2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
 
20756
 
 
20757
        * shape.cpp|h: Move FrameworkElement stuff into runtime.cpp|h. Use
 
20758
        functions to retrieve the height and width of shapes (values defined
 
20759
        in FrameworkElement).
 
20760
        * runtime.cpp|h: Use DependencyProperty for FrameworkElement Height 
 
20761
        and Width properties.
 
20762
        * demo.cpp: Adjust to API changes.
 
20763
 
 
20764
2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
 
20765
 
 
20766
        * shape.cpp: Remove (now) useless properties in Line.
 
20767
 
 
20768
2007-06-05  Miguel de Icaza  <miguel@novell.com>
 
20769
 
 
20770
        * shape.cpp, ffvideo.cpp, video.cpp: Do not use x, y anymore, we
 
20771
        now have an absolute affine set for us beforehand.
 
20772
 
 
20773
        * runtim.cpp: on update_xform call the parent ::get_xform_for to
 
20774
        obtain the base affine transform to use.
 
20775
 
 
20776
2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
 
20777
 
 
20778
        * geometry.cpp|h: Use DependencyProperty for properties.
 
20779
        * transform.h: Protect.
 
20780
 
 
20781
2007-06-05  Chris Toshok  <toshok@ximian.com>
 
20782
 
 
20783
        * runtime.h: call SetObjectType where we need it.
 
20784
 
 
20785
        * shape.h: same.
 
20786
        
 
20787
        * geometry.h: same.
 
20788
 
 
20789
2007-06-05  Miguel de Icaza  <miguel@novell.com>
 
20790
 
 
20791
        * ffvideo.cpp (VideoFfmpeg): Initialize audio_frames_size, caught
 
20792
        by valgrind
 
20793
 
 
20794
        * runtime.cpp (item_set_transform): This routine was doing nothing
 
20795
        but doing an invalidate of the region, updating the transform,
 
20796
        updating the bounding box and re-invalidating the new area.   Move
 
20797
        that logic elsewhere (it was also ignoring the affine parameter
 
20798
        anyways). 
 
20799
 
 
20800
        Unify user_xform with the RenderTransform dependency property, now
 
20801
        we always have a static absolute transformation in the UIElement. 
 
20802
 
 
20803
2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
 
20804
 
 
20805
        * shape.cpp|h: Update shape_init with correct values and implement
 
20806
         path_[g|s]et_data.
 
20807
 
 
20808
2007-06-05  Chris Toshok  <toshok@ximian.com>
 
20809
 
 
20810
        * animation.cpp (ClockTimeChanged): use the instance variety of
 
20811
        GetDependencyProperty.
 
20812
 
 
20813
        * runtime.cpp (GetDependencyProperty): just call the static
 
20814
        variety with our objectType.
 
20815
        (SetObjectType): method to enable subclasses to set the object
 
20816
        type.
 
20817
 
 
20818
        * runtime.h: add DependencyObject::SetObjectType, as well as the
 
20819
        instance version of DependencyObject::GetDependencyProperty.
 
20820
 
 
20821
        * transform.h: call SetObjectType to identify this object.
 
20822
 
 
20823
2007-06-05  Chris Toshok  <toshok@ximian.com>
 
20824
 
 
20825
        * runtime.cpp (AddHandler): oops, g_list_append requires an assignment.
 
20826
 
 
20827
2007-06-05  Chris Toshok  <toshok@ximian.com>
 
20828
 
 
20829
        * runtime.h (Canvas): declare our dependencyproperties here.
 
20830
 
 
20831
        * runtime.cpp (canvas_init): actually assign the properties.
 
20832
 
 
20833
2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
20834
        
 
20835
        * runtime.cpp, runtime.h: Implement a DependencyProperty::
 
20836
        GetDependencyProperty.
 
20837
 
 
20838
2007-06-05  Chris Toshok  <toshok@ximian.com>
 
20839
 
 
20840
        * runtime.cpp (OnSubPropertyChanged): remove the event handler for
 
20841
        the render transform and use OnSubPropertyChange instead.
 
20842
        (item_set_render_transform): clean this up substantially - the
 
20843
        property system handles all the "event" stuff now.
 
20844
        (item_get_render_transform): we need a getter now that this uses
 
20845
        the depprop stuff.
 
20846
        (NotifyAttacheesOfPropertyChange): new method, call
 
20847
        OnSubPropertyChanged with both the attachee's property (the thing
 
20848
        storing 'this') and the subproperty that changed.
 
20849
        (SetValue): complicate the attachee stuff a bit, since we need to
 
20850
        store both the object and the property it's storing the value in.
 
20851
        (item_init): initialize RenderTransformProperty.
 
20852
 
 
20853
        * runtime.h: make UIElement subclass from DependencyObject. This
 
20854
        flattens the hierarchy some from SL (which has Visual in between,
 
20855
        but we have no Visual.)
 
20856
 
 
20857
        * transform.cpp (OnPropertyChanged): call
 
20858
        NotifyAttacheesOfPropertyChange.  Also, reindent some stuff.
 
20859
 
 
20860
2007-06-05  Sebastien Pouliot  <sebastien@ximian.com> 
 
20861
 
 
20862
        * demo.cpp: Updated to use rectangle_set_radius_[x|y]
 
20863
        * shape.cpp|h: Add [get|set]ter functions for Line and Rectangle
 
20864
        * xaml.cpp: Updated for API change.
 
20865
 
 
20866
2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
 
20867
 
 
20868
        * runtime.h: Add new ctor for Color(uint). Change UIElement to inherit
 
20869
        from DependencyObject.
 
20870
        * brush.cpp: Complete named colors (wrt System.Windows.Media.Colors)
 
20871
 
 
20872
2007-06-05  Jeffrey Stedfast  <fejj@gnome.org>
 
20873
 
 
20874
        * ffvideo.cpp (queue_data): If we fail to get an audio codec, then
 
20875
        we simply cannot play sound (or maybe there is no sound), either
 
20876
        way, don't try to dereference the audio_codec pointer if it is
 
20877
        NULL. Also wrapped audio setup in an #ifdef
 
20878
 
 
20879
2007-06-05  Miguel de Icaza  <miguel@novell.com>
 
20880
 
 
20881
        Implement the OnPropertySet stuff, builds on Toshok's first pass.
 
20882
 
 
20883
        Next stage: discuss with Toshok the migration to this awesome
 
20884
        framework from Events ;-)
 
20885
        
 
20886
        * runtime.cpp (SetValue): when adding dependencyobjects track on
 
20887
        the attached object the ownership.
 
20888
 
 
20889
        Notify all containers of a property change.
 
20890
 
 
20891
        * brush.cpp (Brush): Remove AddListener, RemoveListener, we can
 
20892
        use the property notification system for these.
 
20893
 
 
20894
        * runtime.h (DependencyObject): Add a "attached_list" gslist to
 
20895
        keep track of all the objects where this particular
 
20896
        DependencyObject has been attached to, to provide OnPropertyChange
 
20897
        notifications (not hooked up yet).
 
20898
 
 
20899
        (Value): Introduce DependencyObject constructor.
 
20900
 
 
20901
2007-06-05  Sebastien Pouliot  <sebastien@ximian.com>
 
20902
 
 
20903
        * shape.cpp|h: Started moving properties to DependencyObject. Added
 
20904
        Path.
 
20905
        * geometry.cpp|h: New. System.Windows.Media.Geometry related classes
 
20906
        * runtime.cpp: Added calls to shape_init and geometry_init
 
20907
        * runtime.h: Added Rect structure and new DependencyObject types for
 
20908
        shapes and geometry.
 
20909
        * Makefile.am: Added geometry.cpp|h to source files.
 
20910
 
 
20911
2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
20912
 
 
20913
        * runtime.h: initialize Value to zero on construction.
 
20914
 
 
20915
2007-06-05  Chris Toshok  <toshok@ximian.com>
 
20916
 
 
20917
        * demo.cpp: abstract the cairo transformations away by using
 
20918
        RotateTransforms.. and this is probably going to annoy some
 
20919
        people, but make the normally stationary elements bounce between
 
20920
        smaller and larger.
 
20921
 
 
20922
        * animation.h: make Clock subclass from DependencyObject.
 
20923
 
 
20924
        * animation.cpp (animation_init): assign the properties, don't
 
20925
        just call Register.
 
20926
 
 
20927
        also, track the EventObject method name change.
 
20928
 
 
20929
        * runtime.cpp (item_set_render_transform): new method.  unhook the
 
20930
        old transform and hook up the new one.  also, explicit set our
 
20931
        transformation here.
 
20932
        (SetValue): make this only do the work (and more importantly only
 
20933
        call OnPropertyChanged) if the value is different.
 
20934
 
 
20935
        * runtime.h: shorten the names of the EventObject methods.  Add
 
20936
        operator== and operator!= to Value.  Add an EventObject to
 
20937
        DependencyObject to give us rudimentary event handlers.  Add the
 
20938
        render_transform "higher-level" transform into to UIElement.
 
20939
 
 
20940
        * transform.h: add the OnPropertyChanged override and rename
 
20941
        transform_get_value to transform_get_transform.
 
20942
 
 
20943
        * transform.cpp (transform_init): oops.  we need to actually
 
20944
        assign the properties.
 
20945
        (transform_get_transform): indent.
 
20946
        (OnPropertyChanged): override this method to emit
 
20947
        "TransformChanged".
 
20948
 
 
20949
2007-06-04  Chris Toshok  <toshok@ximian.com>
 
20950
 
 
20951
        * Makefile.am (libmoon_la_SOURCES): add animation and transform to
 
20952
        the build.
 
20953
 
 
20954
        * runtime.h: flesh out Value some, adding BOOL (has to be C++
 
20955
        bool, not gboolean, or else it conflicts with int32), INT32,
 
20956
        INT64, and STRING (char*).
 
20957
 
 
20958
        * runtime.cpp (runtime_init): call animation_init and
 
20959
        transform_init.
 
20960
 
 
20961
        * animation.cpp, animation.h, transform.h, transform.cpp: get
 
20962
        these using the new dependency object/value foo, and get them
 
20963
        compiling.
 
20964
 
 
20965
2007-06-04  Miguel de Icaza  <miguel@novell.com>
 
20966
 
 
20967
        * runtime.h: Make the "Base" refcounting class the base for
 
20968
        DependencyObject. 
 
20969
 
 
20970
        * ffvideo.cpp: Set audio initialization to zero for now, so we can
 
20971
        continue debugging.
 
20972
 
 
20973
        * runtime.cpp (Canvas): override render, in preparation for using
 
20974
        attached properties.   I get the feeling am going to regret not
 
20975
        keeping the top/left attached properties somewhere else.
 
20976
 
 
20977
        (Value): introduce the discriminating union for values as
 
20978
        discussed on irc.
 
20979
        
 
20980
        (DependencyObject): use lower case name for properties.
 
20981
        Take Value * instead of void *, this is so we can represent NULL
 
20982
        values (is this a good idea Chris, or do we want to have a
 
20983
        Value.Type.NULL enumeration value?
 
20984
 
 
20985
        Update hash table creation to g_free the result on hash table
 
20986
        update and removal.
 
20987
 
 
20988
        (Event): Update indentation to be Linux-like instead of GNU like.
 
20989
 
 
20990
2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
 
20991
 
 
20992
        * shape.cpp|h: Add Poly[line|gon] drawing code and C helper functions 
 
20993
        to create them. Replace the "old" C1 constant in Ellipse::Draw with 
 
20994
        ARC_TO_BEZIER (now that I know where it comes from ;-)
 
20995
 
 
20996
2007-06-04  Jeffrey Stedfast  <fejj@novell.com>
 
20997
 
 
20998
        * ffvideo.cpp (queue_data): Got sound kinda sorta working...
 
20999
 
 
21000
2007-06-04  Jackson Harper  <jackson@ximian.com>
 
21001
 
 
21002
        * xaml.cpp: Give elements a type
 
21003
 
 
21004
2007-06-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
 
21005
 
 
21006
        * runtime.cpp, runtime.h: implemented DependencyProperty and DependencyObject.
 
21007
 
 
21008
2007-06-04  Chris Toshok  <toshok@ximian.com>
 
21009
 
 
21010
        * animation.h, animation.cpp: initial pass at some of the
 
21011
        animation stuff.  doesn't build yet.
 
21012
 
 
21013
2007-06-04  Chris Toshok  <toshok@ximian.com>
 
21014
 
 
21015
        * runtime.cpp, runtime.h: add EventObject, a c++ only base class
 
21016
        for managing events.
 
21017
 
 
21018
2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
 
21019
 
 
21020
        * shape.h: Remove Ellipse::set_prop_from_str, it's "virtually" empty
 
21021
        and added Draw methods to Polygon and Polyline.
 
21022
        * shape.cpp: Added round-corner rectangle support (RadiusX, RadiusY)
 
21023
        and match changes in header file.
 
21024
 
 
21025
2007-06-04  Jackson Harper  <jackson@ximian.com>
 
21026
 
 
21027
        * shape.cpp/h: width and height are properties of the
 
21028
        FrameworkElement.
 
21029
 
 
21030
2007-06-04  Jackson Harper  <jackson@ximian.com>
 
21031
 
 
21032
        * shape.cpp/h: add ellipse_new
 
21033
        - set width/height on ellipses (ellipsi ?) and draw them.
 
21034
        * xaml.cpp: create ellipses, get zorder correct
 
21035
 
 
21036
2007-06-04  Jackson Harper  <jackson@ximian.com>
 
21037
 
 
21038
        * xaml.cpp: put in character data functionality, eventually we
 
21039
        will need to add FrameworkElement methods for setting the default
 
21040
        content element. See
 
21041
        http://msdn2.microsoft.com/en-us/library/ms752059.aspx#contentmodels
 
21042
        for more info on content properties.
 
21043
 
 
21044
2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
 
21045
 
 
21046
        * demo.cpp: Include shape.h and use a rounded-rectangle
 
21047
        * runtime.h: Added FillRule and moved out Shapes.
 
21048
        * shape.h: New. Moved all shapes from runtime.h and added new ones.
 
21049
        * shape.cpp: Added Polygon and Polyline.
 
21050
        * xaml.cpp: Include shape.h
 
21051
        * Makefile.am: Add shape.h
 
21052
 
 
21053
2007-06-04  Chris Toshok  <toshok@ximian.com>
 
21054
 
 
21055
        * transform.cpp, transform.h: initial code for the transform
 
21056
        objects.  doesn't compile yet.
 
21057
 
 
21058
2007-06-04  Jackson Harper  <jackson@ximian.com>
 
21059
 
 
21060
        * demo.cpp: fix typo
 
21061
 
 
21062
2007-06-04  Sebastien Pouliot  <sebastien@ximian.com> 
 
21063
 
 
21064
        * demo.cpp: Fix for API changes.
 
21065
        * runtime.h: Add FrameworkElement, other Shape properties and move
 
21066
        around some properties to match the managed definitions.
 
21067
        * shape.cpp: Add setters for new Shape properties and move properties
 
21068
        parsing to match managed definitions.
 
21069
        * xaml.cpp: Fix for API changes.
 
21070
 
 
21071
2007-06-04  Sebastien Pouliot  <sebastien@ximian.com>
 
21072
 
 
21073
        * shape.cpp: Don't typecast doubles into ints.
 
21074
 
 
21075
2007-06-04  Jackson Harper  <jackson@ximian.com>
 
21076
 
 
21077
        * runtime.h:
 
21078
        * xaml.cpp: Implement function that allows you to load xaml from a
 
21079
        chunk of text.
 
21080
        * demo.cpp: add a very small xaml demo
 
21081
 
 
21082
2007-06-04  Jackson Harper  <jackson@ximian.com>
 
21083
 
 
21084
        * xaml.cpp: remove old no longer used function.
 
21085
        - track whether or not we are adding to a panel instead of surface
 
21086
        * shape.cpp: Fix typo, need to set line_* not x1, x2, etc.
 
21087
 
 
21088
2007-06-04  Jackson Harper  <jackson@ximian.com>
 
21089
 
 
21090
        * shape.cpp: Add new methods to allow shapes to have their
 
21091
        properties filled in from text values.
 
21092
 
 
21093
        * brush.cpp: Start work on allowing solid color brushes to be
 
21094
        created from strings.
 
21095
 
 
21096
        * runtime.cpp: stub in methods for setting properties on canvas
 
21097
        and UIElements (these had some meat but I am removing it now that
 
21098
        some of the names are updated, will put back later).
 
21099
 
 
21100
        * runtime.h: add some methods and functions for XAML parsing.
 
21101
 
 
21102
        * xaml.cpp: Initial implementation of the XAML parser.
 
21103
 
 
21104
2007-06-03  Miguel de Icaza  <miguel@novell.com>
 
21105
 
 
21106
        * runtime.cpp (Collection, Panel): The beginning of an API to
 
21107
        encapsulate collections that we will expose to the unmanaged
 
21108
        world.  
 
21109
 
 
21110
        This should be the backend for the base collection class in agclr
 
21111
        for the strongly typed types.   
 
21112
 
 
21113
        The idea is to have the MS.Internal.Collection<T> be a proxy that
 
21114
        contains an IntPtr pointer to the C++ Collection instance and map
 
21115
        the various add/remove methods to it.
 
21116
 
 
21117
        The immediate goal is to be able to do from C#:
 
21118
 
 
21119
                Rectangle r = new Rectangle ();
 
21120
                r.Brush = new SolidColorBrush (new Color (1, 0, 0));
 
21121
                Canvas.Children.Add (r);
 
21122
 
 
21123
2007-06-02  Miguel de Icaza  <miguel@novell.com>
 
21124
 
 
21125
        Implement support for the render origin.
 
21126
        
 
21127
        * runtime.cpp (item_invalidate): add one to cope with the rouding
 
21128
        from floats to ints (fixes some trailing junk).
 
21129
 
 
21130
        Item: redo the affine transformation setup to support both the
 
21131
        render_transform_origin property and avoid recomputing all of this
 
21132
        on each repaint request.
 
21133
 
 
21134
        * ffvideo.cpp: Changed the code to do the actual video decoding on
 
21135
        the main thread so we can put all the video and audio in the
 
21136
        queues before we start rendering.
 
21137
 
 
21138
        Failed attempts at getting audio to work.
 
21139
 
 
21140
        * Everywhere: renamed Item to UIElement to better match the actual
 
21141
        class hierarchy that we will be exposing.
 
21142
 
 
21143
2007-06-01  Jackson Harper  <jackson@ximian.com>
 
21144
 
 
21145
        * shape.cpp: Fix typo.
 
21146
 
 
21147
2007-06-01  Miguel de Icaza  <miguel@novell.com>
 
21148
 
 
21149
        * ffvideo.cpp: No longer use CMD_INITED, instead use g_idle_add to
 
21150
        notify a special function (callback_video_inited).  Makes me
 
21151
        wonder if I should do the same for the new-frame call
 
21152
 
 
21153
        Initialize the cairo surface on the callback_video_inited routine
 
21154
        instead of doing this on the decoder thread (that was a mistake).
 
21155
 
 
21156
        This solves the misterious case of the video that randomly did not
 
21157
        show up.
 
21158
 
 
21159
2007-05-29  Miguel de Icaza  <miguel@novell.com>
 
21160
 
 
21161
        * video.cpp (load_next_frame): reimplement the video play back
 
21162
        logic so that it will now properly paint the proper frame on the
 
21163
        screen as needed.
 
21164
 
 
21165
        Add logic to skip frames if video is playing back too slowly, and
 
21166
        to resume playback when new frames are ready.
 
21167
 
 
21168
        Currently its computing the delay using the n_frame_rate field
 
21169
        (which no sample uses, but I could not find any other way of
 
21170
        estimating the frame rate other than this.
 
21171
 
 
21172
        It works at least with some sample streams that I have with 30 fps
 
21173
        and 15 fps.
 
21174
 
 
21175
        * runtime.cpp: Move the GtkDrawingArea widget into the Surface,
 
21176
        and handle exposes in the runtime, not in the demo.   Show the
 
21177
        widget (thats why I was not getting the expose events on the
 
21178
        widget, duh). 
 
21179
 
 
21180
2007-05-26  Miguel de Icaza  <miguel@novell.com>
 
21181
 
 
21182
        * runtime.cpp (Brush, SolidBrush): Introduce brushes. 
 
21183
 
 
21184
        (Shape): introduce reusable drawing framework for shapes, not
 
21185
        complete. 
 
21186
        
 
21187
        (Line): introduce second user besides rectangles. 
 
21188
 
 
21189
        Remove agg test code.
 
21190
 
 
21191
        (Group::getbounds): implement.