Skip to content

Commit

Permalink
3.21f への更新 (プラットフォーム非依存部分)
Browse files Browse the repository at this point in the history
  • Loading branch information
nokotan committed Aug 5, 2020
1 parent ac90ce5 commit b2f9605
Show file tree
Hide file tree
Showing 93 changed files with 3,104 additions and 406 deletions.
43 changes: 42 additions & 1 deletion DxASyncLoad.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
//
// DXライブラリ 非同期読み込み処理プログラム
//
// Ver 3.21d
// Ver 3.21f
//
// -------------------------------------------------------------------------------

Expand Down Expand Up @@ -789,6 +789,41 @@ extern int ResumeASyncLoadThread( int AddMaxThreadNum )
// クリティカルセクションの取得
CRITICALSECTION_LOCK( &GASyncLoadData.CriticalSection ) ;

// メインスレッドによる処理完了待ちでスレッドを止めていて、且つメインスレッドによる処理が完了しているスレッドを一つ起こす
AInfo = GASyncLoadData.Thread ;
for( i = 0 ; i < GASyncLoadData.ThreadNum ; i ++, AInfo ++ )
{
if( AInfo->ExitFlag == TRUE ||
AInfo->SuspendFlag == FALSE ||
AInfo->JobFlag == FALSE )
continue ;

if( AInfo->MainThreadRequestSuspend == TRUE && AInfo->MainThreadRequest == FALSE )
{
// 起こす
AInfo = &GASyncLoadData.Thread[ i ] ;
if( Thread_Resume( &AInfo->ThreadInfo ) == 0 )
{
// 既に起きていたら何もせず次のループへ
continue ;
}

// メインスレッドによる処理完了待ちでスレッドを止めているフラグを倒す
if( AInfo->MainThreadRequestSuspend )
{
AInfo->MainThreadRequestSuspend = FALSE ;
GASyncLoadData.MainThreadRequestSuspendThreadNum -- ;
}

// 寝ているフラグを倒す
AInfo->SuspendFlag = FALSE ;
GASyncLoadData.ThreadResumeNum ++ ;

// 起こすのは一つだけなのでここでループを抜ける
break ;
}
}

// 起きているスレッドが一定数以上だったら起こさない
if( GASyncLoadData.ThreadResumeNum >= GASyncLoadData.ThreadMaxResumeNum + AddMaxThreadNum )
{
Expand Down Expand Up @@ -1016,6 +1051,12 @@ extern int AddASyncLoadRequestMainThreadInfo( ASYNCLOAD_MAINTHREAD_REQUESTINFO *
AInfo->SuspendStartTime = NS_GetNowCount() ;
GASyncLoadData.ThreadResumeNum -- ;

// メインスレッドへのリクエストを行うからスレッドを止めているかのフラグを立てる
AInfo->MainThreadRequestSuspend = TRUE ;

// メインスレッドへのリクエストを行うから止めているスレッドの数をインクリメント
GASyncLoadData.MainThreadRequestSuspendThreadNum ++ ;

// クリティカルセクションの解放
CriticalSection_Unlock( &GASyncLoadData.CriticalSection ) ;

Expand Down
4 changes: 3 additions & 1 deletion DxASyncLoad.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
//
// DXライブラリ 非同期読み込み処理プログラムヘッダファイル
//
// Ver 3.21d
// Ver 3.21f
//
// -------------------------------------------------------------------------------

Expand Down Expand Up @@ -66,6 +66,7 @@ struct ASYNCLOADTHREADINFO
DWORD ExitFlag ; // スレッドが終了時に立てるフラグ
int JobFlag ; // 現在仕事をしているかどうかのフラグ
int MainThreadRequest ; // メインスレッドへのリクエストを行っている最中かのフラグ
int MainThreadRequestSuspend ; // メインスレッドへのリクエストを行うためにスレッドが止まっているかのフラグ
int SuspendFlag ; // スレッドがとまっているかどうかのフラグ
int SuspendStartTime ; // スレッドがとまったときの時間
struct ASYNCLOADDATA_COMMON *Data ; // 処理中のデータ
Expand All @@ -86,6 +87,7 @@ struct ASYNCLOADDATA

ASYNCLOAD_MAINTHREAD_REQUESTINFO *MainThreadRequestInfo[ ASYNCLOADTHREAD_MAXNUM ] ; // メインスレッドへの処理依頼
volatile int MainThreadRequestInfoNum ; // メインスレッドへの処理依頼の数
volatile int MainThreadRequestSuspendThreadNum ; // メインスレッドへの処理依頼をしているから止まっているスレッドの数

ASYNCLOADDATA_COMMON *Data[ ASYNCLOADDATA_MAXNUM ] ; // 非同期読み込みデータのポインタ配列へのポインタ
int DataNum ; // 非同期読み込みデータの数
Expand Down
4 changes: 2 additions & 2 deletions DxArchive_.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
//
// DXライブラリ アーカイブ制御プログラム
//
// Ver 3.21d
// Ver 3.21f
//
// -------------------------------------------------------------------------------

Expand Down Expand Up @@ -200,7 +200,7 @@ BYTE BitStream_GetBitNum( ULONGLONG Data )
DWORD i ;
for( i = 1 ; i < 64 ; i ++ )
{
if( Data < ( 1ULL << i ) )
if( Data < ( ULL_NUM( 1 ) << i ) )
{
return ( BYTE )i ;
}
Expand Down
2 changes: 1 addition & 1 deletion DxArchive_.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
//
// DXライブラリ 通信プログラムヘッダファイル
//
// Ver 3.21d
// Ver 3.21f
//
// -------------------------------------------------------------------------------

Expand Down
2 changes: 1 addition & 1 deletion DxBaseFunc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
//
// DXライブラリ 標準関数の互換関数プログラム
//
// Ver 3.21d
// Ver 3.21f
//
// -------------------------------------------------------------------------------

Expand Down
2 changes: 1 addition & 1 deletion DxBaseFunc.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
//
// DXライブラリ 標準関数の互換関数プログラムヘッダファイル
//
// Ver 3.21d
// Ver 3.21f
//
// -------------------------------------------------------------------------------

Expand Down
15 changes: 14 additions & 1 deletion DxBaseImage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
//
// �c�w���C�u���� �a�������h���������v���O����
//
// Ver 3.21d
// Ver 3.21f
//
// ----------------------------------------------------------------------------

Expand All @@ -25,6 +25,8 @@
#ifdef WINDOWS_DESKTOP_OS
#include "Windows/DxBaseImageWin.h"
#include "Windows/DxWinAPI.h"
#include "Windows/DxGraphicsWin.h"
#include "Windows/DxGraphicsD3D11.h"
#endif // WINDOWS_DESKTOP_OS

#ifdef __ANDROID__
Expand Down Expand Up @@ -6640,6 +6642,17 @@ extern int NS_GetDesktopScreenBaseImage( int x1, int y1, int x2, int y2, BASEIMA

SETUP_WIN_API

#ifndef DX_NON_DIRECT3D11
// Direct3D11 �̏ꍇ�͕ʏ���
if( GRAWIN.Setting.UseGraphicsAPI == GRAPHICS_API_DIRECT3D11_WIN32 )
{
if( Graphics_Hardware_D3D11_GetDesktopScreenBaseImage_PF( x1, y1, x2, y2, BaseImage, DestX, DestY ) == 0 )
{
return 0 ;
}
}
#endif // DX_NON_DIRECT3D11

// �f�X�N�g�b�v�E�C���h�E�n���h�����擾
DesktopHWND = WinAPIData.Win32Func.GetDesktopWindowFunc() ;

Expand Down
2 changes: 1 addition & 1 deletion DxBaseImage.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
//
// DXライブラリ BaseImageプログラムヘッダファイル
//
// Ver 3.21d
// Ver 3.21f
//
// -------------------------------------------------------------------------------

Expand Down
Loading

0 comments on commit b2f9605

Please sign in to comment.