- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
void Canvas::drawText(const char* text, SDL_Color sdlColor, int x, int y) const noexcept
{
if (!font)
throw std::runtime_error{"TTF_Font* is null"};
SDL_Surface* const sdlSurface =
::TTF_RenderText_Solid(const_cast<TTF_Font*>(font->getTtfFont()), text, sdlColor);
if (!sdlSurface)
throw std::runtime_error{"SDL_Surface* is null"};
SDL_Texture* const sdlTexture =
::SDL_CreateTextureFromSurface(const_cast<SDL_Renderer*>(renderer->getSdlRenderer()), sdlSurface);
if (!sdlTexture)
throw std::runtime_error{"SDL_Texture* is null"};
const SDL_Rect srcrect{0, 0, sdlSurface->w, sdlSurface->h};
const SDL_Rect dstrect{x, y, sdlSurface->w, sdlSurface->h};
::SDL_FreeSurface(sdlSurface);
::SDL_RenderCopy(const_cast<SDL_Renderer*>(renderer->getSdlRenderer()), sdlTexture,
&srcrect, &dstrect);
::SDL_DestroyTexture(sdlTexture);
}
Antervis 20.06.2016 07:32 # 0
Какой-то "c++ без классов"
kurwa-nextgen 20.06.2016 11:25 # 0
wvxvw 20.06.2016 11:32 # 0
> throw std::runtime_error
Я думал что noexcept значит что функция не бросает исключений, или это только checked exception, как в Яве?
roman-kashitsyn 20.06.2016 12:02 # +2
Да, так и есть. На самом деле, в случае исключений тут будет тупо std::terminate(), вероятнее всего, без раскрутки стека. Кто-то мало того, что не читал про фичи, которые использует, но и не тестировал то, что написал.
Xom94ok 20.06.2016 13:32 # 0
мистер kashitsyn, вы были правы, синглетон мейерса - действительно топовая реализация синглетона в крестах
остальные - не очень
kegdan 21.06.2016 08:35 # +1
остальные сингтоны или остальные на этом сайте?
roman-kashitsyn 21.06.2016 11:01 # +1
Прочитал как "отсталые сингтоны". Отличная характеристика.
kegdan 22.06.2016 07:31 # 0
Antervis 21.06.2016 14:10 # 0
kurwa-nextgen 21.06.2016 17:40 # 0
bormand 21.06.2016 18:03 # 0
А период полураспада где задаётся?
Antervis 21.06.2016 22:20 # 0
bormand 21.06.2016 22:21 # 0
Antervis 21.06.2016 22:26 # 0
kurwa 21.06.2016 22:36 # 0
bormand 21.06.2016 22:39 # +2
roman-kashitsyn 22.06.2016 10:46 # 0
bormand 22.06.2016 18:37 # 0
kurwa-nextgen 22.06.2016 18:56 # 0
bormand 22.06.2016 18:58 # 0
kurwa-nextgen 22.06.2016 19:01 # 0
roman-kashitsyn 22.06.2016 19:06 # +1
Не всегда помогает :) Внезапно pthread_atfork полезен, даже если не используешь треды, как возможность повесить коллбэк на любой форк.
Конкретно в нашём случае было примерно следущее: signal_set из asio создаёт self-pipe, который сидит в бустовом синглтоне. После форка потомки (молча) наследовали этот пайп и тоже использовали (собственный) signal_set, и сигналы уходили то к ним, то к паренту.
Antervis 22.06.2016 04:56 # 0
kegdan 22.06.2016 10:11 # 0
рексар?
Antervis 22.06.2016 10:54 # 0
kurwa 22.06.2016 11:20 # 0
Antervis 22.06.2016 12:06 # 0
Там таки есть указатель на контекст
bormand 21.06.2016 22:37 # 0
kurwa 21.06.2016 22:43 # 0
inkanus-gray 21.06.2016 22:46 # 0
bormand 21.06.2016 22:47 # 0
bormand 21.06.2016 22:51 # 0
По крайней мере, сам класс не уродуется бесполезным getInstance()'ом и приватными конструкторами, которые мешают тестированию и т.п. Ну и нет проблем с ленивой инициализацией, в которую непонятно как просунуть параметры.
bormand 21.06.2016 23:05 # +1
А у синглтона смешивается ответственность и за полезную работу и за управление инстансами. Нахуй так жить?
Antervis 22.06.2016 05:05 # 0
bormand 22.06.2016 07:08 # 0
bormand 22.06.2016 07:19 # 0
Antervis 22.06.2016 09:04 # 0
kegdan 22.06.2016 10:32 # 0
Antervis 22.06.2016 09:05 # 0
kurwa 21.06.2016 22:27 # 0
Antervis 22.06.2016 05:48 # 0
вот это - "гулять так гулять". А у тебя какой-то грязный хак