• 検索結果がありません。

第 2 章 GUI ツールの概要 3

3.8 開発時に発生した問題点と解決法

} e l s e if ( l a s t T i m e >= 50 && d e a d l i n e M i s s T i m e >=

l a s t T i m e - 25) {

c r e a t e C h a r t ( l a s t T i m e - 50 , l a s t T i m e , s t a g e ) ; c u r r e n t M i n T i m e = l a s t T i m e - 50;

c u r r e n t M a x T i m e = l a s t T i m e ; } e l s e {

c r e a t e C h a r t ( d e a d l i n e M i s s T i m e - 25 , d e a d l i n e M i s s T i m e + 25 , s t a g e ) ;

c u r r e n t M i n T i m e = d e a d l i n e M i s s T i m e - 25;

c u r r e n t M a x T i m e = d e a d l i n e M i s s T i m e + 25;

}

A l e r t n o N e x t D e a d l i n e M i s s = new A l e r t ( A l e r t T y p e . I N F O R M A T I O N ) ;

n o N e x t D e a d l i n e M i s s . s e t T i t l e (" I n f o r m a t i o n ") ;

n o N e x t D e a d l i n e M i s s . s e t C o n t e n t T e x t (" T h i s is the f i r s t d e a d l i n e m i s s .") ;

n o N e x t D e a d l i n e M i s s . s h o w A n d W a i t () . i f P r e s e n t ( r e s p o n s e - > { if ( r e s p o n s e == B u t t o n T y p e . OK ) {

r e t u r n ; }

}) ; }

} }

なお、前方への検索でも後方への検索でもデッドラインミスが存在しない場合は図

3.21

のように表示される。

3.21:

デッドラインミスが存在しないことを示すメッセージ表示

1.

仮想マシン上で非常に長いティック範囲のグラフを表示し、ズームを繰り返すと表 示が崩れる

2.

非常に長いティック範囲のグラフを画像としてエクスポートすると、例外が発生し てエクスポートできない

Mac OS 10

上で

VMWare

を使用して

Windows 7

の仮想環境を構築して検証を行っていた ところ、非常に長いティック範囲のグラフを表示し、ズームを繰り返すと表示が崩れる問 題が発生した。その際には

Listing3.19

のように

GUI

ツールを実行していた。

Listing 3.19:

問題発生時の

GUI

ツールの実行方法

ja v a t a s k s c h e d u l i n g . C h a r t C r e a t e r

3.22

9997

ティック分のイベントをグラフ表示した直後の状態、図

3.23

がその後

8

回ズームを行った状態である。

3.22:

仮想マシン上で

9997

ティックを表示図

3.23:

仮想マシン上で

9997

ティックを表示 した後

8

回ズームを行ったグラフ

JavaFX

ではパフォーマンス上の観点から可能な場合はハードウェア側で画像のレンダ

リングを行う動作となっている

[11]

が、JavaFXは正式に仮想環境をサポートしておらず、

仮想環境ではハードウェアでの画像レンダリングに問題が発生してしまうため、このよう に表示が崩れる状態になっていた。このため、Listing3.20のように

JVM

引数

prism.order

を使用してソフトウェア・レンダリングを強制的に実行させるような設定を行い、問題を 解決することができた。

Listing 3.20:

問題解決後の

GUI

ツールの実行方法

ja v a - D p r i s m . o r d e r = sw t a s k s c h e d u l i n g . C h a r t C r e a t e r

また、非常に長いティック範囲のグラフを画像としてエクスポートすると、例外が発生 してエクスポートできない問題も発生していたが、同様に

Listing3.20

で画像をソフトウェ ア・レンダリングで生成させることにより解決することができた。この問題は非仮想環境 でも発生しており、9997ティックのグラフを全範囲で表示し、その後

15

回ズーム

(図 3.24

参照)してから画像エクスポートを行うと、Listing3.21の例外が発生した。ズーム回数を 減らした場合には発生しなかった。

3.24:

非仮想環境で

9997

ティック表示後

15

回ズームした画面

Listing 3.21:

非仮想環境で

9997

ティック表示後

15

回ズームしたした後画像エクスポート した際に発生した例外

ja v a . l a n g . R u n t i m e E x c e p t i o n : R e q u e s t e d t e x t u r e d i m e n s i o n s ( 1 7 7 6 4 x 4 8 0 ) r e q u i r e d i m e n s i o n s (0 x 4 8 0 ) t h a t e x c e e d m a x i m u m t e x t u r e s i z e ( 1 6 3 8 4 )

at com . sun . p r i s m . es2 . E S 2 R T T e x t u r e . c r e a t e ( E S 2 R T T e x t u r e . j a v a : 2 2 0 ) at com . sun . p r i s m . es2 . E S 2 R e s o u r c e F a c t o r y . c r e a t e R T T e x t u r e (

E S 2 R e s o u r c e F a c t o r y . j a v a : 1 5 7 )

at com . sun . p r i s m . es2 . E S 2 R e s o u r c e F a c t o r y . c r e a t e R T T e x t u r e ( E S 2 R e s o u r c e F a c t o r y . j a v a : 1 5 3 )

at com . sun . j a v a f x . tk . q u a n t u m . Q u a n t u m T o o l k i t$Q u a n t u m I m a g e . g e t R T ( Q u a n t u m T o o l k i t . j a v a : 1 2 8 4 )

at com . sun . j a v a f x . tk . q u a n t u m . Q u a n t u m T o o l k i t$5 . run ( Q u a n t u m T o o l k i t . j a v a : 1 4 2 1 )

at j a v a . u t i l . c o n c u r r e n t . E x e c u t o r s$R u n n a b l e A d a p t e r . c a l l ( E x e c u t o r s . j a v a : 5 1 1 )

at j a v a . u t i l . c o n c u r r e n t . F u t u r e T a s k . r u n A n d R e s e t ( F u t u r e T a s k . j a v a : 3 0 8 )

at com . sun . j a v a f x . tk . R e n d e r J o b . run ( R e n d e r J o b . j a v a : 5 8 ) at j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r . r u n W o r k e r (

T h r e a d P o o l E x e c u t o r . j a v a : 1 1 4 2 )

at j a v a . u t i l . c o n c u r r e n t . T h r e a d P o o l E x e c u t o r$W o r k e r . run ( T h r e a d P o o l E x e c u t o r . j a v a : 6 1 7 )

at com . sun . j a v a f x . tk . q u a n t u m . Q u a n t u m R e n d e r e r$P i p e l i n e R u n n a b l e . run ( Q u a n t u m R e n d e r e r . j a v a : 1 2 5 )

at j a v a . l a n g . T h r e a d . run ( T h r e a d . j a v a : 7 4 5 )

E x c e p t i o n in t h r e a d " J a v a F X A p p l i c a t i o n T h r e a d " j a v a . l a n g . I l l e g a l A r g u m e n t E x c e p t i o n : U n r e c o g n i z e d i m a g e l o a d e r : n u l l

at j a v a f x . s c e n e . i m a g e . W r i t a b l e I m a g e . l o a d T k I m a g e ( W r i t a b l e I m a g e . j a v a : 2 4 0 )

at j a v a f x . s c e n e . i m a g e . W r i t a b l e I m a g e . a c c e s s$0 0 0 ( W r i t a b l e I m a g e . j a v a : 4 6 )

at j a v a f x . s c e n e . i m a g e . W r i t a b l e I m a g e$1 . l o a d T k I m a g e ( W r i t a b l e I m a g e . j a v a : 5 1 )

at j a v a f x . s c e n e . S c e n e . d o S n a p s h o t ( S c e n e . j a v a : 1 2 3 6 ) at j a v a f x . s c e n e . N o d e . d o S n a p s h o t ( N o d e . j a v a : 1 8 6 4 ) at j a v a f x . s c e n e . N o d e . s n a p s h o t ( N o d e . j a v a : 1 9 4 2 )

at t a s k s c h e d u l i n g . C h a r t C r e a t e r . e x p o r t ( C h a r t C r e a t e r . j a v a : 4 0 1 ) at t a s k s c h e d u l i n g . C h a r t C r e a t e r$2 . l a m b d a$n u l l$0 ( C h a r t C r e a t e r . j a v a

: 1 0 7 )

at com . sun . j a v a f x . a p p l i c a t i o n . P l a t f o r m I m p l . l a m b d a$n u l l$1 7 3 ( P l a t f o r m I m p l . j a v a : 2 9 5 )

at j a v a . s e c u r i t y . A c c e s s C o n t r o l l e r . d o P r i v i l e g e d ( N a t i v e M e t h o d ) at com . sun . j a v a f x . a p p l i c a t i o n . P l a t f o r m I m p l . l a m b d a$r u n L a t e r$1 7 4 (

P l a t f o r m I m p l . j a v a : 2 9 4 )

at com . sun . g l a s s . ui . I n v o k e L a t e r D i s p a t c h e r$F u t u r e . run ( I n v o k e L a t e r D i s p a t c h e r . j a v a : 9 5 )

この例外は画像生成に必要なテキスチャ・サイズがハードウェアで提供しているテクス チャ・サイズを超えたために発生しているので、こちらもハードウェアによる画像レンダ リングを行わず、ソフトウェア・レンダリングを使用することで解決できた。

関連したドキュメント