'Bug'에 해당되는 글 2건

  1. 2008/12/29 Silverlight Bugs and Workarounds
  2. 2008/08/20 ButtonBase의 Space바 클릭.
2008/12/29 11:21

Silverlight Bugs and Workarounds

http://blogs.msdn.com/silverlight_sdk/pages/silverlight-bugs-and-workarounds.aspx

잊지 말자 버그들..!!

얼마전에 아무 생각없이 고생한 부분이 있어 이렇게 링크를 걸어놉니다. 

정리하자면.

1. MultiScaleImage.AspectRatio 가 Custom MultiScaleTileSource를 썼을 경우 정확하지 않다는 것.
2. Mac에서 Safari3나 FireFox3로 MBR(Multi Bit Rate) Video Play시 Freezing.
3. Custom Control에 ScrollViewer.VerticalScrollBarVisibility/HorizontalScrollBarVisibility 속성 추가가 안됨.
4. 동적으로 Image 추가,삭제시 메모리 누수현상(제거시 Image.Source = null 로 셋팅)
5. 많은 컨트롤을 동시에 에니메이션할 경우 StackOverFlowException 발생. (Dispatcher.BeginInvoke를 통한 VisualStateManger.GotoState 호출)
6. 낮은 Bandwidth에서 Media를 빠르게 Seeking시의 깨짐 현상.
7. ImageSource나 ImageBrush 에 event 설정시 메모리 누수.(event listener 들 제거)
8. 파이어복스에서는 3GB 이상의 화일은 앞으로 Seek 가 되지 않음.
9. MAC에서는 3.5GB이상의 큰 화일은 Play가 되지 않음.(브라우저 지원문제)
10. BrowserHttpWebRequest 의 AllowReadStreamBuffering 속성이 false로 되어 MediaElement의 Source로 Stream 되는 경우 플레이 되지 않음.(AllowReadStreamBuffering를 true로 설정)
11. FireFox에서 '%'를 쓴 width,height 는 먹지 않음.
12. Brush를 상속받을 순 있으나 사용할 순 없음.(Brush는 상속받아서 쓰지 않는다.)

6번의 경우 얼마전에 저희 프로젝트에서도 문제가 되었는데... 원문에서는 ProgressDown에서 발생한다고 되어있는데실제로 Streaming의 경우에도 발생하였습니다. WorkAround 도 MediaFailed 이벤트시 Source를 다시 설정하고 예전 Position으로 다시 설정하면 된다고 되어있는데 Stream의 경우에는 MediaFailed 이벤트도 들어오지 않고 그냥 Closed 이벤트가 들어오더군요.

  그래서 제가 생각한 WorkAround는 Seek를 빨리 하지 못하도록 하는 것입니다. 한 0.3-0.5 초 정도의 지연만 주면 사용하기도 불편하지 않고 위와 같은 문제도 발생하지 않더군요.

  그럼 모두 삽질 금지..^^

                                                                                                                  - smile -
Trackback 0 Comment 0
2008/08/20 10:17

ButtonBase의 Space바 클릭.


오늘도 또 실버라이트의 치부를 공개하게 되는군요.

어제 저는 원하지도 않는 기능을 실버라이트가 지원하고 있다는 사실을 알게 되었습니다.

바로 SpaceBar Click 입니다. 이것은 ButtonBase를 상속한 모든 객체가 적용됩니다.

실제로 Button에 Focus가 가있는 상태에서만 작동을 해서 문제가 되지 않을 수 있지만 다음에

경우 크게 문제가 됩니다.

Button 클릭으로 어떤 새로운 객체를 띄워야 하는 경우.. 이 경우 만약 버튼이 새로운 객체에 의해

가려진다면 실제 의도상으로는 새로운 객체는 한개만 띄워져야 하지만 SpaceBar를 사용하면 여러번

띄워지는 경우가 생기죠.

  이 경우는 개발자가 부주의 한 탓에 생긴 버그라고 할 수 있죠.. 이런 경우 클릭 이후 Focus를 새로 띄운

객체에게 다시 맞춰줘야겠죠.

  다음의 경우는 버그가 좀더 심각합니다. 간단한 프로젝트를 첨부하니 한번 확인해 보시길 바랍니다.




  테스트 방법은 간단합니다.

Button을 하나 만들고 Click 시 이 버튼의 Visibility 를 Collapsed 시켜줍니다.

그리고 Spacebar를 눌러서 Click 이벤트를 발생시킵니다.


Sys.InvalidOperationException: ManagedRuntimeError error #4004 in control 'Xaml1': System.Exception: COM l1 ”Œ 8œÐ HRESULT E_FAIL $X
http://localhost:61604/ButtonSpaceClickTestWeb/ScriptResource.axd?d=tAAvm8BmByFdAKHmeYf8BNblydHO0228NHDLdU66QIf01HCX-g_tKwK9JPhqOuaxX88rI8w2AeWOzicBqEYveg2&t=2077b8c9
Line 441


  다음과 같은 에러가 발생하는군요...

 이 경우는 명백히 버그로 보이지만 피할 방법은 있습니다.

 이렇게 Button에 Focus가 가있는 상태에서 Visibility를 Collapsed 시켜줄 때는 반드시

Focus를 잃게 만드는 것입니다. 그런데.. Focus를 잃게 만드는 메소드가 없으니 Focus가

가도 상관없는 다른 객체에 Focus가 가도록 설정해두면 됩니다.


  예전에는 Page에서 밖에 KeyEvent를 못받아서 불편하긴 했어도 이런 문제는 없었는데 이제

모든 Control들이 KeyEvent를 받으니 이런 문제가 생기는군요.

   암튼 간단히 결론만 말씀드리자면 다음과 같습니다.
  
Button류들은 사용하지 않을 때 꼭 Focus를 해제 해주어야 한다.

  오늘은 결론이 간단하네요.^^ 그럼 Focus관리 잘하셔서

모두들 삽질 덜하시길..^^

                                                                                                       - smile -
 
Trackback 0 Comment 0