lispgames / glop

Direct FFI bindings for OpenGL window and context management
MIT License
67 stars 14 forks source link

error on video-mode change #12

Closed kenanb closed 10 years ago

kenanb commented 12 years ago
(glop-test:TEST-GL-HELLO)

pressing "f" when the window is not in fullscreen results in:

debugger invoked on a TYPE-ERROR in thread
#<THREAD "initial thread" RUNNING {1002990CD3}>:
  The value 50 is not of type DOUBLE-FLOAT.

BACKTRACE:
0: (SB-KERNEL::OBJECT-NOT-DOUBLE-FLOAT-ERROR-HANDLER
    #<unavailable argument>
    #.(SB-SYS:INT-SAP #X7FFFF6E2F210)
    #<SB-ALIEN-INTERNALS:ALIEN-VALUE :SAP #X7FFFF6E2ED40 :TYPE (*
                                                                (STRUCT
                                                                 SB-VM::OS-CONTEXT-T-STRUCT))>
    (597))
1: (SB-KERNEL:INTERNAL-ERROR
    #.(SB-SYS:INT-SAP #X7FFFF6E2ED40)
    #<unavailable argument>)
2: ("foreign function: #x4180DF")

if I press "f" when in fullscreen

debugger invoked on a UNBOUND-SLOT in thread
#<THREAD "initial thread" RUNNING {1002990CD3}>:
  The slot GLOP::PREVIOUS-VIDEO-MODE is unbound in the object #<GLOP:WINDOW
                                                                {100673F473}>.
BACKTRACE:

0: ((SB-PCL::FAST-METHOD SLOT-UNBOUND (T T T))
    #<unavailable argument>
    #<unavailable argument>
    #<unavailable argument>
    #<GLOP:WINDOW {100673F473}>
    GLOP::PREVIOUS-VIDEO-MODE)
1: (SB-PCL::SLOT-UNBOUND-INTERNAL #<GLOP:WINDOW {100673F473}> 14)
2: (GLOP:TOGGLE-FULLSCREEN #<GLOP:WINDOW {100673F473}>)
3: ((SB-PCL::FAST-METHOD GLOP:ON-KEY (T T T T T))
    #<unavailable argument>
    #<unavailable argument>
    #<GLOP:WINDOW {100673F473}>
    NIL
    41
    :F
    "f")
4: (GLOP-TEST:TEST-GL-HELLO)
5: (SB-INT:SIMPLE-EVAL-IN-LEXENV (GLOP-TEST:TEST-GL-HELLO) #<NULL-LEXENV>)
6: (EVAL (GLOP-TEST:TEST-GL-HELLO))
7: (INTERACTIVE-EVAL (GLOP-TEST:TEST-GL-HELLO) :EVAL NIL)
8: (SB-IMPL::REPL-FUN NIL)
9: ((LAMBDA () :IN SB-IMPL::TOPLEVEL-REPL))
...

"Xorg -version" results: X.Org X Server 1.11.4 Release Date: 2012-01-27 X Protocol Version 11, Revision 0 Build Operating System: Linux 3.2.2-1-ARCH x86_64 Current Operating System: Linux kenanb 3.2.7-1-ARCH #1 SMP PREEMPT Tue Feb 21 09:51:29 CET 2012 x86_64 Kernel command line: vga=792 root=/dev/disk/by-uuid/bc7d7ef5-6dca-4060-9fd9-d39a35451182 ro Build Date: 29 January 2012 03:38:00PM

patzy commented 12 years ago

First one shouldn't happen on x11 since the only thing with double-float value is video-mode-rate in the osx implementation. Second one is not really a bug but more badly choosen name problem. set-fullscreen and toggle-fullscreen are two different things (actuall toggle-fullscreen uses set-fullscreen internaly). toggle-fullscreen implies a video-mode change to the mode closest to current window dimensions while set-fullscreen is just NETWM level fullscreen (i.e. some sort of maximize). I made some changes to toggle-fullscreen, it now checks if a previous video mode has been stored before trying to get back from fullscreen. But the point here is these two functions shouldn't be mixed (and I need a better name for toggle-fullscreen :) )