10092


OSX10.10です。  
SBCL1.2.10  
lispbuilder-sdl

quicklispでlispbuilder導入後、sbcl、slime上で

[code]

    (sb-int:with-float-traps-masked
    (:invalid) (sdl-examples:particles))
    
[/code]

を実行するとタイトルバーが真っ白で正しく表示されません。  
画面描画は正しくされているのですがマウスやキーボードでの操作は受け付けませんでした。

ターミナル上でサンプルを実行すると問題なく動作します。

しかしターミナルでも似た動作を発生する時があり

[code]

    (sb-int:with-float-traps-masked
    (:invalid) (sdl-examples:particles))
    
[/code]

では正しく動くのですが

[code]

    (sdl-examples:particles)
    
[/code]

と実行するとFLOATING-POINT-INEXACTが発生、ABORTして  
そのまま

[code]

    (sb-int:with-float-traps-masked
    (:invalid) (sdl-examples:particles))
    
[/code]

を実行するとタイトルバーは銀色なのですがボタンとタイトルが表示されません。  
何か解決方法があればご教授頂ければとお願いいたします。


CC BY-SA 3.0
2015-04-28T02:29:08.317
9630
2015-05-12T19:05:08.950
9517
question
macos common-lisp lisp
sbcl,slime上でlispbuilder-examplesのタイトルバーが正しく表示されない


まず、`FLOATING-POINT-INEXACT`が発生した場合ですが、一度発生してしまうと画面描画に影響を与えてしまうのかもしれません。  
ですので、続けて他の物を実行しても似た症状が出る可能性があります。原因が特定できるまでは、一度エラーになったら、処理系を落す方が問題を追い掛けやすいかなと思います。

また、`SB-INT:WITH-FLOAT-TRAPS-MASKED`で囲うのは、`FLOATING-POINT-INEXACT`
を処理する為ですので、`SB-INT:WITH-FLOAT-TRAPS-MASKED`で囲むのが無難だと思います。

次にターミナルで実行はできてもSLIMEでの実行が上手く行かない件ですが、何らかの原因で評価が上手く行かないのかもしれません。

[code]

    (defun p ()
      (sb-int:with-float-traps-masked (:invalid)
        (sdl-examples:particles)))
    
[/code]

という関数SLIME上で定義して、

[code]

    (p)
    
[/code]

を実行してみた場合は、改善するでしょうか。

# ※追記

[code]

    (defun foo ()
      (let ((width 500) (height 500))
        (sdl:with-init ()
          (sdl:window width height :position nil :title-caption "test")
          (sdl:with-events ()
        (:quit-event () t)
            (:key-down-event ()
                 (when (sdl:key-down-p :sdl-key-escape)
                   (sdl:push-quit-event)))))))
    
    (foo)
    
[/code]

とするのがウィンドウを出す最小限のコードみたいです。  
これを実行すると500x500のウィンドウが表示される筈ですが(escで終了)、これもSLIMEではどうでしょうか。

# 追記 SLIME環境依存問題の切り分け

sbclを起動します

[code]

    (ql:quickload :lispbuilder-sdl)
    (ql:quickload :lispbuilder-sdl-examples)
    
    (sb-int:with-float-traps-masked (:invalid)
      (sdl-examples:particles))
    
[/code]

を入力して起動することを確認します。  
escで終了します。

次に

[code]

    (ql:quickload :swank)
    
    (swank:create-server :port 7777 :dont-close t)
    
[/code]

と入力しswankを起動します。

次に、Emacsを起動し  
`M-x slime-connect`を実行し Host:`127.0.0.1`、Port:`7777`  
で接続します。

SLIME の replに

[code]

    (sb-int:with-float-traps-masked (:invalid)
     (sdl-examples:particles))
    
[/code]

を入力し確認します。  
これで問題ないならば、SLIMEの立ち上げ方法に何か問題があるかもしれません。


CC BY-SA 3.0
2015-04-28T03:44:57.747
9635
2015-04-28T06:50:08.160
2015-04-28T06:50:08.160
3510
3510
9630
answer


<https://code.google.com/p/lispbuilder/wiki/DownloadInstallation>
の下の方にコメントがあり、どうも `~/.swank.lisp` に

[code]

    (setf swank:*communication-style* :fd-handler)
    
[/code]

と書いておくとよいようです。

こちらの環境は以下の通りです:

  * SBCL: sbcl @1.2.10_0+fancy (macportsでインストール)
  * Emacs: emacs-mac-app @5.4_0 (macportsでインストール)
  * SLIME: 2.13 (quicklispでインストール)
  * OS: MacOS X 10.9.5

;; <https://stackoverflow.com/questions/18345464/cl-opengl-under-slime-on-
macos-crashing-sbcl-bug> が関連しそうな気がします(私はあまり追っていませんが)。


CC BY-SA 3.0
2015-05-12T19:05:08.950
10092
2015-05-12T19:05:08.950
2017-05-23T12:38:55.307
-1
9703
9630
answer