News:

The new Release 25.03 is out! You can download binaries for Windows and many major Linux distros here .

Main Menu

Unable to create a screensaver

Started by zmarian, August 30, 2006, 05:42:45 PM

Previous topic - Next topic

zmarian

Hello,

I'm trying to build a minimal screensaver in Windows XP, see code at http://www.osix.net/modules/article/?id=538 . It builds and links with no errors with -Wall, but the window just doesn't open. Debugging doesn't help either -- the code is never reached as the spawned child probably doesn't call the required functions:

---------------
(gdb) break 1
Breakpoint 1 at 0x401290: file main.cpp, line 1.
(gdb) run
Starting program: something.exe
gdb: do_initial_child_stuff: process 2796
gdb: kernel event for pid=2796 tid=3592 code=CREATE_PROCESS_DEBUG_EVENT)
gdb: child_resume.SetThreadContext: thread 2796.0xe08
ContinueDebugEvent (cpid=2796, ctid=3592, DBG_CONTINUE);
gdb: kernel event for pid=2796 tid=3592 code=LOAD_DLL_DEBUG_EVENT)
gdb: child_resume.SetThreadContext: thread 2796.0xe08
ContinueDebugEvent (cpid=2796, ctid=3592, DBG_CONTINUE);
... LOAD_DLL_DEBUG_EVENT repeats ...
ContinueDebugEvent (cpid=2796, ctid=3592, DBG_CONTINUE);
gdb: kernel event for pid=2796 tid=3592 code=EXCEPTION_DEBUG_EVENT)
gdb: Target exception EXCEPTION_BREAKPOINT at 0x7c901230
gdb: child_resume.SetThreadContext: thread 2796.0xe08
ContinueDebugEvent (cpid=2796, ctid=3592, DBG_CONTINUE);
gdb: kernel event for pid=2796 tid=3592 code=EXIT_PROCESS_DEBUG_EVENT)

Program exited normally.
ContinueDebugEvent (cpid=2796, ctid=3592, DBG_CONTINUE);
gdb: child_close, inferior_ptid=3592
---------------

Debugging works for other Win32 applications in C::B.

I have no more ideas what to try, any help much appreciated.

zmarian

#1
Could someone please try to build the sample code and report success/failure.

tiwag

could someone please bring me a six-pack and icecream ... a small pizza weren't too bad too ...

zmarian

 8)

I meant someone who has the time etc -- currently this looks like a bug (in libscrnsave?) to me.

zmarian

It's working now. Either

  • using C linking (extern "C" {} around function implementations/using filename.c instead of filename.cpp)
  • renaming the application from app.exe -> app.scr
helped.

HTH others.

thomas

I am surprised it works, as the closing brace to if(p_bmp == NULL){ is missing, so you should not be able to compile it at all...
"We should forget about small efficiencies, say about 97% of the time: Premature quotation is the root of public humiliation."

zmarian

This was an obvious issue not worth mentioning.

The interesting point is whether it didn't work because C++ name mangling (of the callback names) or just because of the .exe/.scr extension problem.