- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在处理 Wolf,我遇到了一个错误,有时被检测为段错误,有时被检测为 sig 中止,有时我们也收到此错误:“线程已经初始化此类!”
我使用了lldb,他显示WaitEvent函数出错了。 SDL_Event 事件;是由这个函数初始化的,有些我不明白我怎么会出错。
int main(int ac, char **av)
{
int fd;
t_var var;
t_player player;
ft_init_sdl(&var);
init_key_move(&var); // int attribution
if (ac != 2 || (fd = open(av[1], O_RDONLY)) < 0)
exit(EXIT_FAILURE);
parsing_map(fd, &var); // map parsing
var.m = fill_map_struct(var); // map parsing again
player_data_set(&player, &var); // int atribution for the player
open_wall_texture(&var); //loading texture form bmp with SDL_LoadBPM
open_img_opt_button(&var); // same
display(&var, &player); // displaying the game
return (0);
}
void ft_init_sdl(t_var *var)
{
var->sdl.window = NULL;
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS) < 0)
return ;
var->sdl.window = SDL_CreateWindow("WOLFCRAFT", SDL_WINDOWPOS_CENTERED, \
SDL_WINDOWPOS_CENTERED, SIZE_X, SIZE_Y, 0);
var->sdl.render = SDL_CreateRenderer(var->sdl.window, -1, 0);
if (!var->sdl.window || !var->sdl.render)
return ;
}
void display_3(t_var *var, t_player *pl)
{
if (var->sdl.event.type == SDL_QUIT)
ft_clean_quit(var->sdl.render, var->sdl.window);
else if (var->sdl.event.key.keysym.sym == SDLK_ESCAPE)
ft_clean_quit(var->sdl.render, var->sdl.window);
else if (var->sdl.event.type == SDL_KEYDOWN && var->menu_is_act == 1)
ft_move(var->sdl.event.key.keysym.sym, pl, var->sdl.render, var);
if (var->sdl.event.type == SDL_MOUSEMOTION && (var->menu_is_act == 1))
{
var->on = 1;
menu_button_in_game(var, pl);
}
else if (var->sdl.event.type == SDL_MOUSEBUTTONDOWN \
&& (var->menu_is_act == 1))
{
var->on = 0;
menu_button_in_game(var, pl);
}
}
void display_2(t_var *var, t_player *pl, int *token)
{
init_var_display(var, token);
ft_menu(var, pl);
}
void display(t_var *var, t_player *pl)
{
int token;
display_2(var, pl, &token);
while (SDL_WaitEvent(&var->sdl.event))
{
if (var->sdl.event.type == SDL_MOUSEMOTION \
&& (var->menu_is_act == 0 || var->menu_is_act == 2))
{
var->on = 1;
ft_menu(var, pl);
}
else if (var->sdl.event.type == SDL_MOUSEBUTTONDOWN \
&& (var->menu_is_act == 0 || var->menu_is_act == 2))
{
var->on = 0;
ft_menu(var, pl);
}
else
display_3(var, pl);
if (var->menu_is_act == 2)
{
change_key(var, pl);
choose_key(var, pl);
}
}
}
我们花了一周时间寻找解决方案,但一无所获。
谢谢。
这是 lldb 用“bt”向我显示的内容。
Process 53017 launched: '/Users/vgauther/Desktop/work/wolf3d' (x86_64)
Process 53017 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
frame #0: 0x00007fff542b22ce libobjc.A.dylib`_class_initialize + 37
libobjc.A.dylib`_class_initialize:
-> 0x7fff542b22ce <+37>: movq 0x20(%r14), %rax
0x7fff542b22d2 <+41>: movq %rax, %rcx
0x7fff542b22d5 <+44>: andq %rbx, %rcx
0x7fff542b22d8 <+47>: movq 0x8(%rcx), %rcx
Target 0: (wolf3d) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
* frame #0: 0x00007fff542b22ce libobjc.A.dylib`_class_initialize + 37
frame #1: 0x00007fff542b1e8f libobjc.A.dylib`lookUpImpOrForward + 228
frame #2: 0x00007fff542b1914 libobjc.A.dylib`_objc_msgSend_uncached + 68
frame #3: 0x00007fff2a5696b6 AppKit`-[NSTextFieldCell _allowsVibrancyForControlView:] + 394
frame #4: 0x00007fff2a557871 AppKit`-[NSControl allowsVibrancy] + 49
frame #5: 0x00007fff2a55782a AppKit`-[NSView(NSInternal) _needsVibrancy] + 83
frame #6: 0x00007fff2a55766d AppKit`-[NSView(NSInternal) _updateVibrancy] + 26
frame #7: 0x00007fff2a674a25 AppKit`-[NSView viewWillDraw] + 87
frame #8: 0x00007fff2adeb6cf AppKit`_NSViewWillDraw + 45
frame #9: 0x00007fff2a674e21 AppKit`-[NSView viewWillDraw] + 1107
frame #10: 0x00007fff2adeb6cf AppKit`_NSViewWillDraw + 45
frame #11: 0x00007fff2a674e21 AppKit`-[NSView viewWillDraw] + 1107
frame #12: 0x00007fff2adeb6cf AppKit`_NSViewWillDraw + 45
frame #13: 0x00007fff2a674e21 AppKit`-[NSView viewWillDraw] + 1107
frame #14: 0x00007fff2adeb6cf AppKit`_NSViewWillDraw + 45
frame #15: 0x00007fff2a6746b9 AppKit`-[NSView _sendViewWillDrawInRect:clipRootView:] + 1640
frame #16: 0x00007fff2a672efd AppKit`-[NSView displayIfNeeded] + 1142
frame #17: 0x00007fff2a672a52 AppKit`-[NSWindow displayIfNeeded] + 321
frame #18: 0x00007fff2ae1360d AppKit`___NSWindowGetDisplayCycleObserver_block_invoke.5902 + 308
frame #19: 0x00007fff2a67255e AppKit`__37+[NSDisplayCycle currentDisplayCycle]_block_invoke + 695
frame #20: 0x00007fff38314877 QuartzCore`CA::Transaction::run_commit_handlers(CATransactionPhase) + 49
frame #21: 0x00007fff38313339 QuartzCore`CA::Transaction::commit() + 171
frame #22: 0x00007fff2ae2aa72 AppKit`__65+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayRefresh]_block_invoke + 283
frame #23: 0x00007fff2cfb8257 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 23
frame #24: 0x00007fff2cfb817f CoreFoundation`__CFRunLoopDoObservers + 527
frame #25: 0x00007fff2cf9a6f8 CoreFoundation`__CFRunLoopRun + 1240
frame #26: 0x00007fff2cf99f93 CoreFoundation`CFRunLoopRunSpecific + 483
frame #27: 0x00007fff2c284d96 HIToolbox`RunCurrentEventLoopInMode + 286
frame #28: 0x00007fff2c284a0f HIToolbox`ReceiveNextEventCommon + 366
frame #29: 0x00007fff2c284884 HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 64
frame #30: 0x00007fff2a533a3b AppKit`_DPSNextEvent + 2085
frame #31: 0x00007fff2acc9e34 AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3044
frame #32: 0x000000010017843a libSDL2-2.0.0.dylib`Cocoa_PumpEvents(_this=<unavailable>) at SDL_cocoaevents.m:438 [opt]
frame #33: 0x00000001000d5ecd libSDL2-2.0.0.dylib`SDL_WaitEventTimeout_REAL [inlined] SDL_PumpEvents_REAL at SDL_events.c:645 [opt]
frame #34: 0x00000001000d5eba libSDL2-2.0.0.dylib`SDL_WaitEventTimeout_REAL(event=0x00007ffeefbff1c8, timeout=-1) at SDL_events.c:680 [opt]
frame #35: 0x00000001000030e1 wolf3d`display + 49
frame #36: 0x00000001000012b9 wolf3d`main + 265
frame #37: 0x00007fff54ed8015 libdyld.dylib`start + 1
/Users/vgauther/Desktop/check_compil/SDL2-2.0.9/src/video/cocoa/SDL_cocoamodes.m:118:11: warning: 'CGDisplayModeCopyPixelEncoding' is deprecated: first deprecated in macOS 10.11 [-Wdeprecated-declarations]
fmt = CGDisplayModeCopyPixelEncoding(vidmode);
^
/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDirectDisplay.h:176:34: note: 'CGDisplayModeCopyPixelEncoding' has been explicitly marked deprecated here
CG_EXTERN CFStringRef __nullable CGDisplayModeCopyPixelEncoding(
^
/Users/vgauther/Desktop/check_compil/SDL2-2.0.9/src/video/cocoa/SDL_cocoamodes.m:172:64: warning: 'CGDisplayIOServicePort' is deprecated: first deprecated in macOS 10.9 [-Wdeprecated-declarations]
CFDictionaryRef deviceInfo = IODisplayCreateInfoDictionary(CGDisplayIOServicePort(displayID), kIODisplayOnlyPreferredName);
^
/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDisplayConfiguration.h:372:24: note: 'CGDisplayIOServicePort' has been explicitly marked deprecated here
CG_EXTERN io_service_t CGDisplayIOServicePort(CGDirectDisplayID display)
^
2 warnings generated.
CC build/SDL_cocoamouse.lo
CC build/SDL_cocoamousetap.lo
CC build/SDL_cocoaopengl.lo
/Users/vgauther/Desktop/check_compil/SDL2-2.0.9/src/video/cocoa/SDL_cocoaopengl.m:219:21: warning: 'NSOpenGLPFAStereo' is deprecated: first deprecated in macOS 10.12 [-Wdeprecated-declarations]
attr[i++] = NSOpenGLPFAStereo;
^
/System/Library/Frameworks/AppKit.framework/Headers/NSOpenGL.h:78:2: note: 'NSOpenGLPFAStereo' has been explicitly marked deprecated here
NSOpenGLPFAStereo NS_ENUM_DEPRECATED_MAC(10_0, 10_12) = 6,
^
1 warning generated.
CC build/SDL_cocoaopengles.lo
CC build/SDL_cocoashape.lo
CC build/SDL_cocoavideo.lo
CC build/SDL_cocoavulkan.lo
CC build/SDL_cocoawindow.lo
/Users/vgauther/Desktop/check_compil/SDL2-2.0.9/src/video/cocoa/SDL_cocoawindow.m:342:11: warning: 'setAcceptsTouchEvents:' is deprecated: first deprecated in macOS 10.12.2 - Use allowedTouchTypes instead [-Wdeprecated-declarations]
[view setAcceptsTouchEvents:YES];
^
/System/Library/Frameworks/AppKit.framework/Headers/NSView.h:274:16: note: property 'acceptsTouchEvents' is declared deprecated here
@property BOOL acceptsTouchEvents NS_DEPRECATED_MAC(10_6, 10_12_2, "Use allowedTouchTypes instead");
^
/System/Library/Frameworks/AppKit.framework/Headers/NSView.h:274:16: note: 'setAcceptsTouchEvents:' has been explicitly marked deprecated here
1 warning generated.
最佳答案
在main
中,您没有检查ft_sdl_init
的结果是否正确,因此,即使使用无效的窗口/渲染器,您的程序也可能运行。
这个条件绝对没有任何作用:
if (!var->sdl.window || !var->sdl.render)
return ;
如果为真,则离开该函数。如果为 false,它也会离开该函数。没有区别。
最重要的是,如果窗口/渲染器创建失败,SDL 将返回 NULL。来自 SDL wiki on SDL_CreateWindow :
Returns the window that was created or NULL on failure; call SDL_GetError() for more information.
关于c - 为什么函数 SDL_WaitEvent (SDL2) 在我的代码中出现错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59079441/
我尝试理解[c代码 -> 汇编]代码 void node::Check( data & _data1, vector& _data2) { -> push ebp -> mov ebp,esp ->
我需要在当前表单(代码)的上下文中运行文本文件中的代码。其中一项要求是让代码创建新控件并将其添加到当前窗体。 例如,在Form1.cs中: using System.Windows.Forms; ..
我有此 C++ 代码并将其转换为 C# (.net Framework 4) 代码。有没有人给我一些关于 malloc、free 和 sprintf 方法的提示? int monate = ee; d
我的网络服务器代码有问题 #include #include #include #include #include #include #include int
给定以下 html 代码,将列表中的第三个元素(即“美丽”一词)以斜体显示的 CSS 代码是什么?当然,我可以给这个元素一个 id 或一个 class,但 html 代码必须保持不变。谢谢
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我试图制作一个宏来避免重复代码和注释。 我试过这个: #define GrowOnPage(any Page, any Component) Component.Width := Page.Surfa
我正在尝试将我的旧 C++ 代码“翻译”成头条新闻所暗示的 C# 代码。问题是我是 C# 中的新手,并不是所有的东西都像 C++ 中那样。在 C++ 中这些解决方案运行良好,但在 C# 中只是不能。我
在 Windows 10 上工作,R 语言的格式化程序似乎没有在 Visual Studio Code 中完成它的工作。我试过R support for Visual Studio Code和 R-T
我正在处理一些报告(计数),我必须获取不同参数的计数。非常简单但乏味。 一个参数的示例查询: qCountsEmployee = ( "select count(*) from %s wher
最近几天我尝试从 d00m 调试网络错误。我开始用尽想法/线索,我希望其他 SO 用户拥有可能有用的宝贵经验。我希望能够提供所有相关信息,但我个人无法控制服务器环境。 整个事情始于用户注意到我们应用程
我有一个 app.js 文件,其中包含如下 dojo amd 模式代码: require(["dojo/dom", ..], function(dom){ dom.byId('someId').i
我对“-gencode”语句中的“code=sm_X”选项有点困惑。 一个例子:NVCC 编译器选项有什么作用 -gencode arch=compute_13,code=sm_13 嵌入库中? 只有
我为我的表格使用 X-editable 框架。 但是我有一些问题。 $(document).ready(function() { $('.access').editable({
我一直在通过本教程学习 flask/python http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-wo
我想将 Vim 和 EMACS 用于 CNC、G 代码和 M 代码。 Vim 或 EMACS 是否有任何语法或模式来处理这种类型的代码? 最佳答案 一些快速搜索使我找到了 this vim 和 thi
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve this
这个问题在这里已经有了答案: Enabling markdown highlighting in Vim (5 个回答) 6年前关闭。 当我在 Vim 中编辑包含 Markdown 代码的 READM
我正在 Swift3 iOS 中开发视频应用程序。基本上我必须将视频 Assets 和音频与淡入淡出效果合并为一个并将其保存到 iPhone 画廊。为此,我使用以下方法: private func d
pipeline { agent any stages { stage('Build') { steps { e
我是一名优秀的程序员,十分优秀!