forked from lurenpluto/BOLT_SDK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHNAGELIST
825 lines (523 loc) · 33.7 KB
/
CHNAGELIST
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
598版本改动列表
1. XLLuaruntime开放标准的lua io库
完善了io库对UTF8路径等的支持
2. 修复LuaRuntime注册的全局对象无法获得classname的bug
3. 修复一处UNION日志版获取对象字符串表达式可能导致的崩溃
4. 优化对象的位置表达式的逆向推导字符串结果
---------------------------------------------------------------------------------------------------------------------------
596版本改动列表
1. NormalHostWnd增加toolwindow相关的C和lua接口
XLUE_SetHostWndToolWindow
XLUE_GetHostWndToolWindow
Lua接口为
SetToolWindow
GetToolWindow
2. 修复hostwnd在作为child窗口,并位于非第一屏幕情况下可能导致的最大大小不正确的bug
3. 修复RealObject等实窗口对象在开启hookinput情况下,导致某些input消息可能重复触发事件的bug
4. 修复WindowlessFlashObject一处由于销毁重入可能导致的崩溃
5. 改进HostWnd一处可能的逻辑错误
6. 多处细节改进和修正
---------------------------------------------------------------------------------------------------------------------------
594版本改动列表
1. 改进和完善XLUEIPC模块的Lua封装
2. 修正XLFSIO某些情况下opendir返回值错误的bug
该bug可能导致XAR切换资源包失败
3. 修正 selectrespackage之后maskobject不能正确显式的问题
该bug涉及较多深层次修改,主要是资源系统
4. 修复XLUEIPC异步等待连接可能导致的崩溃
5. 完善日志版创建Flash控件失败的错误提示
6. 修复xml_element在深拷贝的,没有设置doc的bug
7. 修复hostwnd上一个有时候不能正确触发mousehover的bug
8. 修复RichEdit内嵌窗口坐标可能出错的bug
9. 修复EditObject的Win32实现下,绘制有可能导致的花屏bug
---------------------------------------------------------------------------------------------------------------------------
586版本改动列表
1. 核心修正:改进LoadXAR逻辑,避免错误加载同名目录
由于XAR存在文件夹、zip和xar三种格式,所以如果存在多个search目录,并且某目录下存在同名的目录,但该目录不是有效的XAR目录,那么有可能会错误加载该目录,导致加载xar失败;现在策略修正为判断一个目录是不是有效的xar,如果不是,那么会继续搜索
2. 修复Session的异步连接器在超时后可能导致的崩溃
3. 修复EventLockList某些情况下计数出错的bug
---------------------------------------------------------------------------------------------------------------------------
582版本改动列表
1. 核心改动:改进FrameHostWnd和ModalHostWnd对所绑定对象树的根对象的Resize策略
562版本引入的该进制,原为NormalHostWnd在大小改变的情况下,会同步所绑定的对象树的根对象位置,但是导致迅雷7.9等很多产品不兼容,出现窗口大小异常等问题,所以本版本起对该机制做了改进,以兼容绝大多数情况
新的机制为:如果FrameHostWnd和ModalHostWnd指定了有效的Border属性,那么会启用自动Resize根对象的机制;否则仍需要自己对根对象进行Resize处理
2. 修复XLUEIPC模块批量注册Methods,在反注册时候可能导致的崩溃
3. 修复XLUEIPC的一处session在应答时候可能导致的崩溃
---------------------------------------------------------------------------------------------------------------------------
578版本改动列表
1. 核心功能:XLUEIPC增加Server相关的lua封装
基于之前版本增加Session/Interface封装,加上本版本的Server相关封装,可以完善的在lua里面发起跨进程session,并对远程的lua方法同步或者异步调用,使用起来极为方便,并且安全可靠,这个接下来会有详细的文档介绍使用方法和示例DEMO
2. 核心修复:修复事件系统的LockList在重入情况下,多次移除同事件可能导致的引擎内存池错误
该错误在同步事件触发时候,多次对该事件进行移除,可能导致LockList对一个事件多次解锁,导致内置的内存池被破坏,从而可能导致崩溃出现
现已对LockList进行了修正和改进,涉及下面三个改动:
a) 区分事件节点的锁定和删除,采用不同策略
b) 增加事件节点的多次删除判定,避免多次移除(日志版会弹出错误提示窗口)
c) LockList的内存池分配器增加线程安全检测,确保只在UI线程发起调用
3. 修复HostWnd在开启Layer属性情况下,某些情况下对窗口更新可能导致的显示错误
主要体现在下面几个功能:
a) 窗口最小化情况下,调用接口获取窗口截图
b) 窗口最小化情况下,调用接口强制刷新窗口
c) 窗口存在联动窗口+最小化+超时释放缓存+window7+开启窗口Aero预览情况下,任务栏悬浮显示主窗口的预览图
4. XLUEIPC模块新增三个接口
XLIPC_GetServerCallback 获取指定Server上的回调函数和userdata
XLIPC_GetServerIsWorking 判断一个server是否在工作中
XLIPC_GetSessionCallBack 获取指定Session的回调函数和userdata
---------------------------------------------------------------------------------------------------------------------------
576版本改动列表
1. 改进XLLuaRuntime模块的Env相关的线程机制
现在Env相关函数是线程安全的,同一个Env可以在多个线程里面使用,同时在Env相关函数不再强制线程安全检测;但LuaRuntime和lua_state仍是非线程安全的,只可在创建线程(或切换到的目标线程)里面使用
2. XLLuaRuntime模块新增XLLRT_SwitchRuntimeThread方法,可以切换一个LuaRuntime所属线程
函数签名如下:
XL_LRT_API(unsigned long) XLLRT_SwitchRuntimeThread(XL_LRT_RUNTIME_HANDLE hRuntime)
调用该方法,可以切换该LuaRuntime(lua_state)到当前线程;LuaRuntime切换到新线程以后,接来下所有的执行都须在新线程里面,不可以在之前所属线程里面执行任何方法和lua代码
3. XAR增加一个新方法QueryXMLType,用以判断该xar里面是否定义了指定的类型或者模板
函数签名如下:
bool QueryXMLType(const char* type, const char* id);
其中type可以取值如下:
? control 自定义控件
? animation_def 自定义动画
? ObjectTemplate 对象模板
? ObjectTreeTemplate 对象树模板
? HostWndTemplate 宿主窗口模板
? AnimationTemplate 动画模板
id便是对应的类型或者模板的id
4. XLUE的内存池机制,在日志版增加Block越界检测和Block重复释放检测机制
该检测用以检测引擎的内存池机制,确保在出现块越界和重复释放错误的时候,日志版会弹出错误提示,方便出错定位
---------------------------------------------------------------------------------------------------------------------------
570版本改动列表
1. 核心功能:XLLuaRuntime增加自定义长度userdata支持
之前的luaruntime只支持将一个指针类型的userdata放置到lua栈,在很多时候会导致不便利,需要增加中间封装,现在LuaRuntime 支持自定义长度userdata
新增接口如下:
XLLRT_PushXLObjectEx
XLLRT_GetXLObjectEx
XLLRT_CheckXLObjectEx
用以将一个指定长度的userdata防止到lua栈,或者从lua栈指定位置取出,是对原有的XLLRT_PushXLObject、XLLRT_GetXLObject、XLLRT_CheckXLObject的增强,使用方式保持一致,需要注意的是userdata大小须保持一致!
2. 核心功能:XLUEIPC的session、interface和stream增加lua封装,可以非常方便的在lua层面实现跨进程的接口粒度的交互,支持lua类型自动转换,支持lua闭包等
XLUEIPC新增一个接口,用以注册XLUEIPC的功能到lua环境,方可在lua里面使用
XLIPC_RegisterLuaHost
这个接下来会有详细的使用说明,现在如果有需求使用的,可以联系我们
3. XLUEIPC增加几个新接口,方便深度使用:
XLIPC_GetSessionInterface 查询某个session上是否注册了指定接口
XLIPC_RegisterMethodEx 注册一个方法到指定的interface,并且在该接口被删除时候,通过指定回调函数的方式获得通知
XLIPC_ClearAllMethods 清除一个interface上已经注册的所有方法
XLIPC_StreamWriteDouble/XLIPC_StreamReadDouble 增加stream对double类型的支持
---------------------------------------------------------------------------------------------------------------------------
566版本改动列表
1. 核心改进:XLLuaRuntime模块增加官方的int64类型支持
长久以来由于lua不支持int64整型,导致了很多不便,很多产品也有各自的实现,为了方便和统一,LuaRuntime从本版本起内置了int64类型,可以像lua内置类型一样使用,支持加减乘除、取模、乘方、比较等运算,可以和其它数据类型方便的转换
内置int64支持如下方法:
tointeger 转换为 lua_integer类型
tonumber 转换为lua_number类型
tostring 转换为字符串类型
tohex 转换为16进制的字符串类型
fromstring 把字符串转换为int64类型
frominteger 把lua_integer转换为int64类型
fromnumber 把lua_number转换为int64类型
make(low, higt) 把两个32bit整型拼接为一个64位整型
lowpart 获取低32bit值
highpart 获取高32bit值
XLLuaRuntime模块新增下面几个接口:
//注册int64类型到对应的luaruntime,这个需要显式的调用,默认创建的luaruntime不会自动注册int64类型
XL_LRT_API(BOOL) XLLRT_RegisterInt64(XL_LRT_RUNTIME_HANDLE hRuntime);
// int64类型和lua栈的交互
XL_LRT_API(BOOL) XLLRT_PushInt64(lua_State *luaState, long long value);
XL_LRT_API(long long) XLLRT_CheckInt64(lua_State *luaState, int index);
// 如果目标是不是int64类型,那么就转换为lua_integer的类型,然后再转换为int64类型
XL_LRT_API(long long) XLLRT_GetInt64(lua_State *luaState, int index);
2. 核心改进:改进XLUEIPC的Session实现,支持外部自定义信道
改进后的Session,可以基于任意的可靠信道,实现接口粒度的同步/异步调用,具有更大的自由度;默认使用XLUEIPC自带的Channel,以后会增加基于管道的channel,用以实现非UI线程的可靠信道通信
3. 改进RichEditObject的选中背景色支持,不再对选中背景颜色进行alpha预处理
4. 修复hostwnd在移动后导致刷新出错的bug
5. 修复ModalHostWnd在OnCreate事件里获取窗口大小可能不一致的bug
6. 修正AlphaChangeAnimation的SetRecursive接口的lua封装,接收布尔类型参数
7. 修复XLUEOPS一处可能的内存泄露
---------------------------------------------------------------------------------------------------------------------------
562版本改动列表
1. FrameHostWnd和ModalHostWnd增加对象树大小联动机制
之前的普遍做法是在hostwnd的OnSize事件里面,对所绑定的对象树的根对象设置大小;考虑到这种需求的通用性以及对上述两种hostwnd的border属性的改进支持,所以现在FrameHostWnd和ModalHostWnd会在窗口大小改变的时候,自动对根对象进行Resize,需要注意的是,在窗口最大化并且指定了border属性后,根对象的大小将和hostwnd的大小不一致,确保border属性有效
使用562以及以后版本的产品,在FrameHostWnd和ModalHostWnd的OnSize事件里面,无需再对对象树的根对象进行Resize,尤其是使用了border属性的hostwnd
2. 修正FrameHostWnd和ModalHostWnd在最大化后,如果当前系统设置是自动隐藏任务栏,可能导致的如下bug:
a) 无法智能显示任务栏的bug,新版本当鼠标移到任务栏隐藏的屏幕边缘,任务栏会自动显示,和系统默认的窗口行为一致
b) 可能覆盖其它topmost窗口的bug,比如迅雷7最大化后覆盖悬浮窗的bug
c) 窗口边缘超出屏幕边缘的bug,现在窗口将被限制在所在屏幕内,不会在衔接屏幕上显示多余的边缘
3. Object/ObjTree/Animation/hostwnd增加IsValid方法,用以判断当前对象是否有效
如果一个Object/ObjTree/Animation/hostwnd已经被移除,但是使用者还持有该对象的句柄,那么可以通过IsValid方法来判断这个对象是否有效
4. XLUE新增XLUE_IsAnimationValid接口,用以判断一个Animation对象是否有效
---------------------------------------------------------------------------------------------------------------------------
560版本改动列表
1. XLUE模块增加XLUE_ObjProcessInput接口
该接口主要用以BXF扩展框架,可以由外部显式的向元对象推送鼠标和键盘消息,用以实现更自由的扩展元对象
2. BXF增加扩展元对象的保护锁辅助代码
该辅助代码用以在扩展元对象里面,实现更完善的同步事件
3. 完善hostwnd和object的xml解析出错提示
新的出错提示会提示出错的xml的完整路径,方便开发定位错误
4. 修复BXF的ResHolder在修改资源id时候,可能导致事件不能正确卸载的bug
5. 修复BXF的扩展元对象,挂接lua事件返回cookie出错的bug
6. 修复MenuHostWnd的SetTopLeftSpacing方法,导致对象树原点出错的bug
---------------------------------------------------------------------------------------------------------------------------
558版本改动列表
1. 核心改动:对象树新增OnCreate和OnDestroy两个事件
这两个事件分别在对象树被实例化和销毁的时候触发,事件签名如下:
long result, bool handled, bool callnext OnCreate(objtree self)
long result, bool handled, bool callnext OnDestroy(objtree self)
这两个事件和对象树的其它事件一样,可以在xml里面静态配置,也可以通过AttachListener/RemoveListener来动态挂接和移除
2. 增强TextObject的autoresize属性
增强后的autoresize属性,会根据TextObject的水平对齐属性halign和垂直对齐属性valign,来智能的改变到合适的位置和大小,而不是全部按照左上对齐
---------------------------------------------------------------------------------------------------------------------------
556版本改动列表
1. LuaRuntime新增了有关注册class的多个接口,可以用来实现基于XLLuaRuntime的C++继承体系的lua封装
XLLuaRuntime在设计之初就支持继承,所以可以把一个基于C++的继承体系,对等的注册到lua环境,但是却缺乏对应的类型检测机制,在从lua环境获取userdata时候,只能通过lua_touserdata或者luaL_checkuserdata两个lua原生方法来获取,很多情况下只能进行弱类型检测,具有一定的风险,所以本版本起luaruntime新增多个接口,用以增强LuaRuntime的类型支持
新增接口如下:
const char* XLLRT_GetXLObjectClass (lua_State* luaState, int index);
//获取指定userdata的对应class,该userdata须是通过XLLRT_PushXLObject设置到lua虚拟机的
long XLLRT_CheckXLObject(lua_State* luaState, int index, const char* className, void** lplpObj);
long XLLRT_GetXLObject(lua_State* luaState, int index, const char* className, void** lplpObj);
//从lua栈获取一个指定class的userdata,如果该userdata是指定的class或者其子类,那么会返回该userdata
BOOL XLLRT_IsDerivedClass(XL_LRT_ENV_HANDLE hEnv, const char* lpDerivedClass, const char* lpBaseClass);
//判断两个注册到LuaEnv的class,是否具有继承关系
2. 改进XLUEIPC的通道机制,通道连接不再进行心跳检测,只保留断开检测
最近收到多个产品的反馈,在有些情况下,比如机器很卡或者进程CPU占用率较高的情况下,经常会导致IPC模块断开连接,所以经过慎重考虑,决定移除心跳连接机制,只保留断开连接机制
3. 完善BXF扩展资源框架,修复不能正确支持多层xml节点定义的bug
4. 完善Flash相关对象的日志输出,用以出错诊断
---------------------------------------------------------------------------------------------------------------------------
552版本改动列表
1. 改进进程外Flash服务器策略,改为每个Flash对象使用独立的服务器进程,涉及到WindowlessFlashObject的进程外服务模型
主要是为了避免Flash模块的崩溃或者其它异常,导致的后续对象的Flash服务异常
2. RealObject、FlashObject和WebBrowseObject增加输入消息处理器机制
该机制主要用以捕获实窗口对象上的鼠标和键盘消息,可以方便的作为元对象层的鼠标和键盘消息来处理;设置hookinput=1,那么实窗口对象可以直接挂接鼠标和键盘消息,来处理来自实窗口的鼠标和键盘消息,并且返回handled=true,可以拦截该事件
新增属性hookinput,默认为关闭
新增方法,可以用来动态打开和关闭hookpinput特性:
void SetHookInput(bool enable)
bool GetHookInput()
3. FrameHostWnd如果没有指定有效owner,那么使用默认owner
现在的策略是:在创建非子窗口的FrameHostWnd的时候,如果没有指定有效的owner,那么一律采用引擎的默认owner
4. 改进进程外Flash的销毁流程,进程外Flash服务可以在销毁时候触发事件
修正后的Flash进程外服务,在Flash关闭时候,通过FlashCall或者FSCommand触发的事件,也可以通知到主进程并正确触发了
5. XLUE所有模块,日志版默认关闭日志文件和控制台输出,但错误弹框策略没有改变
这个主要是为了避免使用日志版引擎开发时候,过多的日志和控制台输出导致的cpu占用率过高和debugview信息量过大,如果需要XLUE输出到日志文件或控制台,请在C:\TSLOG_CONFIG\XLUE.INI文件里面,配置以下字段:
[Output]
DebugView=ON
FileLog=ON
6. 重构FlashObject和WebBrowseObject的lua封装和parser
重构后的FlashObject和WebBrowseObject,完全继承RealObject的属性和方法
7. 修复EditObject的WinEdit内核的LinkNotify事件一处可能导致错误触发事件的bug
8. 修复XLFSIO在创建缓存文件失败的情况下,XAR校验可能导致的崩溃
9. 修正XLUEIPC日志版,通道发送数据返回值的错误码可能出错的bug
10. 修正日志版的WindowlessFlashObject一处由于重入可能导致的崩溃
---------------------------------------------------------------------------------------------------------------------------
548版本改动列表
1. 重构HostWnd的xml解析流程
新的解析流程支持动态扩展hostwnd,并且具有更高的效率
2. 修正ModalHostWnd,绑定的RichEditObject和EditObject无法正确显示回车的bug
3. 修复某些情况下XLUEIPC句柄机制可能导致的崩溃
---------------------------------------------------------------------------------------------------------------------------
544版本改动列表
1. XLUEIPC模板增加句柄机制,避免各种错误使用可能导致的崩溃
XLUEIPC模块的核心对象channel、session、sever和interface,在引用计数基础上引入真句柄机制,避免错误使用已释放对象可能导致的崩溃等问题。该次改动属于较大的改动,但是接口没有改变,对使用者对没有影响
2. 修复TurnObjectAnimation创建位图失败情况下,可能导致的崩溃
3. 修复图形库创建bitmap,指定scanlinelength时候导致创建错误的bug
---------------------------------------------------------------------------------------------------------------------------
542版本改动列表
1. 核心改动:新增HostWndFactory全局对象,支持在lua里面动态创建hostwnd
该全局对象的名字是Xunlei.UIEngine.HostWndFactory,目前有下面方法:
hostwnd CreateHostWnd(hostwndid, hostwndclass, ownpackage)
使用方法如下:
local factory = XLGetObject("Xunlei.UIEngine.HostWndFactory")
factory:CreateHostWnd("temp", "FrameHostWnd")
2. 核心改动:重构和改进hostwnd和hostwndfactory机制
新的机制支持扩展hostwnd类型,创建hostwnd有更快的速度,并且和lua交互也更高效,对于跨平台支持也更完善和优雅
3. 核心改动:完善XLUE的初始化和反初始化逻辑,增加XLUE_RegisterHostWnd和XLUE_RegisterResource两个接口
新的初始化逻辑更加完善,并修复两处反初始化时候可能导致的内存泄露问题
4. 修复RichEditObject在插入内嵌对象后,销毁RichEditObject元对象时候可能导致出错的bug
5. 完善xarmanager的退出时反初始化逻辑,增加清除事件逻辑
---------------------------------------------------------------------------------------------------------------------------
540版本改动列表
1. WindowlessFlashObject增加alivetimeout属性,用以设置远程模式下心跳检测时间间隔
默认的检测时间间隔是1000ms,可以通过alivetimeout属性来修改该时间间隔
2. WindowlessFlashObject增加SetAliveTimeout和GetAliveTime接口
这两个接口分别用以设置和获取alivetimeout属性,接口签名如下:
void SetAliveTimeout(unsigned int timeout)
unsigned int GetAliveTimeout()
3. 修复WindowlessFlashObject的SetFlashModule接口无法生效的bug
该接口可以显示指定该对象使用的flash控件模块
4. XLUEIPC的channel的心跳检测和断开检测分离
方便心跳检测可独立使用单独的时间间隔
5. XLUEIPC增加XLIPC_GetChannelID接口,用以获取指定channel的id
接口签名如下:
XLUEIPC_API(const wchar_t*) XLIPC_GetChannelID(XLIPC_CHANNEL hChannel)
6. 完善XLUEIPC错误码,细化某些出错情况下的返回值
7. 进一步完善XLUEIPC和WindowlessFlashObject的日志
---------------------------------------------------------------------------------------------------------------------------
538版本改动列表
1. 改进图形库bitmap的clip机制
在新的机制下,clip得来的bitmap会保持对原bitmap的引用,依次类推
2. 改进图形库bitmap的预乘机制
新的机制完善了对clip出来的bitmap的预乘处理,避免某些情况下clip得出的子bitmap无法正确预乘处理的bug
3. 图形库增加XL_CreateBindBitmapEx接口
该接口可以从一个已经过预乘处理的位图buffer,创建一个bitmap
4. RichEditObject的段落格式支持水平对齐样式
该改动属于XLTS富文本排版的较大改动,支持水平对齐样式
5. RichEditObject增加支持单行模式,multiline属性正式生效
6. 修复richeditobject的SetWantReturn无法正常工作的bug
---------------------------------------------------------------------------------------------------------------------------
536版本改动列表
1. 引擎核心增加完善的事件定义管理系统
新的事件定义管理系统支持继承体系上的更为统一和优雅的事件定义管理,支持对等方式挂接lua回调和C回调方法,支持更快速方式挂接和移除事件Listener,并且有更强的错误检测能力
2. 核心改动:重构元对象/Hostwnd/ObjectTree的事件定义管理,支持对等挂接lua和C回调事件监听函数
该重构涉及到的改动很多,重构后事件的定义更为方便和细化,检测也更为严格,同时事件挂接和移除速度也有所提高;支持对等挂接C回调事件,为稍后的增加C接口的AttachListener和RemoveListener提供了基础
3. HostWnd增加EventExists方法
该方法用以判断hostwnd上是否存在指定事件
4. 修复ModalHostWnd无法处理输入法键入字符的bug
该bug会导致模态hostwnd无法输入中文等非英文字符
5. 修复xgp无法加载.jpeg后缀格式图片的bug
---------------------------------------------------------------------------------------------------------------------------
534版本改动列表
1. 修复ModalHostWnd可能重复处理键盘输入消息的bug
2. 修复XLFSIO一处多线程使用情况下可能导致的崩溃
3. BXF的增加表达式辅助代码
外部可以方便的使用引擎内置的表达式功能来辅助开发
---------------------------------------------------------------------------------------------------------------------------
530版本改动列表
1. 完善BXF的扩展资源子框架
扩展资源子框架进一步改进和完善,并在此基础上增加了icon扩展资源类型(在官方扩展XLUEExtObject.dll里面)
2. 改进WebBrowseObject对键盘输入的支持
新的策略使得IE控件对键盘输入的支持更加完善,避免某些情况下ie内嵌ACX控件无法获取键盘输入的bug
3. 修正WindowlessBoltBrowserObject进程外服务模式下的光标策略,在发生同步重入删除时候可能导致的崩溃
4. 对象树在获取光标时候对对象锁定保护,避免同步重入删除可能导致的崩溃
5. 修正扩展元对象的ResProvider设置时机为在创建extobject之前设置
方便扩展元对象在外部对象的构造函数里面使用resprovider
6. 增加操作扩展资源真正资源句柄的相关接口
XLUE_GetResRealHandle
XLUE_AddRefResRealHandle
XLUE_ReleaseResRealHandle
7. BXF的扩展类型配置支持扩展资源类型
---------------------------------------------------------------------------------------------------------------------------
526版本改动列表
1. 核心逻辑完善:元对象的OnInitControl增加重入判定,避免同步添加对象可能导致的重复触发事件
由于OnInitControl事件触发是深度优先,同层对象是自上向下的顺序触发的,所在在某个对象的OninitControl里面对下面尚未触发OnInitControl的对象,动态添加子对象,可能会导致该子对象多次触发OnInitControl,所以版本起对此作了限定,但是还是提醒不要逆时序进行添加、移除对象的操作,虽然修正后不会重复触发事件,但是会破坏原有的时序,出现不可预期的结果!
2. EditObject增加GetAllowBeep和SetAllowBeep的lua接口
这两个接口可以用来动态修改EditObject的allowbeep属性,接口签名如下:
bool GetAllowBeep()
void SetAllowBeep(bool enable)
3. 修复hostwnd创建窗口后初始焦点状态可能出错的bug
该bug可能导致hostwnd在某些情况下无法正常处理鼠标和键盘输入,本版本已经修正
4. 修复ModalHostWnd某些情况下创建窗口后无法获取焦点的bug
该bug可能ModalHostWnd弹出后某些情况下由于没有焦点,而导致不能正常处理键盘输入,本版本已经修正
5. 修复模板对象挂接OnPreCreateInstance事件后,无法动态移除的bug
6. 修复XARManager挂接OnPreLoadXAR事件后,无法动态移除的bug
---------------------------------------------------------------------------------------------------------------------------
522版本改动列表
1. 增加BXF的外部扩展资源子框架
该框架涉及多个导出方法和回调接口,同时也对引擎的资源管理部分做了较大的改动,引入了XLUE_RESOURCE_HANDLE资源对象机制
2. 改进扩展类型的预注册机制,支持预注册多种扩展类型包括扩展元对象/扩展资源/扩展hostwnd等
3. BXF辅助代码增加扩展资源子框架的辅助代码
该辅助代码在SDK下的BXF目录,对应的文件为ExtResourceImpl.h,可以基于此代码快速开发外部扩展资源类型
4. 完善BXF的辅助代码
对BXF的诸多辅助类代码进行了规范和修正
5. 修复hostwnd无法正确移除OnSize事件的bug
6. 修正XLUEIPC模块的日志输出
---------------------------------------------------------------------------------------------------------------------------
520版本改动列表
1. 改进ModalHostWnd的截取键盘消息策略
新的策略使得ModalHostWnd在处理焦点等策略上更加完备,并且更好和其它hostwnd保持一致
2. 改进hostwnd对诸如微软拼音等输入法的支持
包括输入窗口的跟随和窗口字体的设置等,其中输入法窗口字体和当前图形库默认字体保持一致
3. 修复一处切换到拼音输入法可能导致的内存泄露
4. 引擎内核和SDK头文件增加输入法相关支持
可用于为BXF框架提供更友好的输入法支持
5. 增加CEF等第三方模块
6. 规范SDK内置DEMO的xml书写
---------------------------------------------------------------------------------------------------------------------------
518版本改动列表
1. 重构引擎资源管理部分,增加动态parser和creator机制,为BXF的扩展资源子框架准备
该改动属于相对较大的改动,但是对现有功能没有影响,也在常见产品如迅雷7和xmp上经过测试,但是由于涉及到的代码量庞大,难免有所疏漏,所以在使用中发现问题请及时反馈
2. 修复EditObject和RichEditObject不能在lua里正确动态挂接事件的bug
3. xmlcontrol的xml属性解析增强错误检测
4. 改进XLUEDefine.h关于内置资源类型定义
资源类型定义由枚举类型修正为字符串类型,便于外部扩展
5. 改进XLUE_ResProviderAttachResEvent和XLUE_ResProviderDetachResEvent接口,支持扩展资源类型
---------------------------------------------------------------------------------------------------------------------------
516版本改动列表
1. 加强luaruntime在日志版下的强制检测功能
在开启luaruntime强制错误检查情况下,本版本起会有更强的错误检查能力,建议各产品及时更新到最新版luaruntime,并在日志版开启错误检查
2. 重构元对象的事件管理系统的lua封装,提高检错能力
新版本的元对象事件具有更精确的错误检出能力,可以用来检测错误的事件挂接/移除等常见错误;并修复在极端情况下可能导致的事件挂接混乱错误
3. 重构自定义control的lua封装和parser,并将FireExtEvent移入自定义control的lua封装
从该版本起,对非自定义控件调用FireExtEvent,会触发脚本错误
4. 修复XLUE_FireExtObjEvent接口返回值排序错误
5. 修复BXF框架下对扩展元对象的渲染剪裁错误
6. 修复WindowlessFlashObject在创建远程服务失败触发事件中,自我移除可能导致的崩溃
7. 完善flash相关元对象的SetAllowScriptAccess和GetAllowScriptAccess接口,在未创建flash ocx对象时候缓存
8. 改进luaruntime的XLLRT_RegisterClass接口和XLLRTClass/XLLRTObject结构体定义
---------------------------------------------------------------------------------------------------------------------------
512版本改动列表
1. 完善BXF的扩展元对象的事件辅助类代码
2. BXF的扩展元对象的luahost扩展接口增加RegisterAuxClass方法
该接口方便外部扩展元对象注册一些辅助lua类或者全局对象
3. 修正xml自定义控件的属性解析策略,对空字符串也进行解析
现在的策略和1.6版本以前的策略保持一致,如果对xmlcontrol的某个属性指定了空值,那么会覆盖默认值
4. 统计字段增加对hostwnd的统计项
现在用XLUEMonitor工具可以正确看到当前hostwnd类型对象的数量
5. 修复图形库外部设置默认字体使用中文名称的时候,可能导致字体渲染效果异常的bug
6. 修正luahost扩展接口的GetLuaFunctions接口签名
---------------------------------------------------------------------------------------------------------------------------
510版本改动列表
1. 修正图形库某些情况下默认字体渲染效果不一致的bug
2. LayoutObject的PushDirtyRect支持刷新整个元对象区域
当PushDirtyRect不指定任何参数的时候,默认脏矩形区域是整个元对象,也即该元对象在下个绘制周期内会被刷新
3. Flash相关对象和服务增加完善日志,用以日志版的错误诊断
主要用以诊断远程flash服务可能出现的创建失败的bug
4. WindowlessFlashObject在远程flash服务创建完毕,初始化本地服务时候进行加锁保护,避免重入删除导致的崩溃
该崩溃在日志版出现错误弹框情况下可能出现
5. 修复UNION版本某些组件错误依赖XGP库的bug
---------------------------------------------------------------------------------------------------------------------------
506版本改动列表
1. 正式对外开放XLUEIPC模块
新增XLUEIPC.lib和XLUEIPC.h等文件
2. tools增加XAR打包工具XLUEPack
3. BXF开源框架代码增加元对象事件辅助类
代码在XLUE的bin svn的BXF目录下,外网SDK里面位于include\BXF目录下
4. 核心改动:元对象键盘输入事件区分是否是按键
同时元对象的OnKeyDown、OnKeyUp、OnChar事件,在当前参数列表下增加isSysKey额外参数,用来表示当前按键是否是系统按键
5. 核心改动:增加内置消息循环机制和相关接口
该机制可以用以整合外部消息循环和引擎内置的消息循环,引擎内置消息循环可以由某些扩展服务(比如web服务)来注册,并完成相应的工作
新增的接口如下:
XLUE_API(long) XLUE_DoMessageLoopWork(void* reserved);
XLUE_API(long) XLUE_RegisterMessageLoopListener(LPFNDOMESSAGEWORKPROC lpfnWorkProc, void* userData);
XLUE_API(BOOL) XLUE_UnregisterMessageLoopListener(long cookie, void** lpUserData);
其中XLUE_RegisterMessageLoopListener和XLUE_UnregisterMessageLoopListener用来注册基于引擎内置消息循环的自定义handler,可以在handler里面完成基于消息循环的工作
XLUE_DoMessageLoopWork由宿主程序在主消息循环里面驱动,引擎用来模拟内置的消息循环
6. 完善XLUEOPS进程外服务器对web服务的支持
7. 完善hostwnd的鼠标捕获处理
在hostwnd弹出模态窗口,被disable等情况下,如果当前正在捕获鼠标状态,那么放弃对鼠标的捕获
8. 修正hostwnd在disable状态下对cursor的支持
修正后的结果为:当一个hostwnd在被disable状态下,不会由于元对象或者hostwnd自身的cursorid配置而改变鼠标形状
9. 修正XLUE_FireExtObjEvent接口签名
10. 修正全局垃圾回收机制,在remove处理器的时候,总是返回flase的bug
---------------------------------------------------------------------------------------------------------------------------
504版本改动列表
1. 改进XLUEOPS进程外服务器,增加支持进程外浏览器服务(即将到来的Webkit内核浏览器)
改进后的XLUEOPS功能更加强大,支持加载flash服务和浏览器服务,并支持加载第三方进程外服务,是BXF扩展框架的重要组件部分
2. BOLT外网SDK增加XLUEIPC.lib和XLUEIPC.h,正式对外开放XLUEIPC模块
3. XLUEIPC跨进程通信支持从低权限进程到高权限进程
4. WindowlessFlashObject在初始化时候增加锁定保护
避免在初始化进程外flash服务时候,销毁对象本身可能导致的崩溃
5. BXF的LayoutObjectWrapper增加ImageObject和RealObject相关方法
6. 修正XLUE.dll的XLUE_SetImageObjID和XLUE_GetImageObjID两个导出接口
7. XGP库的lua封装不再初始化和反初始化XGP
移除此冗余操作,避免反初始化时候由于时序错误可能导致的崩溃
8. XLUE的反初始化逻辑强制清除timermanager所有timer
也即调用XLUE_UninitLoader进行反初始化后,TimerManager的所有既有timer都会终止
9. 完善HostWndManager的clear接口,避免重入移除hostwnd导致出错
10. 栈锁机制的删除增加重入保护,主要避免hostwnd的重复删除
---------------------------------------------------------------------------------------------------------------------------
502版本改动列表
1. RichEditObject增加hidesel属性和相关接口
该属性是EditObject的对等属性,使用方法和EditObject一致,默认值也相同,默认值hidesel=1
2. XLUEIPC的channel和session分别增加设置/获取心跳超时时间的接口
新增接口如下:
XLIPC_SetChannelAliveTimeout
XLIPC_GetChannelAliveTimeout
XLIPC_SetSessionAliveTimeout
XLIPC_GetSessionAliveTimeout
需要注意的是默认超时时间都是500ms,使用者可以设置合适的值来满足不同的需求,设置一个超大值可以避免由于心跳通信失败导致的连接被动断开
3. XLUE.dll新增hostwnd坐标转换相关C接口,主要用以完善BXF框架
新增接口如下:
XLUE_HostWndPtToScreenPt
XLUE_ScreenPtToHostWndPt
XLUE_HostWndRectToScreenRect
XLUE_ScreenRectToHostWndRect
XLUE_TreePtToHostWndPt
XLUE_HostWndPtToTreePt
XLUE_TreeRectToHostWndRect
XLUE_HostWndRectToTreeRect
4. 修复win7下带联动窗口的hostwnd,点击任务栏缩略图无法前置或者还原的bug
该bug由联动窗口hostwnd的整体缩略图功能导致,新版本已经修正
5. 改进顶层hostwnd的焦点策略
新的策略修正了在某些情况下,窗口被deactive后延迟收到FocusChange事件的bug,并具有更好的一致性
6. 修正hostwnd作为子窗口时候的焦点策略
当hostwnd做为子窗口时候,focus取决于该窗口是否真正有焦点,而非是否是当前活动窗口
7. 修正窗口的缓存大小策略
避免在初始化和切换顶层<->子窗口时候可能引发的bug
8. FlashService异常保护增加模块限定,只捕获发生在Flashxxx.ocx模块里的崩溃
---------------------------------------------------------------------------------------------------------------------------
500版本改动列表
1. EditObject增加hidesel属性和相关接口
该属性用以控制EditObject在选中一段内容,并失去焦点后,是否隐藏选中状态,hidesel=1会隐藏,hidesel=0不会隐藏
属性可以在xml里面直接配置:
<hidesel>0</hidesel>
可以以调用EditObject的lua方法来动态设置和查询:
void SetHideSel(bool hide)
bool GetHideSel()
2. EditObject的hidesel属性默认值修正为1,也即失去焦点后隐藏选中状态
这个属性之前一直是内部属性,并没有暴露给外面,后来由于有产品反馈,改成hidesel=0后,导致其它产品无法控制,所以现在重新调整为先前的默认值
3. 完善引擎内部Lua事件的管理策略,提高xml解析和运行时效率
4. 对象树渲染器在渲染过程时候,对所渲染的对象树进行保护,避免重入删除导致的崩溃
日志版在绘制过程中,有可能导致出现错误弹框,容易出现上述崩溃,而pr版不会出现类似崩溃
同时此次的修正也防止了在BXF扩展元对象子框架下,外部对象OnPaint里面重入可能导致的崩溃
5. 进程外Flash服务增加部分异常安全保护
6. 修正XLUEOPS进程的退出策略
修正为强制结束进程,避免flash模块在卸载时候可能导致的崩溃
7. XLUEIPC的通信模块在日志版增加完备日志
用以诊断在使用XLUEIPC模块中,可能出现的各种失败情况
---------------------------------------------------------------------------------------------------------------------------
498版本改动列表
1. LayerObject新增bindmode属性和相应的lua接口
关于LayerObject的详细使用方法,请参考在线文档里关于LayerObject的相关说明
2. 完善元对象的Ctrl命中测试的默认实现
不再直接依赖是否有挂接鼠标和键盘事件,而是依赖元对象的CanHandleInput核心方法,把visible和enable属性纳入考虑范围,同时增加对扩展元对象的Ctrl命中测试支持
3. HostWnd的AddInputFilter挂接的消息过滤事件,支持在xml里面静态配置,进一步方便使用
使用方法和hostwnd的其它事件完全一致:
<event name=” OnMsgFilter” function=”xxxxx”/>
4. XLUEDefine.h头文件增加鼠标和键盘消息相关定义
可以在BXF框架代码下使用鼠标和键盘消息了
5. 完善BXF框架代码,去除在VS最高级别警告下的warning
6. 修复层对象在非clipsens情况下无法擦除背景的bug
7. 修复扩展元对象的CanHandleInput无法被正确调用的bug
8. 修正扩展元对象的hittest默认实现
9. 完善扩展元对象只在必要时候挂接bindhostwnd和createhostwnd事件
10. 进一步完善hostwnd的焦点策略
11. 日志版增加xmltype自定义方法重复判断
如果xmlcontrol或者xmlanimation里面定义了重复的method,那么在日志版会弹出错误提示
12. 修复HostWnd的AttachListener导致的lua虚拟机的table机制出错的bug
13. luaL_unref在日志版增加强制检错机制
---------------------------------------------------------------------------------------------------------------------------
492版本改动列表
1. 注册扩展元对象增加attribute字段
该字段主要提供元对象的一些核心属性,并为了以后的内核扩展准备
2. 修正XLUE.h的头文件对XLUEDefine.h的依赖
该bug在某些环境下会导致编译出错,本版本已经修复
3. 层对象渲染流程采用拓扑序列而非zorder序列
层对象的渲染流程按照嵌套关系,有父子关系的层对象不再依赖zorder
4. 修复元对象脏矩形某些情况下出错的bug
该bug主要会导致EditObject和RichEditObject在某些情况下无法正常刷新
5. 完善剪裁敏感层对象的绘制流程,子对象不再受limitrect限制,层对象将创建和对象大小一致的缓存位图
---------------------------------------------------------------------------------------------------------------------------
490版本改动列表
1. 引入BXF的扩展模块统一管理机制
该机制可以以统一的形式管理各个扩展模块,并提供了高效的预注册机制,可以很方便的对引擎进行二级制模块级别的扩展和增强
2. 引入BXF的元对象扩展子框架
该机制允许外部扩展元对象,提供功能更丰富、强劲的扩展元对象,并且使用方法和现有内置元对象完全一致
3. 正式提供BXF框架代码
该框架代码采用C++ wrapper形式,旨在C++层面更方便的操作引擎的接口,并在BXF框架的基础上更方便、优雅的开发自己的扩展类,类似WTL对win32API的封装
该框架代码在XLUE svn的各版本根目录BXF,以一系列头文件的形式提供
4. 正式开放LayerObject核心元对象,提供层渲染机制为所有用户使用
层渲染是引擎的一个重大改造,在层渲染的基础上可以实现很多之前不能实现的功能,这个接下来会有详细的邮件说明
5. LayerObject增加缓存机制
该机制可以为整个渲染链提供分层的cache,减少绘制时候引起的不必要的开销
6. LayerObject提供剪裁敏感特性
这个是层对象的一个核心特征,也是不同于传统渲染流程的一大特色,为不支持剪裁绘制的元对象提供了一个发挥作用的平台,尤其是对于即将大量扩展的后置渲染对象,很多时候都要依赖层对象的剪裁敏感特性
7. XLUE.dll新增多个导出接口,包括
a) 元对象、对象树和hostwnd的各类接口
b) ResProvider的相关接口,并增加XLUE_RESPROVIDER_HANDLE核心句柄类型
c) TimerManager的相关接口
8. XLUE.h头文件调整
主要增加了XLUEDefine.h头文件,里面有XLUE.h依赖的各个类型的定义,XLUEDefine.h和XLUE.h在svn的相同目录,如果之前有项目是按照文件名拉取而非目录拉取的,那么需要增多该头文件的拉取
9. 优化元对象的xml parser体系,减少重复解析,并支持外部扩展
修正后的xml解析体系更加完善和优雅,并提供了更为严格的xml属性排错机制,更新后各产品可能会发现多了很多未知xml属性的弹框,请根据弹框提示进行相关的修正
10. HostWnd新增OnEnterResizeMove和OnExitResizeMove事件
这两个事件在hostwnd被拖着移动和改变大小时候会触发,分别在开始和结束时候触发,事件原型如下:
long result, bool handled, bool callnext OnEnterResizeMove(hostwnd self, int type)
long result, bool handled, bool callnext OnExitResizeMove(hostwnd self, int type)
其中type=0表示是resize事件,1表示是move事件
11. 多处细节改动和优化